centos7 建立三節點的 swarm 集羣 swarm-manager 是 manager node : 192.168.1.150 swarm-worker1 和 swarm-worker2 是 worker node: 192.168.1.151,192.168.1.152
Docker v1.12+ 安裝:https://www.cnblogs.com/hanxiaohui/p/8514941.html 注意:3個節點都須要安裝,而且修改docker默認的家目錄
原文地址: http://www.cnblogs.com/CloudMan6/p/7862254.html
docker swarm init --advertise-addr 192.168.1.150 命令說明: --advertise-addr 指定與其餘 node 通訊的地址。 docker swarm init 輸出告訴咱們: ① swarm 建立成功,swarm-manager 成爲 manager node。 ② 添加 worker node 須要執行的命令。 ③ 添加 manager node 須要執行的命令
若是當時沒有記錄下 docker swarm init 提示的添加 worker 的完整命令,能夠經過如下命令查看 docker swarm join-token worker 上條命令執行的結果 在node上執行。
docker node ls
######建立網絡
docker network create -d overlay --attachable my-network #建立overlay網絡
定義lable docker node update --label-add env=test swarm-worker1 命令說明: swarm-worker1是node的名字
docker node inspect swarm-worker1 --pretty
docker service create -d -p 28002:28002 --mount type=bind,src=/mnt/qmsUpload,dst=/usr/local/src --replicas 2 --name first-mysql --network my-network --constraint 'node.labels.env=test' mysqld:5.6 命令說明: -d 默認是true(這個參數可要可不要) -p 端口映射 至關於 --publish --mount 掛載磁盤 --replicas 副本數 --name service名 --network 指定網絡 --constraint 指定在哪一個work啓動副本,須要給節點定義lable mysqld:5.6 指定鏡像
docker service inspect first-mysql --pretty
docker service scale first-mysql=5 或 docker service update --replicas 6 命令說明: first-mysql是service名,伸縮只要修改數量就行。
默認配置下 manager node 也是 worker node,因此 swarm-manager 上也運行了副本。若是不但願在 manager 上運行 service,能夠執行以下命令 docker node update --availability drain swarm-manager 命令說明: swarm-manager是node名,node名 是跟系統的hostname同樣的 docker node ls #查看AVAILABILITY列 swarm-manager那臺node的 值變爲 drain
docker service rm web_server #docker service rm 刪除 web_server,service 的全部副本(容器)都會被刪除
端口映射 1.建立service是有用-p 映射 2.後期添加映射 docker service update --publish-add 8080:80 web_server 3. curl 集羣中任何一個節點的 8080 端口,都可以訪問到 web_server
http://www.cnblogs.com/CloudMan6/p/7967419.html 直接使用 ingress 行不行?ingress是docker-swarm集羣建好後就有的 很遺憾,目前 ingress 沒有提供服務發現,必須建立本身的 overlay 網絡 (在manager上建立)
docker service update --image httpd:2.2.32 my_web 說明: --image 指定新的鏡像 my_web 是service的名字 步驟: 1.中止第一個副本。 2.調度任務,選擇 worker node。 3.在 worker 上用新的鏡像啓動副本。 4.若是副本(容器)運行成功,繼續更新下一個副本;若是失敗,暫停整個更新過程。 例子: docker service update --replicas 6 --update-parallelism 2 --update-delay 1m30s my_web #service
增長到六個副本,每次更新兩個副本,間隔時間一分半鐘。
docker service update --rollback my_web #快速恢復到更新以前的狀態
globalmode,其做用是強制在每一個 node 上都運行一個且最多一個副本 例子: docker service create \ --mode global \ --name logspout \ --mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock \ gliderlabs/logspout
http://www.cnblogs.com/CloudMan6/p/8053323.html