The blog about containerisation, virtual machines and useful shell snippets and findings

Docker swarm. Что это такое и зачем нужен.

Docker swarm это способ управлять множеством нодов докера объединенных в одну логическую сущность. Работает это примерно так.

На выделенной ноде запускается менеджер, он будет работать прослойкой, которая проксирует запросы к докер-swarm (болоту).

docker run -d -p 4000:2375 swarm manage token://677ee479285099153c887fdeed457d36

к нему мы в дальнейшем и будем обращаться для управления остальными докерами.

Все остальные ноды, которые подключаются к менеджеру, должны:

  1. запустить экземпляр образа swarm с одним и тем же токеном
  2. быть доступными для управления через 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