Docker swarm、node、service 集群管理

主要看以下三个命令帮助

docker swarm --help
docker node --help
docker service --help

docker node 和docker service 只能在管理节点上执行。

搭建集群

可以用一个管理节点和一个服务节点来集群,保证两个宿主系统ip地址可以互相访问,同一个内网是可以的。
管理节点上执行:
docker swarm init
初始化一个管理节点,然后会输出如下的提示:
docker swarm join --token SWMTKN-1-2kb3k6j3r7nmh3myvhivazrzp14w8qfuzt5d4b839177bdf0oj-70s1a79ue48r1ukxu15as510r 192.168.50.202:2377
复制类似上面的提示信息,保存下来。然后在服务节点上执行,就会让当前机器成为一个服务节点加入集群。
在管理节点上执行以下命令可以查看集群中的节点:
docker node ls
如果要退出集群,执行以下命令:
docker swarm leave

运行服务

docker service命令,一个service可以对应多个task(分布在不同节点上的容器)。
首先在管理节点拉取一个镜像用来做测试:
docker pull containous/whoami
然后执行以下命令创建一个服务:
docker service create --replicas 2 --name my_whoami -p 8044:80 containous/whoami:latest
输出如下的内容:

docker service create --replicas 2 --name my_whoami -p 8044:80 containous/whoami:latest
s28r6heiw3nwo9hjmvgau2hnp
overall progress: 2 out of 2 tasks 
1/2: running   [==================================================>] 
2/2: running   [==================================================>] 
verify: Service converged 

说明该服务两个任务副本已经运行,可以用以下的命令来查看服务列表:

#查看服务列表
docker service ls   
# 查看某个服务相关的任务
docker service ps my_whoami
#查看服务或任务的日志(最后面为服务名或服务ID或任务ID)
docker service logs my_whoami

再在各节点上执行命令
docker images
发现服务节点上也有了containous/whoami:latest的镜像
docker ps -a
执行上面的命令后,发现也启动一个containous/whoami的容器,只是容器的名称比服务的名称多了些后缀。

docker ps -a
CONTAINER ID   IMAGE                      COMMAND     CREATED              STATUS             PORTS   NAMES
bccecc126f7d   containous/whoami:latest   "/whoami"   About a minute ago   Up About a minute  80/tcp  my_whoami.2.2q33pnnzw471fiylnd18vps6r

执行curl命令或浏览器中测试容器运行成功,各个节点的IP加上创建服务时映射端口都可以成功访问,例如:

curl http://192.168.60.2:8044/api
{"hostname":"bccecc126f7d","ip":["127.0.0.1","10.0.0.8","172.18.0.3"],"headers":{"Accept":["*/*"],"User-Agent":["curl/7.61.1"]},"url":"/api","host":"192.168.60.2:8044","method":"GET"}

可以使用docker service scale命令来修改副本的数量,例如:

#将上面的服务副本数量增加到4个
docker service scale my_whoami=4
my_whoami scaled to 4
overall progress: 4 out of 4 tasks 
1/4: running   [==================================================>] 
2/4: running   [==================================================>] 
3/4: running   [==================================================>] 
4/4: running   [==================================================>] 
verify: Service converged 

然后通过docker service ps my_whoami命令查看发现已经启动了4个容器;
将副本数量设置为0将会关闭该服务相关的所有任务:
docker service scale my_whoami=0

另外:
docker service update --env-add TZ=Asia/Shanghai my_whoami 可以修改服务的配置,这里是增加一个环境变量;
docker service rm my_whoami 可以彻底地删除一个服务。

你可能感兴趣的:(Docker swarm、node、service 集群管理)