docker
自誕生以來,其容器特性以及映象特性給devops
愛好者帶來了諸多方便。然而在很長的一段時間內,docker
只能在單host
上執行,其跨host
的部署、執行與管理能力頗受外界詬病。跨host能力的薄弱,直接導致docker
容器與host
的緊耦合,這種情況下,docker
容器的靈活性很難令人滿意,容器的遷移、分組等都成為很難實現的功能點。
swarm
是docker公司在2023年12月初新發布的容器管理工具。和swarm一起發布的docker管理工具還有machine以及compose。
swarm
是一套較為簡單的工具,用以管理docker集群,使得docker集群暴露給使用者時相當於乙個虛擬的整體。swarm使用標準的docker api介面作為其前端訪問入口,換言之,各種形式的docker client(dockerclient in go, docker_py, docker等)均可以直接與swarm通訊。swarm幾乎全部用go語言來完成開發,並且還處於乙個alpha版本,目前在github上發布的版本僅有v0.1.0-rc1。然而swarm的發展十分快速,功能和特性的變更迭代還非常頻繁。因此,可以說swarm還不推薦被用於生產環境中,但可以肯定的是swarm是一項很有前途的技術。
swarm
是通過監聽2375
埠進行通訊的,所以在使用swarm
進行集群管理之前,需要設定一下2375
埠的監聽。這裡有兩種方法,一種是通過修改docker配置檔案方式,另一種是通過乙個輕量級的**容器進行監聽。
由於我是使用centos7
安裝的docker
,所以下面的配置是適用於centos7
的。
開啟配置檔案/etc/sysconfig/docker
:
vim /etc/sysconfig/docker
修改配置項options
中的值,若options
中沒有值,則直接新增-h tcp: -h unix:///var/run/docker.sock
,否則在已有引數後面新增,比如下面這樣:
options='--selinux-enabled --log-driver=journald
--signature-verification=false
-htcp: -h unix:/
//var
/run/docker.sock'
修改完之後儲存檔案,然後重啟docker服務
systemctl restart docker
注意:需要對所有要加入集群的docker節點都進行上面的修改配置檔案的操作。
預設情況下,docker
引擎只偵聽套接字。 我們可以重新配置引擎以使用tls
,或者您可以使用**容器。 這是乙個非常輕量級的容器,它只是將請求從tcp
**到docker
監聽的unix套接字
。
docker pull docker.io/shipyard/docker-proxy
然後啟動容器:
docker run -ti -d -p 2375:2375 \
--restart=always \
--hostname=$hostname \
--name shipyard-proxy \
-v /var/run/docker.sock:/var/run/docker.sock \
-e port=2375 \
docker.io/shipyard/docker-proxy:latest
注意:該**服務容器也需要在每個要加入集群的docker節點上啟動,同時要保證該容器的正常執行,如果容器停止則無法發現節點。
docker pull docker.io/swarm
在任意的docker
節點建立乙個全世界唯一的token(集群id)
,記住這個token
後面需要用到。(這裡用的發現服務是dockhub內建的,當然還有其他的比如etcd、consul等。)
--rm swarm create
rw4d3ac32aa6a86b341e3asd69e2cd0b
執行上面的命令之後,會生成乙個token。
docker run -ti
-d-p
2376:2375
\--restart=always \
--name shipyard-swarm
-manager
\ docker.io/swarm:latest \
manage --host tcp: \
token://rw4d3ac32aa6a86b341e3asd69e2cd0b
swarn manager
只需要啟動乙個,所以可選取乙個docker
節點進行啟動,我這裡是在我這塊的主機10.0.11.150
上啟動的。
啟動swarm agent
,將當前docker
節點加入到集群中,swarm agent
需要在每乙個要加入到集群中的docker
節點上啟動。
docker run -ti -d \
--restart=always \
--name shipyard-swarm-agent \
docker.io/swarm:latest \
join --addr [docker node ip]:2375 \
token://rw4d3ac32aa6a86b341e3asd69e2cd0b
注:上面這條命令中的[docker node ip]
項需要更換為要加入集群的docker節點的真實ip。
可以使用命令檢視docker
節點情況(任意docker
節點上都可以執行):
docker run --rm swarm list token://rw4d3ac32aa6a86b341e3asd69e2cd0b
可以使用命令檢視docker
集群的詳情(可在任意docker
節點上執行,ip位址是裝了swarm master
主機的ip):
docker -h 10.0.11.150:2376
info
Docker系列之swarm集群搭建
學習docker很久了,今天分享一下docker的swarm集群的搭建過程很簡單 首先第一步是 每台機器上面都要安裝docker 本人使用的是centos7作業系統,使用3太虛擬機器,3太虛擬機器必須網路互通 廢話 docker早在1.12版本就已經支援原生的swarm集群搭建了不用再用第三方etc...
Docker系列之swarm集群搭建
學習docker很久了,今天分享一下docker的swarm集群的搭建過程很簡單 首先第一步是 每台機器上面都要安裝docker 本人使用的是centos7作業系統,使用3太虛擬機器,3太虛擬機器必須網路互通 廢話 docker早在1.12版本就已經支援原生的swarm集群搭建了不用再用第三方etc...
docker入門實戰(四) swarm 集群
swarm集群就是執行docker的一組機器相連成乙個集群。這些機器可以是物理機也可以是虛擬機器。在加入集群後,這些機器被稱作是是集群中的乙個節點。swarm managers 可以使用幾種策略來執行容器 1 emptiest node 安排容器執行在利用率最低的機器上 2 global 這種情況下...