Swarm 在 Docker 1.12 版本之前屬于一個獨立的項目,在 Docker 1.12 版本發(fā)布之后,該項目合并到了 Docker 中,成為 Docker 的一個子命令。目前,Swarm 是 Docker 社區(qū)提供的唯一一個原生支持 Docker 集群管理的工具。它可以把多個 Docker 主機組成的系統(tǒng)轉(zhuǎn)換為單一的虛擬 Docker 主機,使得容器可以組成跨主機的子網(wǎng)網(wǎng)絡(luò)。
Docker 使用 Swarm 可以很方便的在多個主機上創(chuàng)建容器集群,并且容器之間可以跨主機網(wǎng)絡(luò)通信。
Swarm 的集群分為 Manager 節(jié)點和 Worker 節(jié)點。
Swarm 中使用 Service 來創(chuàng)建/管理使用相同鏡像的多個容器,多個容器同時對外提供服務(wù),多個容器之間負(fù)載均衡。每個 Service 有一個浮動IP(VIP),各個容器還有自己的物理IP。創(chuàng)建基于 Swarm 的 Overlay 網(wǎng)絡(luò),將 Service 掛載到此網(wǎng)絡(luò)上。然后 Service 中的各個容器便可以通過 Service 名稱和 IP 地址實現(xiàn)網(wǎng)絡(luò)互通。
下面使用了三個機器來組建一個Swarm集群
bd0 192.168.0.109
bd1 192.168.0.192
bd2 192.168.0.193
Docker 開啟遠(yuǎn)程管理
默認(rèn)情況下,Docker守護(hù)進(jìn)程會生成一個 /var/run/docker.sock 文件來進(jìn)行本地進(jìn)程通信,而不會監(jiān)聽任何端口,所以默認(rèn)情況下 Docker 只能在本地使用命令行操作。 如果要在其它機器上遠(yuǎn)程操作 Docker 主機,就需要讓 Docker 監(jiān)聽一個端口,這樣才能實現(xiàn)遠(yuǎn)程通信。
在我的 CentOS 7X 上,首先修改 Docker 配置文件 /etc/sysconfig/docker 中的 OPTIONS 參數(shù),添加
-H unix:///var/run/docker.sock -H 0.0.0.0:5555
修改后參數(shù)類似
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false -H unix:///var/run/docker.sock -H 0.0.0.0:5555'
然后重新啟動 Docker 服務(wù)
$ sudo systemctl restart docker.service
測試一下
sudo docker -H
創(chuàng)建 Swarm 集群
獲取 Swarm 鏡像
分別在三個節(jié)點上下載swarm鏡像
$ sudo docker pull swarm
初始化Swarm集群
首先在 bd0 節(jié)點上初始化 Swarm 集群
$ sudo docker swarm init Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on different interfaces (192.168.0.109 on eth0 and 192.168.122.1 on virbr0) - specify one with --advertise-addr
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。