[root@QK ~]# docker swarm --help Usage: docker swarm COMMAND Manage Swarm Commands: ca Display and rotate the root CA init Initialize a swarm join Join a swarm as a node and/or manager join-token Manage join tokens leave Leave the swarm unlock Unlock swarm unlock-key Manage the unlock key update Update the swarm Run 'docker swarm COMMAND --help' for more information on a command. [root@QK ~]#1. 初始化一个Swarm节点 docker swarm init
[root@QK ~]# docker swarm init --help
Usage: docker swarm init [OPTIONS]
Initialize a swarm
Options:
--advertise-addr string Advertised address (format: [:port])
--autolock Enable manager autolocking (requiring an unlock key to start a stopped manager)
--availability string Availability of the node ("active"|"pause"|"drain") (default "active")
--cert-expiry duration Validity period for node certificates (ns|us|ms|s|m|h) (default 2160h0m0s)
--data-path-addr string Address or interface to use for data path traffic (format: )
--data-path-port uint32 Port number to use for data path traffic (1024 - 49151). If no value is set
or is set to 0, the default port (4789) is used.
--default-addr-pool ipNetSlice default address pool in CIDR format (default [])
--default-addr-pool-mask-length uint32 default address pool subnet mask length (default 24)
--dispatcher-heartbeat duration Dispatcher heartbeat period (ns|us|ms|s|m|h) (default 5s)
--external-ca external-ca Specifications of one or more certificate signing endpoints
--force-new-cluster Force create a new cluster from current state
--listen-addr node-addr Listen address (format: [:port]) (default 0.0.0.0:2377)
--max-snapshots uint Number of additional Raft snapshots to retain
--snapshot-interval uint Number of log entries between Raft snapshots (default 10000)
--task-history-limit int Task history retention limit (default 5)
[root@QK ~]#
docker swarm init --advertise-addr 192.168.99.107 创建一个swarm节点,并为其分配IP192.168.99.107(也可以不知道IP地址由docker自己分配)
[root@QK ~]# docker swarm init
Swarm initialized: current node (k0smey2h22nl0jwbolklam0pm) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-0vibnwua6t1117bp05fle5qurw114u0m97x0lawt71ai4qbt9d-en29v0tob9q7cccsgc1ngzge8 172.25.37.211:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
[root@QK ~]#
在初始化成功一个管理节点后,可以通过控制台的输出提示,加入一个管理节点或者工作节点可以通过docker node ls 查看当前docker的所有节点
[root@QK ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION k0smey2h22nl0jwbolklam0pm * QK Ready Active Leader 20.10.12 [root@QK ~]#
其他主机(docker)想要加入这个swarm成为一个管理节点,可以先获取当前swarm管理节点的令牌,通过docker swarm join-token manager
[root@QK ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join --token SWMTKN-1-0vibnwua6t1117bp05fle5qurw114u0m97x0lawt71ai4qbt9d-dm4z7t1du8q0sv46jhtbbkvbc 172.25.37.211:2377
[root@QK ~]#
其他主机想要加入这个swarm集群并成为一个管理节点,只需要执行上(下)面这个命令就可以了
docker swarm join --token SWMTKN-1-0vibnwua6t1117bp05fle5qurw114u0m97x0lawt71ai4qbt9d-dm4z7t1du8q0sv46jhtbbkvbc 172.25.37.211:2377三、Raft协议 四、集群可用
集群至少需要3台机器,2个管理节点和一个工作节点2个管理节点可以工作,但是当其中一个宕机,另一个也无法使用如果主管理节点(Leader)宕机,会选举出新的主管理节点(需要一点时间)(其他管理节点为Reachable)推荐至少3个管理节点,并且至少存活一个工作节点管理节点个数必须是奇数,切存活过半



