- 本文不詳細介紹swarm、docker的原理、架構,主要記錄Centos7上安裝docker、swarm構建docker集羣的步驟。
- 安裝swarm有兩種方式:(1)通過docker官方獲取token-id(2)配置文件中配置節點。由於方法1需要訪問外網,所以對內網環境有侷限性。
環境
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
[root@localhost ~]# docker --version
Docker version 1.8.2-el7.centos, build a01dc02/1.8.2
[root@localhost ~]#
- 本文只通過1個docker節點組成swarm+docker集羣進行實驗。
Docker安裝&配置
請參考docker安裝&配置
swarm配置文件
echo "[docker_ip]:[docker_port]" >> /your/path/cluster
- 將
[docker_ip]
換成要加入docker集羣的節點ip,將[docker_port]
換成上面配置的端口,例如2375. 將
/your/path/cluster
換成配置文件的位置。例如/root/cluster。可以重複此步驟將多個節點添加到集羣中。或者直接按照這種格式編輯cluster文件。
安裝&啓動swarm
說明:docker官方提供了swarm的鏡像,目前的swarm安裝過程均是下載swarm鏡像並啓動。
- 下載swarm鏡像:
docker pull swarm
docker run –d –p [swarm_port]:2375 –v /your/path/cluster:/tmp/cluster --privileged=true swarm manage file:///tmp/cluster
- 啓動swarm:將上面命令中
/your/path/cluster
替換成自己的配置文件位置。例如/root/cluster - 將[swarm_port]換成swarm的ip(未被佔用即可),例如:2376
- 命令中的2375不需要替換,因爲swarm鏡像默認expose了2375端口。
驗證
- 通過swarm查看節點
docker run --rm=true --privileged=true -v /root/cluster:/tmp/cluster docker.io/swarm list file:///tmp/cluster
- 可以看到如下內容:
[root@localhost ~]# docker run --rm=true --privileged=true -v /root/cluster:/tmp/cluster docker.io/swarm list file:///tmp/cluster
192.168.1.65:2375
[root@localhost ~]#
- 通過docker查看節點.
- 將
swarm_ip
換成swarm所在的節點的ip。 - 將
swarm_port
換成swarm的端口,例如2376.
docker -H [swarm_ip]:[swarm_port] info
- 可以看到如下內容:
[root@localhost ~]# docker -H 192.168.1.65:2376 info
Containers: 1
Images: 1
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 1
localhost.localdomain: 192.168.1.65:2375
└ Status: Healthy
└ Conttainers: 1
└ Reserved CPUs: 0 / 8
└ Reserved Memory: 0 B / 32.79 GiB
└ Labels: executiondriver=native-0.2, kernelversion=3.10.0-229.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper
CPUs: 8
Total Memory: 32.79 GiB
Name: 5ae8d49987cf
[root@localhost ~]#
- 上例中docker節點只有1個,且與swarm在同一個host機中。
集羣中創建容器
創建兩個容器:執行2次docker run busybox
。
通過docker -H [swarm_ip]:[swarm_port] ps -a
可以看到swarm中創建的docker容器.
通過docker ps -a
可以看到在本機上也有兩個容器。
因爲該示例中有1個docker節點,所以2個容器都在1個docker節點上。如果有2個docker節點,可以看到2個容器分佈在不同的docker節點。