初始化swarm manager並制定網卡地址html
docker swarm init --advertise-addr 192.168.10.117
強制刪除集羣,若是是manager,須要加–forcenode
docker swarm leave --force docker node rm docker-118
查看swarm worker的鏈接令牌mysql
docker swarm join-token worker
查看swarm manager的鏈接令牌nginx
docker swarm join-token manager
使舊令牌無效並生成新令牌web
docker swarm join-token --rotate
加入docker swarm集羣redis
docker swarm join --token SWMTKN-1-5d2ipwo8jqdsiesv6ixze20w2toclys76gyu4zdoiaf038voxj-8sbxe79rx5qt14ol14gxxa3wf 192.168.10.117:2377
查看集羣中的節點sql
docker node ls
查看集羣中節點信息docker
docker node inspect docker-117 --pretty
調度程序能夠將任務分配給節點tomcat
docker node update --availability active docker-118
調度程序不向節點分配新任務,可是現有任務仍然保持運行網絡
docker node update --availability pause docker-118
調度程序不會將新任務分配給節點。調度程序關閉任何現有任務並在可用節點上安排它們
docker node update --availability drain docker-118
添加節點標籤
docker node update --label-add label1 --label-add bar=label2 docker-117
刪除節點標籤
docker node update --label-rm label1 docker-117
將節點升級爲manager
docker node promote docker-118
將節點降級爲worker
docker node demote docker-118
查看服務列表
docker service ls
查看服務的具體信息
docker service ps redis
建立一個不定義name,不定義replicas的服務
docker service create nginx
建立一個指定name的服務
docker service create --name my_web nginx
建立一個指定name、run cmd的服務
docker service create --name helloworld alping ping docker.com
建立一個指定name、version、run cmd的服務
docker service create --name helloworld alping:3.6 ping docker.com
建立一個指定name、port、replicas的服務
docker service create --name my_web --replicas 3 -p 80:80 nginx
爲指定的服務更新一個端口
docker service update --publish-add 80:80 my_web
爲指定的服務刪除一個端口
docker service update --publish-rm 80:80 my_web
將redis:3.0.6更新至redis:3.0.7
docker service update --image redis:3.0.7 redis
配置運行環境,指定工做目錄及環境變量
docker service create --name helloworld --env MYVAR=myvalue --workdir /tmp --user my_user alping ping docker.com
建立一個helloworld的服務
docker service create --name helloworld alpine ping docker.com
更新helloworld服務的運行命令
docker service update --args 「ping www.baidu.com」 helloworld
刪除一個服務
docker service rm my_web
在每一個羣組節點上運行web服務
docker service create --name tomcat --mode global --publish mode=host,target=8080,published=8080 tomcat:latest
建立一個overlay網絡
docker network create --driver overlay my_network docker network create --driver overlay --subnet 10.10.10.0/24 --gateway 10.10.10.1 my-network
建立服務並將網絡添加至該服務
docker service create --name test --replicas 3 --network my-network redis
刪除羣組網絡
docker service update --network-rm my-network test
更新羣組網絡
docker service update --network-add my_network test
建立羣組並配置cpu和內存
docker service create --name my_nginx --reserve-cpu 2 --reserve-memory 512m --replicas 3 nginx
更改所分配的cpu和內存
docker service update --reserve-cpu 1 --reserve-memory 256m my_nginx
指定每次更新的容器數量
--update-parallelism
指定容器更新的間隔
--update-delay
定義容器啓動後監控失敗的持續時間
--update-monitor
定義容器失敗的百分比
--update-max-failure-ratio
定義容器啓動失敗以後所執行的動做
--update-failure-action
建立一個服務並運行3個副本,同步延遲10秒,10%任務失敗則暫停
docker service create --name mysql_5_6_36 --replicas 3 --update-delay 10s --update-parallelism 1 --update-monitor 30s --update-failure-action pause --update-max-failure-ratio 0.1 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.36
回滾至以前版本
docker service update --rollback mysql
自動回滾
若是服務部署失敗,則每次回滾2個任務,監控20秒,回滾可接受失敗率20%
docker service create --name redis --replicas 6 --rollback-parallelism 2 --rollback-monitor 20s --rollback-max-failure-ratio .2 redis:latest
建立服務並將目錄掛在至container中
docker service create --name mysql --publish 3306:3306 --mount type=bind,src=/data/mysql,dst=/var/lib/mysql --replicas 3 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.36
Bind帶來的風險
一、綁定的主機路徑必須存在於每一個集羣節點上,不然會有問題
二、調度程序可能會在任什麼時候候從新安排運行服務容器,若是目標節點主機變得不健康或沒法訪問
三、主機綁定數據不可移植,當你綁定安裝時,不能保證你的應用程序開發方式與生產中的運行方式相同
添加swarm配置
echo "this is a mysql config" | docker config create mysql -
查看配置
docker config ls
查看配置詳細信息
docker config inspect mysql
刪除配置
docker config rm mysql
添加配置
docker service update --config-add mysql mysql
刪除配置
docker service update --config-rm mysql mysql
添加配置
docker config create homepage index.html
啓動容器的同時添加配置
docker service create --name nginx --publish 80:80 --replicas 3 --config src=homepage,target=/usr/share/nginx/html/index.html nginx