docker swarm背景介紹
Docker Swarm是一個Dockerized化的分布式應(yīng)用程序的本地集群冷溃,它是在Machine所提供的功能的基礎(chǔ)上優(yōu)化主機資源的利用率和容錯服務(wù)兵迅。具體來說庭惜,Docker Swarm支持用戶創(chuàng)建可運行Docker Daemon的主機資源池疚颊,然后在資源池中運行Docker容器。Docker Swarm可以管理工作負載并維護集群狀態(tài)岭妖。
除了資源優(yōu)化函喉,Docker Swarm可以保證應(yīng)用的高可用性和容錯性霎奢。Docker Swarm會不斷的檢查Docker Daemon所在主機的健康狀態(tài)帖世。當某個主機不可用時秃臣,Swarm就會將容器遷移到新的主機上梳毙。
Docker Swarm的亮點之一是它可以在應(yīng)用的生命周期內(nèi)擴展,而且還可以實現(xiàn)滾動升級和動態(tài)修改節(jié)點般婆。
初始化
docker swarm init --advertise-addr <MANAGER1-IP>
我們采用最常用的方式進行初始化到腥,在主節(jié)點上進行容器初始化MANAGER1-IP填寫的主節(jié)點的ip地址,這個地址需要保證子節(jié)點可以正常訪問的ip地址蔚袍,初始化完成之后乡范,它會提示如果需要新增worker節(jié)點加入這個集群所需要運行的命令。
添加節(jié)點
初始化之后你在其他服務(wù)器將這臺服務(wù)器進行節(jié)點添加,這里我們設(shè)置了兩個三個節(jié)點一主節(jié)點兩個子節(jié)點啤咽,添加完節(jié)點之后再主節(jié)點上查看添加的所有節(jié)點查看節(jié)點狀態(tài)晋辆。
如果你之后還需要添加節(jié)點找不到命令可以運行docker swarm join-token worker 查看添加節(jié)點命令。
添加/刪除 標簽
設(shè)置好所有的子節(jié)點之后宇整,我們需要進行設(shè)置tag標簽用于后面部署服務(wù)瓶佳,進行標識告知哪些服務(wù)部署哪些節(jié)點,這里我們使用命令docker node update --label-add ksice 192-168-138-164
添加ksice標簽進行測試鳞青,在164節(jié)點上添加之后查看164節(jié)點上的標簽就能看到ksice為true的標識霸饲,一個節(jié)點上可以設(shè)置多個標簽。
同時刪除標簽docker node update --label-rm ksice 192-168-138-164
部署服務(wù)
所有節(jié)點添加完成之后就可以開始部署服務(wù)了,你可以通過命令進行部署盼玄,這就是個例子
docker service create --replicas 1 --name visualizer docker.io/dockersamples/visualizer
- docker service create用來創(chuàng)建服務(wù)
- --name表明服務(wù)名字是visualizer
- --replicas 表示期望1個服務(wù)實例
- docker.io/dockersamples/visualizer 表示運行鏡像是docker.io/dockersamples/visualizer
還有一種命令部署的方式是通過docker-compose.yml文件來進行部署 docker stack deploy -c 配置文件.yml 自定義網(wǎng)絡(luò)
采用docker-compose部署還需要在節(jié)點上設(shè)置多個tag標簽(也可以設(shè)置具體的節(jié)點)贴彼,都是用來告知哪些服務(wù)該部署在哪臺節(jié)點上,防止所有服務(wù)跑到一臺服務(wù)器上引起服務(wù)器資源分配不均埃儿。
將文件進行運行部署之后可以通過docker service ls查看服務(wù)運行狀態(tài)和運行個數(shù)
你也可以通過docker service scale xxxx = num 用來合理的調(diào)整運行的實例數(shù)目
- docker service scale用來修改服務(wù)實例數(shù)
- xxx代表服務(wù)name或者服務(wù)id
- num代表個數(shù)
還可以通過docker service ps 服務(wù)名器仗,查看服務(wù)部署在哪些節(jié)點上和最近的運行歷史
如果你運行報錯想查看error錯誤,鏡像啟動成功的話有鏡像id可以通過docker logs 鏡像id 童番,如果沒有鏡像id則采用
docker service ps --no-trunc <service name> 將截斷的error信息展示出來
想查看運行服務(wù)日志可以采用docker service logs -f 服務(wù)名進行實時查看
同時你還可以通過docker service update --image 在線更新服務(wù)所用鏡像版本
docker service update --image 鏡像名稱:鏡像tag 服務(wù)名稱
解散集群
docker node update --availability drain <node id> 將節(jié)點停用,該節(jié)點上的容器會遷移到其他節(jié)點確保服務(wù)正常精钮,在進行docker swarm leave 主節(jié)點需要加個force強制解散。