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