docker 1.12 在 2016 年 7 月 28 日正式 ga,除了大量的在使用上的改進和 bug 修複外,最引人矚目的是docker原生支援了 swarm 模式,而不是将swarm作為一個容器對叢集進行管理。
而docker1.12的操作指令并不向下相容,于是過去所有建立swarm叢集的文檔都不能參考了,本文描述了基于docker1.12版本建立swarm叢集的過程。
1、主機環境
在阿裡雲上申請三個vpc網絡的ecs,安裝centos7.0的鏡像,ip和角色配置設定如下:
192.168.0.18 manager
192.168.0.19 worker
192.168.0.20 worker
2、docker安裝
參考官方文檔:https://docs.docker.com/engine/installation/linux/centos/
1)首先确認核心版本,核心版本至少要3.10以上
uname -r
2)增加docker的yum源配置
tee /etc/yum.repos.d/docker.repo <<-'eof'
[dockerrepo]
name=docker repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
eof
3)yum安裝docker
yum install libdevmapper* -y
yum install docker-engine -y
4)啟動docker
service docker start
ps auxwww | grep -i docker
5)配置阿裡雲的docker源鏡像加速
登入阿裡雲賬号,開通阿裡雲的容器服務
通過以下位址确認阿裡雲賬号專屬的加速器地 https://cr.console.aliyun.com/#/docker/booster
vi /usr/lib/systemd/system/docker.service
原内容:execstart=/usr/bin/dockerd
修改成 execstart=/usr/bin/dockerd --registry-mirror=https://被替換内容.mirror.aliyuncs.com
systemctl daemon-reload
service docker restart
3、docker原生swarm的概念普及
1)manager與worker
一個叢集最多有3-7個manager,其他都是worker
manager節點:負責對任務進行排程和其它管理任務,多個管理節點通過 raft 協定組成叢集;
worker節點:負責運作具體的任務,管理節點可以同時作為工作節點
2)server包括兩種類型:
複制服務(replicated services):類似 k8s 中複制集的概念,保持一定數量的相同任務在叢集中運作;
全局服務(global services):類似 k8s 中 daemon 的概念,每個工作節點上運作一個。
一個服務由多個任務組成,一個任務即一個運作的容器。
4、swarm叢集的建立
參考文檔 https://docs.docker.com/engine/reference/commandline/swarm_init/
192.168.0.18 manager
初始化swarm叢集
docker swarm init --advertise-addr 192.168.0.18
swarm initialized: current node (4bl82cxazydg7y86kzbmfief3) is now a manager.
to add a worker to this swarm, run the following command:
docker swarm join \
--token swmtkn-1-1mtdmuzd5n5il70r7mm1sg66rnr6ov38dumfdon408sq4nmqgz-0gej194ntpt73v3zhqiy0sq31 \
192.168.0.18:2377
to add a manager to this swarm, run the following command:
--token swmtkn-1-1mtdmuzd5n5il70r7mm1sg66rnr6ov38dumfdon408sq4nmqgz-3pnkjncrpfh4d94aghk2a9h2w \
manager上檢視目前叢集節點
docker node ls
id hostname status availability manager status
4bl82cxazydg7y86kzbmfief3 * iz23ogad28gz ready active leader
192.168.0.19/192.168.0.20
docker swarm join --token swmtkn-1-1mtdmuzd5n5il70r7mm1sg66rnr6ov38dumfdon408sq4nmqgz-0gej194ntpt73v3zhqiy0sq31 192.168.0.18:2377
manager上檢視叢集狀态
avd0uhd0mjt939sz8pje1mdyq iz232tm0nizz ready active
dpqqdnkcagubmank7qw9i7jhz iz23h6u54mvz ready active
在192.168.0.20上,将節點手動脫離
docker swarm leave
node left the swarm.
回到manager上檢視叢集狀态
dpqqdnkcagubmank7qw9i7jhz iz23h6u54mvz down active
圍繞叢集和服務進行管理還涉及到如下的指令,可以直接參考官方文檔
https://docs.docker.com/engine/reference/
swarm init
swarm join
service create
service inspect
service ls
service rm
service scale
service ps
service update