root@sm01:~# docker swarm init --help
Usage: docker swarm init [OPTIONS]
Initialize a swarm
Options:
--advertise-addr string Advertised address (format: <ip|interface>[:port])
--cert-expiry duration Validity period for node certificates (default 2160h0m0s)
--dispatcher-heartbeat duration Dispatcher heartbeat period (default 5s)
--external-ca value Specifications of one or more certificate signing endpoints
--force-new-cluster Force create a new cluster from current state.
--help Print usage
--listen-addr value Listen address (format: <ip|interface>[:port]) (default 0.0.0.0:2377)
--task-history-limit int Task history retention limit (default 5)
root@sm01:~#
root@sm01:~# docker swarm init --listen-addr eth1 --advertise-addr eth1
Swarm initialized: current node (8y26xoif1ucu2dr4lnet0z4rk) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-4lz4k3n65d76akrxn934md0e0zrgq5bsq5jf2gq54icncq37qp-009402j3gts3zm1vvqrkqp79f \
10.130.9.198:2377
To add a manager to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-4lz4k3n65d76akrxn934md0e0zrgq5bsq5jf2gq54icncq37qp-2nxm00jx3vehtromd3xdgalgg \
10.130.9.198:2377
root@sm01:~#
root@sm02:~# docker swarm join --listen-addr eth1 --advertise-addr eth1 \
--token SWMTKN-1-4lz4k3n65d76akrxn934md0e0zrgq5bsq5jf2gq54icncq37qp-2nxm00jx3vehtromd3xdgalgg \
10.130.9.198:2377
This node joined a swarm as a manager.
root@sm02:~#
sm03 は sm02 と同じなので省略
root@sm04:~# docker swarm join --listen-addr eth1 --advertise-addr eth1 \
--token SWMTKN-1-4lz4k3n65d76akrxn934md0e0zrgq5bsq5jf2gq54icncq37qp-009402j3gts3zm1vvqrkqp79f \
10.130.9.198:2377
This node joined a swarm as a worker.
root@sm04:~#
root@sm01:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
3v11smnwwulxd987mtix494so sm02 Ready Active Reachable
4mg10n4rirjylaaekiekybcnl sm03 Ready Active Reachable
4p396pp5d3qe3e8sns6er3bgx sm04 Ready Active
8y26xoif1ucu2dr4lnet0z4rk * sm01 Ready Active Leader
root@sm01:~#
root@sm01:~# docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-4lz4k3n65d76akrxn934md0e0zrgq5bsq5jf2gq54icncq37qp-009402j3gts3zm1vvqrkqp79f \
10.130.9.198:2377
root@sm01:~# docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-4lz4k3n65d76akrxn934md0e0zrgq5bsq5jf2gq54icncq37qp-2nxm00jx3vehtromd3xdgalgg \
10.130.9.198:2377
root@sm01:~#
漏洩しちゃったり、しばらく使わないという場合は rotate させます。
root@sm01:~# docker swarm join-token --rotate worker
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-4lz4k3n65d76akrxn934md0e0zrgq5bsq5jf2gq54icncq37qp-4igl65pp3mbgt29t8wy1visjk \
10.130.9.198:2377
root@sm01:~# docker swarm join-token --rotate manager
To add a manager to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-4lz4k3n65d76akrxn934md0e0zrgq5bsq5jf2gq54icncq37qp-bbb6n7i318f6npco5wd5mg43y \
10.130.9.198:2377
root@sm01:~#
root@sm01:~/wordpress# vi docker-compose.yml
root@sm01:~/wordpress# docker-compose up -d
WARNING: The Docker Engine you're using is running in swarm mode.
Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.
To deploy your application across the swarm, use the bundle feature of the Docker experimental build.
More info:
The Docker follows a time-based release process, currently aiming at releasing a new major version every two months. We issue a code freeze several weeks before the scheduled release date during which nothing but bugfixes can be added to the release.
Even though the process is time-based, the Docker Engine sets short-term goals for the upcoming release(s). However, time will always win over features: the code freeze will happen regardless of our goals being met.
Service について
root@sm01:~/wordpress# docker service create --name nginx --replicas 5 nginx
e28bh091n39zxvav6f3agmf1v
これだけで nginx container を 5 つキープしてくれる
が、docker run に比べて圧倒的に起動時のオプションが少ない
root@sm01:~/wordpress# docker service create --help
Usage: docker service create [OPTIONS] IMAGE [COMMAND] [ARG...]
Create a new service
Options:
--constraint value Placement constraints (default [])
--container-label value Container labels (default [])
--endpoint-mode string Endpoint mode (vip or dnsrr)
-e, --env value Set environment variables (default [])
--help Print usage
-l, --label value Service labels (default [])
--limit-cpu value Limit CPUs (default 0.000)
--limit-memory value Limit Memory (default 0 B)
--log-driver string Logging driver for service
--log-opt value Logging driver options (default [])
--mode string Service mode (replicated or global) (default "replicated")
--mount value Attach a mount to the service
--name string Service name
--network value Network attachments (default [])
-p, --publish value Publish a port as a node port (default [])
--replicas value Number of tasks (default none)
--reserve-cpu value Reserve CPUs (default 0.000)
--reserve-memory value Reserve Memory (default 0 B)
--restart-condition string Restart when condition is met (none, on-failure, or any)
--restart-delay value Delay between restart attempts (default none)
--restart-max-attempts value Maximum number of restarts before giving up (default none)
--restart-window value Window used to evaluate the restart policy (default none)
--stop-grace-period value Time to wait before force killing a container (default none)
--update-delay duration Delay between updates
--update-failure-action string Action on update failure (pause|continue) (default "pause")
--update-parallelism uint Maximum number of tasks updated simultaneously (0 to update all at once) (default 1)
-u, --user string Username or UID
--with-registry-auth Send registry authentication details to swarm agents
-w, --workdir string Working directory inside the container
root@sm01:~/wordpress# docker service tasks nginx
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
4hxwvcyyk4wficzyqi3bmrxt3 nginx.1 nginx sm01 Running Running 5 minutes ago
dgv49gkq3dlwm620vpz03f0c5 nginx.2 nginx sm03 Running Running 5 minutes ago
dd4tvbrsqc7zqelzqak4tar9c nginx.3 nginx sm02 Ready Preparing 2 seconds ago
boscs727ouw0859osiiko5j3f \_ nginx.3 nginx sm02 Shutdown Failed 2 seconds ago "task: non-zero exit (137)"
80e990f922jaohfalmtg20pjc nginx.4 nginx sm04 Running Running 5 minutes ago
6tjgw5kqdoglzbk2ckgffr4dk nginx.5 nginx sm04 Running Running 5 minutes ago
root@sm01:~/wordpress# docker service tasks nginx
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
4hxwvcyyk4wficzyqi3bmrxt3 nginx.1 nginx sm01 Running Running 5 minutes ago
dgv49gkq3dlwm620vpz03f0c5 nginx.2 nginx sm03 Running Running 5 minutes ago
dd4tvbrsqc7zqelzqak4tar9c nginx.3 nginx sm02 Running Running 7 seconds ago
boscs727ouw0859osiiko5j3f \_ nginx.3 nginx sm02 Shutdown Failed 13 seconds ago "task: non-zero exit (137)"
80e990f922jaohfalmtg20pjc nginx.4 nginx sm04 Running Running 5 minutes ago
6tjgw5kqdoglzbk2ckgffr4dk nginx.5 nginx sm04 Running Running 5 minutes ago
Leader node (sm01) を停止させてみる (SIGKILL)
root@sm02:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
3v11smnwwulxd987mtix494so * sm02 Ready Active Reachable
4mg10n4rirjylaaekiekybcnl sm03 Ready Active Reachable
4p396pp5d3qe3e8sns6er3bgx sm04 Ready Active
8y26xoif1ucu2dr4lnet0z4rk sm01 Ready Active Leader
root@sm02:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
3v11smnwwulxd987mtix494so * sm02 Unknown Active Leader
4mg10n4rirjylaaekiekybcnl sm03 Unknown Active Reachable
4p396pp5d3qe3e8sns6er3bgx sm04 Unknown Active
8y26xoif1ucu2dr4lnet0z4rk sm01 Unknown Active Unreachable
root@sm02:~# docker service tasks nginx
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
4hxwvcyyk4wficzyqi3bmrxt3 nginx.1 nginx sm01 Running Running 15 minutes ago
dgv49gkq3dlwm620vpz03f0c5 nginx.2 nginx sm03 Running Running 15 minutes ago
dd4tvbrsqc7zqelzqak4tar9c nginx.3 nginx sm02 Running Running 9 minutes ago
boscs727ouw0859osiiko5j3f \_ nginx.3 nginx sm02 Shutdown Failed 10 minutes ago "task: non-zero exit (137)"
80e990f922jaohfalmtg20pjc nginx.4 nginx sm04 Running Running 15 minutes ago
6tjgw5kqdoglzbk2ckgffr4dk nginx.5 nginx sm04 Running Running 15 minutes ago
root@sm02:~# docker service tasks nginx
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
22qjm1w4a0wkj2bkkbj7arji0 nginx.1 nginx sm03 Running Running 57 seconds ago
4hxwvcyyk4wficzyqi3bmrxt3 \_ nginx.1 nginx sm01 Shutdown Complete 21 seconds ago
dgv49gkq3dlwm620vpz03f0c5 nginx.2 nginx sm03 Running Running 16 minutes ago
dd4tvbrsqc7zqelzqak4tar9c nginx.3 nginx sm02 Running Running 11 minutes ago
boscs727ouw0859osiiko5j3f \_ nginx.3 nginx sm02 Shutdown Failed 11 minutes ago "task: non-zero exit (137)"
80e990f922jaohfalmtg20pjc nginx.4 nginx sm04 Running Running 16 minutes ago
6tjgw5kqdoglzbk2ckgffr4dk nginx.5 nginx sm04 Running Running 16 minutes ago
sm01 を再起動させたら何事もなかったかのようにクラスタに参加してきました
root@sm02:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
3v11smnwwulxd987mtix494so * sm02 Ready Active Leader
4mg10n4rirjylaaekiekybcnl sm03 Ready Active Reachable
4p396pp5d3qe3e8sns6er3bgx sm04 Ready Active
8y26xoif1ucu2dr4lnet0z4rk sm01 Ready Active Reachable