Docker swarm. Что это такое и зачем нужен.
Docker swarm это способ управлять множеством нодов докера объединенных в одну логическую сущность. Работает это примерно так.
На выделенной ноде запускается менеджер, он будет работать прослойкой, которая проксирует запросы к докер-swarm (болоту).
docker run -d -p 4000:2375 swarm manage token://677ee479285099153c887fdeed457d36
к нему мы в дальнейшем и будем обращаться для управления остальными докерами.
Все остальные ноды, которые подключаются к менеджеру, должны:
- запустить экземпляр образа swarm с одним и тем же токеном
- быть доступными для управления через tcp порт. По-умолчанию docker слушает только на unix сокете.
docker run -d swarm join --addr=192.168.150.112:2375 token://677ee479285099153c887fdeed457d36
При запуске экземпляра swarm нода становится видна с менеджера.
Таким образом управлять swarm мы можем со своего хоста, примерно таким образом
#unset DOCKER_TLS_VERIFY
#DOCKER_HOST=tcp://172.16.236.138:4000
#docker info
Containers: 15
Images: 18
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 2
coreos: 192.168.150.121:2375
└ Status: Healthy
└ Containers: 7
└ Reserved CPUs: 0 / 1
└ Reserved Memory: 0 B / 2.047 GiB
└ Labels: executiondriver=native-0.2, kernelversion=4.2.2-coreos-r1, operatingsystem=CoreOS 835.9.0, storagedriver=overlay
docker: 192.168.150.112:2375
└ Status: Healthy
└ Containers: 8
└ Reserved CPUs: 0 / 1
└ Reserved Memory: 0 B / 1.009 GiB
└ Labels: executiondriver=native-0.2, kernelversion=3.13.0-24-generic, operatingsystem=Ubuntu 14.04.3 LTS, storagedriver=aufs
CPUs: 2
Total Memory: 3.056 GiB
Name: 373f59006a67