Docker swarm基本操作

概念

swarm需要一台节点作为manager node

swarm需要开放以下端口:

  • TCP port 2377 for cluster management communications
  • TCP and UDP port 7946 for communication among nodes
  • UDP port 4789 for overlay network traffic

swarm集群的操作主要围绕几个场景:

  • 集群的创建
  • 节点加入或退出集群
  • 在集群中部署任务(service)
  • 集群的健康数据管理

swarm的创建

创建

在manager节点上运行:

docker swarm init --advertise-addr 192.168.99.100

该命令产生一个token, 例如:

SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c

其他节点利用该token加入swarm

查看token

在manager节点上运行

  • 查看worker使用的token
docker swarm join-token worker
  • 查看manager使用的token:
docker swarm join-token worker

查看本节点swarm状态

$ docker info

Containers: 2
Running: 0
Paused: 0
Stopped: 2
  ...snip...
Swarm: active
  NodeID: dxn1zf6l61qsb1josjja83ngz
  Is Manager: true
  Managers: 1
  Nodes: 1
  ...snip..

查看node节点

以下都在manager节点上运行

  • 查看node列表:
docker node ls
  • 查看单个节点:
docker node inspect --pretty <NODE-ID>

node操作

包括添加,删除,查看node

加入swarm

首选需要获取swarm的token,如果记不住,在最初的manager机器上查看token:

docker swarm join-token worker

在worker机器上运行:

docker swarm join \
    --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
    192.168.99.100:2377

删除node

首先在worker机器上运行:

docker swarm leave

然后在manager机器上运行:

docker node rm <NODE-ID>

暂停/激活node

node直接删除是危险的,尤其是上面正在运行着任务。因此docker提供暂停node的方法,drain。当暂停之后,该node就不会再派发任务,可以安全移除

在manager节点上运行:

docker node update --availability drain <NODE-ID>

处于drain状态的node可以重新激活使用

docker node update --availability active <NODE-ID>

多manager操作

swarm是可以有多个manager的,manager之间采用raft共识

增加manager

增加manager的命令和增加worker node一样,但使用的token不一样

首先在最初的manager机器上查看token:

docker swarm join-token manager

然后在待加入的manager节点上运行:

docker swarm join \
  --token SWMTKN-1-61ztec5kyafptydic6jfc1i33t37flcl4nuipzcusor96k7kby-5vy9t8u35tuqm7vh67lrz9xp6 \
  192.168.99.100:237

退出的操作和普通node并无不同,当最后一个manager node都退出后,swarm就崩了

升降级

swarm还支持把worker node和manager node之间的互换, 以下都在manager节点上操作:

  • 从worker node升级到manager node
ocker node promote <NODE-IDs>
  • 从manager node降级到worker node
docker node demote <NODE-IDs>

Service操作

包括添加,删除,查看Service等

添加service

在manager上运行:

$ docker service create --replicas 1 --name helloworld alpine ping docker.com
  • 指定要部署到几个节点
  • 指定要运行的image

查看service

  • 查看一共有多少service
docker service ls
  • 查看单个servie
docker service inspect --pretty helloworld
  • 查看哪些节点运行着该serivce
docker service ps <SERVICE-ID>

删除service

docker service rm helloworld

扩展service运行的节点

docker service scale <SERVICE-ID>=<NUMBER-OF-TASKS>


《 “Docker swarm基本操作” 》 有 3 条评论

  1. Treatment factors were comparable between groups, however negative close margins were more commonly observed among mutation carriers P finasteride prescription cost Etiology workup

  2. Chlamydiae of serovars A C primarily infect ocular epithelial surfaces and are associated with endemic blinding trachoma, a leading cause of preventable blindness worldwide priligy dosage

  3. Do you assess semantic advantage in your patients priligy medication

回复 agodelo 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

About Me

一位程序员,会弹吉他,喜欢读诗。
有一颗感恩的心,一位美丽的妻子,两个可爱的女儿
mail: geraldlee0825@gmail.com
github: https://github.com/lisuxiaoqi
medium: https://medium.com/@geraldlee0825