概述
1. 开启 docker
systemctl start docker
2. 创建 swarm 集群
docker swarm init
Swarm initialized: current node (6sn1m12dlxmaj090ge4b4zf1l) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join
--token SWMTKN-1-2v9j04bc95yfxchueu7zi4fs56w07ob57wr29vk29m6nwiyg4q-9ia9c2xrzfohpa0wx6vd8n0v0
192.168.126.129:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
添加节点到集群
docker swarm join
--token SWMTKN-1-2v9j04bc95yfxchueu7zi4fs56w07ob57wr29vk29m6nwiyg4q-9ia9c2xrzfohpa0wx6vd8n0v0
192.168.126.129:2377
将上面的复制粘贴到你要添加的节点(主机)上去运行,这样就完成了将节点添加到集群
在manager节点上查看节点的命令
docker node ls
发布服务
在 manager 上执行如下命令
[vagrant@centos01 ~]$ docker service create --replicas 1 --name helloworld alpine ping docker.com
6gxhvlwx8uqbio7fn2yxnw1yg
或
docker service create --replicas 2 -p 8099:80 --name MyfirstDevops nginx
- docker service create 命令创建一个 service
- –name 标签命名 service 为 helloworld / MyfirstDevops
- –replicas 标签来详细声明 1 / 2 个运行实体
- 参数alpine ping docker.com定义执行ping docker.com作为alpine容器的服务.
使用docker service ls查看服务
[vagrant@centos01 ~]$ docker service ls
ID NAME SCALE IMAGE COMMAND
6gxhvlwx8uqb helloworld 1 alpine ping docker.com
使用docker service inspect审查服务
[vagrant@centos01 ~]$ docker service inspect --pretty helloworld
ID: 6gxhvlwx8uqbio7fn2yxnw1yg
Name: helloworld
Mode: REPLICATED
Replicas: 1
Placement:
Strategy: SPREAD
UpateConfig:
Parallelism: 1
ContainerSpec:
Image: alpine
Args: ping docker.com
使用docker service tasks 查看服务运行在哪个节点上
[vagrant@centos01 ~]$ docker service tasks helloworld
ID NAME SERVICE IMAGE LAST STATE DESIRED STATE NODE
30nkhczhr8g1ot6jh9couixed helloworld.1 helloworld alpine Running 10 minutes Running centos01
[vagrant@centos01 ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b1e88baadfd alpine:latest "ping docker.com" 10 minutes ago Up 10 minutes helloworld.1.30nkhczhr8g1ot6jh9couixed
docker service scale 修改 service 规模
docker service scale MyfirstDevops=5
开启 5 个 MyfirstDevops 的 service 规模
删除 service
docker service rm MyfirstDevops
删除 MyfirstDevops 服务
离开(删除)节点
docker swarm leave --force
滚动升级
Swarm 将按照如下步骤执行滚动更新:
1、停止第一个副本。
2、调度任务,选择 worker node。
3、在 worker 上用新的镜像启动副本。
4、如果副本(容器)运行成功,继续更新下一个副本;如果失败,暂停整个更新过程。
docker service ps 查看更新结果。
默认配置下,Swarm 一次只更新一个副本,并且两个副本之间没有等待时间。我们可以通过 --update-parallelism 设置并行更新的副本数目,通过 --update-delay 指定滚动更新的间隔时间。
比如执行如下命令:
docker service update --replicas 6 --update-parallelism 2 --update-delay 1m30s my_web
service 增加到六个副本,每次更新两个副本,间隔时间一分半钟。
docker service inspect 查看 service 的当前配置。
docker service ps 确保6个副本处于正常状态。
docker service update --image httpd:2.4.16 my_web
Swarm 还有个方便的功能是回滚,如果更新后效果不理想,可以通过 --rollback 快速恢复到更新之前的状态。
docker service updata -rollback my_web
请注意,--rollback 只能回滚到上一次执行 docker service update 之前的状态,并不能无限制地回滚。
滚动更新就讨论到这里,下一节我们学习 Docker Swarm 如何管理数据。
node 下线
有些时候需要维护一个节点,此时此节点可能会网络断开或者需要关机,造成节点上服务可用。使用docker node update --availability drain 将节点下线,swarm会将当前节点上的容器关闭并在其他节点上启动。当维护完成,需要上线是,将节点状态修改为active状态即可,命令如下:docker node update --availability active
最后
以上就是受伤钻石为你收集整理的swarm的使用和滚动升级的全部内容,希望文章能够帮你解决swarm的使用和滚动升级所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复