Docker Swarm使用介绍和部署

本文详细介绍了Docker Swarm的集群部署过程,包括Swarm的初始化、节点添加、服务创建与管理,以及Volume的使用。通过示例展示了如何在Swarm中部署Nginx服务、扩展服务副本、挂载数据卷以及多服务部署,并提供了测试服务的步骤。此外,还提及了使用docker-compose在Swarm中部署多服务的方法。
摘要由CSDN通过智能技术生成

目录

一、什么是Docker Swarm?

二、Swarm的几个相关概念

1.Swarn

2.Node

3.Service

4.Task

三、Docker Swarm集群的部署

1.准备工作

2.创建Swarm并添加结点

3.Swarm中部署一个nginx服务

4.Swarm中使用Volume

5.Swarm集群多服务部署

6.测试部署的服务


​​​​​​​

一、什么是Docker Swarm?

doker swarm和docker compose都是容器编排工具,docker compose是一个在单个服务器或主机上创建并管理多个容器的工具,而docker swarm则可以在多个服务器或主机上创建容器集群的服务器。

二、Swarm的几个相关概念

1.Swarn

集群的管理和编排是使用嵌入docker引擎的SwarmKit,可以在docker初始化时启动swarm模式或者加入已存在的swarm

2.Node

一个node就是swarm里的一个实例,也就是一台服务器Node里又有manager节点和worker节点,manager节点是管理节点。它的主要功能是分配工作任务,编排和管理集群。worker节点就是工作节点,它的主要功能就是完成管理节点分配的工作任务。

3.Service

一个服务是工作节点上执行任务的定义。创建一个服务,就指定了容器所使用的镜像和容器运行的命令。

4.Task

任务是在docker容器中执行的命令,Manger节点根据指定数量的任务副本分配任务给worker节点

三、Docker Swarm集群的部署

1.准备工作

1.修改IP和主机名

准备三天centos系统的虚拟机

IP:192.168.1.230  主机名:manager  角色:swarm manager

IP:192.168.1.231  主机名:worker1   角色:swarm node

IP:19.168.1.232   主机名:worker2   角色:swarm node

