如何在docker swarm集群中部署一个service?

 

如果你想知道,如何在docker swarm集群中部署一个service,那么你需要仔细的阅读下面的文章·····

 

1、前提

 

如果想要完成本次文章的内容,你首先需要一个swarm集群。可以参考下面的文章来搭建一个swarm集群:

 

如何快速搭建一个docker swarm集群?

2、部署service

 

在创建完一个swarm集群后,现在需要将一个service部署到集群中。

 

部署的方法,非常的容易:

 

2.1、登录到manger节点

 

注意:如果你还不知道swarm集群的哪个节点是manger节点,请再去看下swarm搭建文档:

 

如何快速搭建一个docker 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映射的端口,如何访问,数据卷,这些更高级的主题,后面会逐步的向你透露·····

posted @ 2022-08-30 10:28  Zhai_David  阅读(300)  评论(0编辑  收藏  举报