Docker Swarm使用介绍和部署

目录

一、什么是Docker Swarm?

二、Swarm的几个相关概念

三、Docker Swarm集群的部署

1.准备工作

2.创建Swarm并添加结点

3.Swarm中部署服务一个nginx服务

4.Swarm中使用Volume

5.Swarm集群多服务部署

6.测试部署的服务


一、什么是Docker Swarm?

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

二、Swarm的几个相关概念

1、Swarm

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

2、Node

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

3、Service

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

4、Task

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

三、Docker Swarm集群的部署

1.准备工作

1.修改ip和主机名

准备三台centos系统的虚拟机

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

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

IP:192.168.10.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.测试部署的服务

#另外两台自行测试

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值