Имеется несколько хостов:
192.168.1.180 swarm_master1_180
192.168.1.181 swarm_master2_181
192.168.1.182 swarm_master3_182
192.168.1.183 swarm_node1_183
192.168.1.184 swarm_node2_184
192.168.1.185 swarm_node3_185
Рассмотрим установку простого контейнера nginx который будет висеть на 80 порту.(кластер swarm уже собран, docker-flow-proxy работает)
если мы хотим чтобы данный сервис работал в рамках отдельной docker сети, нам нужно будет создать её.
создаём нашу новую сеть:
docker network create --driver=overlay nginx
[codesyntax lang="php" blockstate="collapsed"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
[root@swarm_master1_180 ~]# cat nginx/nginx.yml version: '3.3' services: nginx: image: nginx:1.13 networks: - proxy - nginx deploy: replicas: 1 labels: - com.df.notify=true - com.df.serviceDomain=nginx.test.ru - com.df.port=80 placement: constraints: - node.role == manager networks: nginx: driver: overlay attachable: true proxy: external: true |
[/codesyntax]
запускаем:
[root@swarm_master1_180 ~]# docker stack deploy -c nginx/nginx.yml nginx
=================================================================
Рассмотрим установку nexus.
Данный сервис будет использоваться для хранения скачиваемых образов(также его можно использовать как прокси сервер и репозиторий)
Nexus будет работать только на одном сервере(так как это не критичный сервис)
на сервере swarm_master1_180 создаём директорию для базы данных:
mkdir /var/nexus-data
chmod 777 /var/nexus-data/
отметим, что в данной директории должно быть не меньше 5 гб свободного дискового пространства.
будем использовать сеть: proxy
[codesyntax lang="php" blockstate="collapsed"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
[root@swarm_master1_180 ~]# cat nexus/nexus.yml version: '3.3' services: nexus3: image: sonatype/nexus3 volumes: - /var/nexus-data:/nexus-data networks: - proxy deploy: replicas: 1 labels: - com.df.notify=true - com.df.<strong>serviceDomain.1=nexus.test.ru</strong> - com.df.<strong>port.1</strong>=8081 - com.df.<strong>serviceDomain.2=nexus2.test.ru</strong> - com.df.<strong>port.2</strong>=8082 - com.df.<strong>serviceDomain.3=nexus3.test.ru</strong> - com.df.<strong>port.3</strong>=8083 placement: constraints: [node.hostname == swarm_master1_180] networks: proxy: external: true |
[/codesyntax]
запускаем:
[root@swarm_master1_180 ~]# docker stack deploy -c nexus/nexus.yml nexus
и подождав пару минут(nexus долго запускается)
заходим на http://nexus.test.ru/
nexus.test.ru создаём пользователя, репозиторий и т.д.
Общий репозиторий docker:
создаём docker(hosted):
repositories -> create repository -> docker(hosted)
Name: docker-private
type hosted
http: 8083
можно ещё добавить для https
Нажимаем save
создаём docker(proxy):
repositories -> create repository -> docker(proxy)
Name: docker-hub
type proxy
remote storage: https://registry-1.docker.io
docker index: выбирем Use Docker Hub
Нажимаем save
создаём docker(group):
repositories -> create repository -> docker(group)
Name: docker-group
http:8082
и добавляем в него docker-private docker-hub
Нажимаем save
Если был создан докер прокси, то на целевых тачках добавляем:
cat /etc/docker/daemon.json
{
"insecure-registries": ["nexus.test.ru","nexus2.test.ru","nexus3.test.ru"],
"experimental": true
}
docker login nexus2.test.ru
[root@swarm_master3_182 ~]# docker login nexus2.test.ru
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
в качестве логина и пароля указываем аутентификационные данные заданные при входе в nexus.
всё, на этом готово можно выкачивать образа используя следующую команду:
docker pull nexus2.test.ru/nginx
[root@swarm_master3_182 ~]# docker pull nexus2.test.ru/nginx
проверяем:
1 2 3 4 |
[root@swarm_master3_182 ~]# <strong>docker images</strong> REPOSITORY TAG IMAGE ID CREATED SIZE influxdb <none> c0c0eb7f0bc1 2 days ago 264MB <strong>nexus2.test.ru/nginx</strong> latest ab56bba91343 2 days ago 126MB |
проверяем в самом nexus: