docker学习(九)docker swarm集群


前言

Docker Swarm是Docker原生态的集群技术,swarm 集群由管理节点(manager)和工作节点(work node)组成。

swarm mananger:主节点,负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作;

work node:工作节点,主要负责运行相应的服务来执行任务(task)。


一、环境准备

1、安装docker

2、准备两台机器

manager 172.16.10.151

node 172.16.10.153

二、安装主节点

安装主节点,生成token,其他工作节点使用该token加入集群

[root@swarm-master ~]# docker swarm init --advertise-addr 172.16.10.151
Swarm initialized: current node (yyjg5a442rncjuh58xdsel5a3) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-4mi806upco3hjeiuu4c8boeehml9fuo5u7mnnode3o23h7ljuj-44nnu8s9b93vxob29tix73vhc 172.16.10.151:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

查看集群

[root@swarm-master ~]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
yyjg5a442rncjuh58xdsel5a3 *   swarm-master          Ready               Active              Leader              18.06.3-ce

三、安装从节点

使用上面的token

[root@swarm-node02 ~]# docker swarm join --token SWMTKN-1-4mi806upco3hjeiuu4c8boeehml9fuo5u7mnnode3o23h7ljuj-44nnu8s9b93vxob29tix73vhc 172.16.10.151:2377
This node joined a swarm as a worker.

在主节点上查看集群

[root@swarm-master ~]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
yyjg5a442rncjuh58xdsel5a3 *   swarm-master          Ready               Active              Leader              18.06.3-ce
y35ggyr28c1q2ltolvhva8d82     swarm-node02          Ready               Active                                  20.10.11

四、常用命令

1、docker node

[root@swarm-master ~]# docker node --help

Usage:	docker node COMMAND

Manage Swarm nodes

Commands:
  demote      Demote one or more nodes from manager in the swarm 将管理节点降级为普通节点
  inspect     Display detailed information on one or more nodes  查看节点的详细信息
  ls          List nodes in the swarm  查看节点列表
  promote     Promote one or more nodes to manager in the swarm 将普通节点升级为管理节点
  ps          List tasks running on one or more nodes, defaults to current node  查看运行的任务
  rm          Remove one or more nodes from the swarm  从集群中删除节点
  update      Update a node  更新节点状态
 
Run 'docker node COMMAND --help' for more information on a command.

2、docker service

[root@swarm-master ~]# docker service --help

Usage:	docker service COMMAND

Manage services

Commands:
  create      Create a new service  创建新的服务 
  inspect     Display detailed information on one or more services 查看服务详细信息
  logs        Fetch the logs of a service or task  查看服务日志
  ls          List services  查看服务列表
  ps          List the tasks of one or more services 查看服务任务信息 
  rm          Remove one or more services 删除服务
  rollback    Revert changes to a service's configuration 回滚服务
  scale       Scale one or multiple replicated services   扩容缩容
  update      Update a service  更新服务

Run 'docker service COMMAND --help' for more information on a command.

五、测试

1、下载nginx镜像

[root@swarm-master ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
e5ae68f74026: Pull complete 
21e0df283cd6: Pull complete 
ed835de16acd: Pull complete 
881ff011f1c9: Pull complete 
77700c52c969: Pull complete 
44be98c0fab6: Pull complete 
Digest: sha256:9522864dd661dcadfd9958f9e0de192a1fdda2c162a35668ab6ac42b465f0603
Status: Downloaded newer image for nginx:latest

2、创建服务

[root@swarm-master ~]# docker service create --replicas 1 --name nginx-test nginx:latest
k8r71cut7ofe26r26rha4b3ny
overall progress: 1 out of 1 tasks 
1/1: running   [==================================================>] 
verify: Service converged

3、查看服务

[root@swarm-master ~]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
k8r71cut7ofe        nginx-test          replicated          1/1                 nginx:latest        

4、查看任务

[root@swarm-master ~]# docker service ps nginx-test
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
4lsajhzyk84o        nginx-test.1        nginx:latest        swarm-master          Running             Running 5 minutes ago          

5、扩容

[root@swarm-master ~]# docker service scale nginx-test=2
nginx-test scaled to 2
overall progress: 2 out of 2 tasks 
1/2: running   [==================================================>] 
2/2: running   [==================================================>] 
verify: Service converged 

再次查看任务,可以看出两个任务分别运行在两个节点上

[root@swarm-master ~]# docker service ps nginx-test
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
4lsajhzyk84o        nginx-test.1        nginx:latest        swarm-master          Running             Running 10 minutes ago                       
d3vrxeuc61o9        nginx-test.2        nginx:latest        swarm-node02          Running             Running 58 seconds ago          

6、更新服务

[root@swarm-master ~]# docker service update --image=nginx:1.21 nginx-test
nginx-test
overall progress: 2 out of 2 tasks 
1/2: running   [==================================================>] 
2/2: running   [==================================================>] 
verify: Service converged 

查看服务,镜像已经更新成 nginx:1.21

[root@swarm-master ~]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
k8r71cut7ofe        nginx-test          replicated          2/2                 nginx:1.21          

[root@swarm-master ~]# docker service ps nginx-test
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE             ERROR               PORTS
t3uqo4hdnapt        nginx-test.1        nginx:1.21          swarm-master          Running             Running 28 seconds ago                        
4lsajhzyk84o         \_ nginx-test.1    nginx:latest        swarm-master          Shutdown            Shutdown 28 seconds ago                       
6aiwhotqeuoj        nginx-test.2        nginx:1.21          swarm-node02          Running             Running 25 seconds ago                        
d3vrxeuc61o9         \_ nginx-test.2    nginx:latest        swarm-node02          Shutdown            Shutdown 26 seconds ago       

7、服务回滚

[root@swarm-master ~]# docker service update --rollback nginx-test
nginx-test
rollback: manually requested rollback 
overall progress: rolling back update: 2 out of 2 tasks 
1/2: running   [>                                                  ] 
2/2: running   [>                                                  ] 
verify: Service converged 

查看服务,镜像已经更新成 nginx:latest

[root@swarm-master ~]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
k8r71cut7ofe        nginx-test          replicated          2/2                 nginx:latest        

[root@swarm-master ~]# docker service ps -f "desired-state=running" nginx-test
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE                ERROR               PORTS
ayvu09m4yjuh        nginx-test.1        nginx:latest        swarm-master          Running             Running about a minute ago                       
kukxp1q8pmo7        nginx-test.2        nginx:latest        swarm-node02          Running             Running about a minute ago  

8、排除节点

排除主节点

docker node update --availability drain swarm-master

查看任务,都运行在了node节点上

[root@swarm-master ~]# docker service ps -f "desired-state=running" nginx-test
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
kxvko9n3ct72        nginx-test.1        nginx:latest        swarm-node02          Running             Running 4 minutes ago                        
kukxp1q8pmo7        nginx-test.2        nginx:latest        swarm-node02          Running             Running 11 minutes ago

9、激活节点

docker node update --availability active swarm-master
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Docker Compose是一个描述和运行多个Docker容器的工具,而Docker Swarm是一个Docker原生的集群管理工具,可以方便地管理多个Docker节点。在Docker Swarm集群中使用Docker Compose可以快速地构建和部署服务。 以下是在Docker Swarm集群中使用Docker Compose部署服务的一些步骤: 1. 编写Docker Compose文件:在本地编写一个Docker Compose文件,描述需要运行的服务、镜像和配置等信息。例如,下面是一个简单的Docker Compose文件: ``` version: '3.7' services: web: image: nginx:alpine deploy: replicas: 2 resources: limits: cpus: '0.5' memory: 512M restart_policy: condition: on-failure ports: - "80:80" - "443:443" ``` 2. 上传Docker Compose文件:将Docker Compose文件上传到Swarm集群管理节点。 3. 部署服务:使用`docker stack deploy`命令部署服务,例如: ``` docker stack deploy --compose-file docker-compose.yml my-app ``` 其中,`--compose-file`参数指定了使用的Docker Compose文件,`my-app`是服务的名称。 4. 验证服务:使用`docker service ls`命令可以查看部署的服务列表,使用`docker service ps <service>`命令可以查看服务的运行状态。 ``` docker service ls docker service ps my-app_web ``` 以上就是在Docker Swarm集群中使用Docker Compose部署服务的一些步骤。通过使用Docker Compose可以快速地构建和部署服务,而Docker Swarm可以方便地管理和扩展服务,两者结合使用可以大大提高服务的可靠性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_lrs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值