Docker swarm
Теги: docker
Нативное решение [docker] для разворачивания и управления кластером контейнеров. Аналог, рекомендуемый для [fastapi] - [docker-swarm-rocks]
Create a swarm
Если используется docker-machine
, то подключиться к серваку по ssh (в примере manager1
)
docker-machine ssh manager1
Инициализировать swarm (подробнее про команду)
docker swarm init --advertise-addr <MANAGER-IP>
Посмотреть - как все прошло:
docker info
Посмотреть инфу по нодам
docker node ls
Пример деплоя на сворм
Тут важно - связка с регистри (если используется). В примере связка с реигстри создается как сервис.
docker login registry.example.com
docker service create \
--with-registry-auth \
--name my_service \
registry.example.com/acme/my_image:latest
--with-registry-auth
обеспечивает передачу об аутентификации в частном регистри в контекст сворма.
Деплой происходит с помозью docker stack depoy
(ссылка на доку)
Вот так
docker stack deploy [OPTIONS] STACK
Или так с реигстри:
docker stack deploy --with-registry-auth STACK
Swarm: Get Node Ip and Container IP from service
To get the node IP address you can use below command:
docker node inspect self --format '{{.Status.Addr}}'
To get the service IP address, Just add service-id in the end, like:
docker node inspect self --format '{{.Status.Addr}}' service-id
To get the container IP address, use:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container-id
Полезные материалы
- How to Create a Cluster of Docker Containers with Docker Swarm and DigitalOcean on Ubuntu 16.04
- Create a Docker Swarm Cluster on DigitalOcean
- [docker-swarm-restart-containeers]
- [docker-solutions] вопросы и решеиня по докеру
[terraform] - это [digital-ocean] docker swarm manager