Linux/Docker/Swarm
Create swarm
- on manager
docker swarm init --advertise-addr <MANAGER-IP> -> copy command from here to join from nodes. e.g.: docker swarm join --token SWMTKN-1-5fs8k04yvhalpcok7xa8ktryuin55w4gt1wf1aaj9vawwh52hx-1uk9i6yz3q7j7bzuqdun2xqwy 192.168.1.226:2377
- show token
docker swarm join-token manager
Stats / Info
docker node ls docker service ls docker service inspect service1 --pretty docker node ps node1 node2 node3
Manage nodes
from manager: docker node promote node1 docker node demote node1 docker node rm node1 docker node inspect node1 docker node inspect --pretty node1 docker node update --role manager node1 docker node update --availability drain node1 # pause node and move load to other nodes docker node update --availability active node1 # unpause and send back to work from node: docker swarm leave
Services
docker service create --replicas 4 --name service1 alpine ping google.com docker service ls # list services docker service ps service1 # list instances of service on nodes docker service logs service1 -f docker service scale service1=0 docker service rm service1 docker service update --image alpine service1
Enable local insecure HTTP registry
echo '''{ "insecure-registries": [ "vm-docker0:5000" ] }''' > /etc/docker/daemon.json
Stack
- docker-compose.yml
version: '3.9' services: http: image: nginxdemos/hello:latest ports: - "80:80" deploy: replicas: 4 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure resources: limits: cpus: "0.1" memory: 1G
docker stack deploy -c docker-compose.yml hello docker stack ls docker stack ps hello docker stack services hello docker stack rm hello