如何在docker swarm集群中部署一个service?
如果你想知道,如何在docker swarm集群中部署一个service,那么你需要仔细的阅读下面的文章·····
1、前提
如果想要完成本次文章的内容,你首先需要一个swarm集群。可以参考下面的文章来搭建一个swarm集群:
2、部署service
在创建完一个swarm集群后,现在需要将一个service部署到集群中。
部署的方法,非常的容易:
2.1、登录到manger节点
注意:如果你还不知道swarm集群的哪个节点是manger节点,请再去看下swarm搭建文档:
2.2、执行部署命令
运行以下的命令:
docker service create --replicas 1 \ --name helloworld \ 172.20.58.152/baseimage/alpine:latest \ ping docker.com
- docker service create命令用来创建service
- --name 指明service的名字是helloworld
- --replicas 1 表示期望运行一个实例
- 172.20.58.152/baseimage/alpine:latest 表示要使用的镜像的名字
- ping docker.com 表示容器要运行的命令
创建service的过程:
OK,创建完service之后······
查看service的列表
docker service ls
查看服务的任务(task)的状态
docker service ps helloworld
通过上面的输出,你可以看到,当前这个service的容器在哪个节点上运行,当前的状态是什么,以及运行了多久。
到这里就结束了吗?那如何删除一个service,查看一个serivce的日志?继续往下看······
2.3、service管理
查看一个service的日志
docker service logs helloworld
查看service的详细信息
加上--pretty进行输出的格式化
docker service inspect helloworld --pretty
扩缩容service
刚刚你看到的这个service只有一个容器副本,如果想要运行多个副本,该怎么搞?
非常的简单。
docker service scale helloworld=2
- 使用scale命令
- helloworld=2 [service名字=副本数]
运行过程:
[root@nccztsjb-node-07 ~]# docker service scale helloworld=2 helloworld scaled to 2 overall progress: 2 out of 2 tasks 1/2: running [==================================================>] 2/2: running [==================================================>] verify: Service converged [root@nccztsjb-node-07 ~]#
OK,查看service的状态
[root@nccztsjb-node-07 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS agak3k62twwc helloworld replicated 2/2 172.20.58.152/baseimage/alpine:latest [root@nccztsjb-node-07 ~]# [root@nccztsjb-node-07 ~]# docker service ps helloworld ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS sokl6eufyioa helloworld.1 172.20.58.152/baseimage/alpine:latest nccztsjb-node-07 Running Running 14 minutes ago cfwplmh4xauc helloworld.2 172.20.58.152/baseimage/alpine:latest nccztsjb-node-08 Running Running about a minute ago [root@nccztsjb-node-07 ~]#
可以看到,现在这个service运行了2个副本,在2个主机节点上。
删除service
删除一个service也非常的简单
docker service rm helloworld
OK,到这里的话,一个最基本的service的部署、管理已经实现了。
那service映射的端口,如何访问,数据卷,这些更高级的主题,后面会逐步的向你透露·····