2.配置hosts文件
[root@manager ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.230 manager
192.168.10.231 worker1
192.168.10.232 worker2
[root@manager ~]# scp /etc/hosts root@192.168.10.231:/etc/hosts
[root@manager ~]# scp /etc/hosts root@192.168.10.232:/etc/hosts

3.关闭防火墙和selinux,三台机器都需要关闭
 
#关闭防火墙
[root@manager ~]# service firewalld stop
#设置开机不启动防火墙
[root@manager ~]# systemctl disable firewalld
#关闭selinux
[root@manager ~]# vim /etc/selinux/config 
 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
 
#修改selinux需要重启服务
[root@manager ~]# reboot
 
4.三台机器都安装docker
 
[root@manager ~]# yum install docker -y
 
[root@worker1 ~]# yum install docker -y
 
[root@worker2 ~]# yum install docker -y

2.创建Swarm并添加结点

1.在manager机器上部署集群
[root@manager ~]# docker swarm init --advertise-addr 192.168.10.230
Swarm initialized: current node (maxo4dbrhl6m2lzwegue8ciyp) is now a manager.
 
To add a worker to this swarm, run the following command:
    #添加节点的方式,在节点加入时要使用token作为密钥
    docker swarm join --token SWMTKN-1-4zcmda7xw3dbxo0w1huk9krj49hp1mpz4xodlu4uixocene58n-ee9gocel9cjaw33no906ibf0b 192.168.10.230:2377
 
2.添加节点到swarm集群
[root@worker1 ~]# docker swarm join --token SWMTKN-1-4zcmda7xw3dbxo0w1huk9krj49hp1mpz4xodlu4uixocene58n-ee9gocel9cjaw33no906ibf0b 192.168.10.230:2377
This node joined a swarm as a worker.
 
[root@worker2 ~]# docker swarm join --token SWMTKN-1-4zcmda7xw3dbxo0w1huk9krj49hp1mpz4xodlu4uixocene58n-ee9gocel9cjaw33no906ibf0b 192.168.10.230:2377
This node joined a swarm as a worker.
 
3.显示swarm集群中的节点
[root@manager ~]# docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
maxo4dbrhl6m2lzwegue8ciyp *   manager    Ready     Active         Leader           20.10.8
6tj7ajbbkoa4lphjiiahcuafm     worker1    Ready     Active                          20.10.8
ruk7jvg2gao7boih2u2lw6s1l     worker2    Ready      Active                          20.10.8
 
4.worker结点退出集群
[root@worker1 ~]# docker swarm leave -f
 
5.manager结点解散集群
[root@manager ~]# docker swarm leave -f
 

3.Swarm中部署一个nginx服务

1.创建网络
[root@manager ~]# docker network create -d overlay sc_nginx
zafpl1jg200g8ojqd48nwe8vj
[root@manager ~]# docker network ls|grep sc_nginx
zafpl1jg200g   sc_nginx               overlay   swarm
 
2.部署服务
[root@manager ~]# docker service create --replicas 10 --network sc_nginx --name sc_nginx -p 8886:80 nginx
twl33bdu1cx8x2ikcmwnfu23o
overall progress: 10 out of 10 tasks 
1/10: running   
2/10: running   
3/10: running   
4/10: running   
5/10: running   
6/10: running   
7/10: running   
8/10: running   
9/10: running   
10/10: running   
verify: Service converged 
 
3.查看正在运行的服务
[root@manager ~]# docker service ls
ID             NAME       MODE         REPLICAS   IMAGE          PORTS
twl33bdu1cx8   sc_nginx   replicated   10/10      nginx:latest   *:8886->80/tcp
 
4.查看服务的详细的详细
[root@manager ~]# docker service inspect sc_nginx
 
5.查看哪些节点运行了哪些容器
[root@manager ~]# docker service ps sc_nginx
 
6.扩展容器到20个
[root@manager ~]# docker service scale sc_nginx=20
 
7.查看各结点运行的容器
[root@manager ~]# docker ps
[root@worker1 ~]# docker ps
[root@worker2 ~]# docker ps
 
8.镜像升级
[root@manager ~]# docker service update --image nginx:latest sc_nginx
 
9.删除服务
[root@manager ~]# docker service rm sc_nginx
 

4.Swarm中使用Volume

#创建一个volume
[root@manager ~]# docker volume create --name swarm-volume
swarm-volume
 
#查看创建的volume
[root@manager ~]# docker volume ls
local     swarm-volume
 
#查看volume的详细信息
[root@manager ~]# docker volume inspect swarm-volume
[
    {
        "CreatedAt": "2021-08-29T10:19:03+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/swarm-volume/_data",
        "Name": "swarm-volume",
        "Options": {},
        "Scope": "local"
    }
]
 
#修改volume的信息
[root@manager _data]# cd /var/lib/docker/volumes/swarm-volume/_data
[root@manager _data]# ls
[root@manager _data]# vim index.html
[root@manager _data]# cat index.html 
welcome to liu's website!
 
#创建服务并挂载创建的volume
[root@manager ~]# docker service create --replicas 10 --mount type=volume,src=swarm-volume,dst=/usr/share/nginx/html --name sc_nginx2 -p 8887:80 nginx 
n743dnbogi5qkq9r4gmeb06w6
overall progress: 10 out of 10 tasks 
1/10: running   
2/10: running   
3/10: running   
4/10: running   
5/10: running   
6/10: running   
7/10: running   
8/10: running   
9/10: running   
10/10: running   
verify: Service converged 
[root@manager ~]# docker service ls
ID             NAME        MODE         REPLICAS   IMAGE          PORTS
n743dnbogi5q   sc_nginx2   replicated   10/10      nginx:latest   *:8887->80/tcp
 
#linux里访问网站
[root@manager ~]# curl 192.168.10.230:8887
welcome to liu's website!
 

5.Swarm集群多服务部署

#编写docker-compose.yml文件
[root@manager ~]# mkdir /swarm
[root@manager ~]# cd /swarm/
#上面两步不是必须的
[root@manager swarm]# vim docker-compose.yml
[root@manager swarm]# cat docker-compose.yml 
version: "3"
services:
  sc-nginx:      #服务的名字
    image: nginx
    ports:
      - 8888:80
    deploy:
      mode: replicated  
      replicas: 3       #副本数量
  sc-redis:
    image: redis
    ports:
      - 8379:6379
    deploy:
      mode: replicated
      replicas: 3
 
 
#通过docker-compose.yml文件部署服务
#docker stack deploy部署服务的
[root@manager swarm]# docker stack deploy -c docker-compose.yml deploy_deamon
Creating network deploy_deamon_default
Creating service deploy_deamon_sc-redis
Creating service deploy_deamon_sc-nginx
[root@manager swarm]# docker stack ls
NAME            SERVICES   ORCHESTRATOR
deploy_deamon   2          Swarm
 
#查看创建的服务
[root@manager swarm]# docker service ls
ID             NAME                     MODE         REPLICAS   IMAGE          PORTS
0u9mhyag5tky   deploy_deamon_sc-nginx   replicated   3/3        nginx:latest   *:8888->80/tcp
6fomk1oouoo7   deploy_deamon_sc-redis   replicated   3/3        redis:latest   *:8379->6379/tcp
n743dnbogi5q   sc_nginx2                replicated   10/10      nginx:latest   *:8887->80/tcp

6.测试部署的服务

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值