Docker swarm 笔记

防火墙开放端口:

  • TCP port 2377为集群管理通信
  • TCP and UDP port 7946 为节点间通信
  • UDP port 4789 为网络间流量

在manager1上创建swarm集群:

$ docker swarm init --advertise-addr 192.168.0.251

--advertise-addr选项表示管理节点公布它的IP是多少。其它节点必须能通过这个IP找到管理节点。

运行docker info来查看当前swarm集群的状态:

$ docker info 

查看节点信息

$  docker node ls

查看加入节点指令 

$ docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-3bxotwbwtvhtzawo548h738h2rjs4s8hgj8ah6cxfydb775grz-cjzodty09sti7eb5inmdg4err 192.168.0.251:2377

加入节点

ssh到worker2 ,使主机2 加信集群

$ docker swarm join --token SWMTKN-1-3bxotwbwtvhtzawo548h738h2rjs4s8hgj8ah6cxfydb775grz-cjzodty09sti7eb5inmdg4err 192.168.0.251:2377

在swarm集群上部署一个服务

$ docker service create --replicas 1 --name gpsserver -p 10111:10111 -p 15678:15678 --update-delay 10s gpsserver:1.0

和运行容器一样,可绑定多个端口

--name表明服务名字是gpsserver 

--replicas 表示期望1个服务实例

gpsserver:1.0 镜像与标签

 

在服务部署阶段就指定滚动升级策略

  • --update-delay配置了更新服务的时间间隔,你可以指定时间T为秒是Ts,分是Tm,或时是Th,所以10m30s就是10分30秒的延迟
  • 默认的调度器scheduler一次更新一个任务.你可以传入参数--update-parallelism来配置调度器同时更新的最大任务数量
  • 默认的当一个更新任务返回RUNNING状态后,调度器才调度另一个更新任务,直到所有任务都更新了。如果更新过程中任何任务返回了FAILED,调度器就会停止更新。你可以给命令docker service create or docker service update配置配置--update-failure-action,来配置这个行为。

 

至此所有节点都可访问服务了

查看运行的服务

 $ docker service ls

  

查看优化显示的服务详情

$ docker service inspect --pretty 060zo3u0g3mj

060zo3u0g3mj是服务id

查看到哪些节点在运行该服务实例

$ docker service ps 060zo3u0g3mj

缩放一个或多个复制服务

$ docker service scale 060zo3u0g3mj=2

删除服务

$ docker service rm 060zo3u0g3mj

动态更新服务

$ docker service update --image gpsserver:2.0 gpsserver(或服务id)

使用--mount-add--mount-rm选项可以添加或删除服务的bind-mount或卷

回滚上个一个配置或版本

$ docker service update --rollback gpsserver

  

 

 

 

 

#创建nginx服务

 

#docker pull hub.test.com:5000/almi/nginx:0.1 #下载私有仓库镜像
docker service create --name nginx  --replicas 2 --publish 80:80 hub.test.com:5000/almi/nginx:0.1
#--network=swarm_test
#replicas 2 创建2个容器,hub.test.com为私有仓库

 

#查看swarm集群中的服务

 

docker service ls
docker service ps nginx

 

#kill其中一个容器

 

docker kill 96e6bccc2209
#等会自动启动一个新的容器

 

#修改服务实例数量为3

 

docker service scale nginx=3

 

#删除nginx服务

 

docker service rm nginx

 

#删除swarm节点

 

docker swarm leave --force  #node
docker node rm -f <node>    #manager

 

#docker swarm 常用命令

 

docker swarm init               #初始化集群
docker swarm join-token worker  #查看工作节点的 token
docker swarm join-token manager #查看管理节点的 token
docker swarm join               #加入集群中

 

#docker node 常用命令

 

docker node ls      #查看所有集群节点
docker node rm      #删除某个节点(-f强制删除)
docker node inspect ##查看节点详情
docker node demote  #节点降级,由管理节点降级为工作节点
docker node promote #节点升级,由工作节点升级为管理节点
docker node update  #更新节点
docker node ps      #查看节点中的 Task 任务

 

#docker service 常用命令

 

docker service create   #部署服务
docker service inspect  #查看服务详情
docker service logs     #产看某个服务日志
docker service ls       #查看所有服务详情
docker service rm       #删除某个服务(-f强制删除)
docker service scale    #设置某个服务个数
docker service update   #更新某个服务

 

#++++++++++++++++++++++++++++++

 

#Docker Stack 部署多个集群服务

 

#docker stack使用编排文件docker-compose.yml批量部署服务

 

#创建编排文件docker-compose.yml

 

mkdir mydocker ; cd mydocker
echo "#  docker stack
version: '3'
services:

  mynginx:
    image: hub.test.com:5000/almi/nginx:0.1
    ports:
     - "8081:80"
    deploy:
      replicas: 3

  busybox:
    image: hub.test.com:5000/busybox:latest
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      replicas: 2
#">docker-compose.yml

 

#使用docker-compose.yml批量创建服务

 

docker stack deploy -c docker-compose.yml deploy-test
docker stack ps deploy-test
#容器名称 deploy-test_<service名称>.随机后缀

 

#查看

 

docker service ls
docker ps

 

#docker stack 常用命令

 

docker stack deploy   #部署新的堆栈或更新现有堆栈
docker stack ls   #列出现有堆栈
docker stack ps   #列出堆栈中的任务
docker stack rm   #删除堆栈
docker stack services   #列出堆栈中的服务
docker stack down   #移除某个堆栈(不删数据)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章