Docker Swarm介绍及使用入门

Docker Swarm介绍及使用入门

Docker Swarm是管理跨节点容器的编排工具,相较于Docker Compose而言,Compose只能编排单节点上的容器,Swarm将一群Docker节点虚拟化为一个主机,使得用户只要在单一主机上操作就能完成对整个容器集群的管理工作。如果下载的1.12.x版本之后Docker,那么Swarm就已经被包含在内了,无需再安装。

Docker Swarm架构包含两种角色,manager和node,前者是Swarm Daemon工作的节点,包含了调度器、路由、服务发现等功能,负责接收客户端的集群管理请求,然后调度Node进行具体的容器工作,比如容器的创建、扩容与销毁等。 manager本身也是一个node。

在这里插入图片描述

通常情况下,为了集群的高可用,manager个数>=3的奇数,node的个数则是不限制。

创建集群

docker swarm init --advertise-addr ip # 创建swarm 集群,设置 manager节点和通信ip


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

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

    docker swarm join --token SWMTKN-1-57msikozxxt44uxz5r8hihmakp4zh1cr89v7zlxhyc8b5iojkt-5ea8uh68jcuy8m6f9ma7x0zg5 172.22.147.207:2377

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

如上就完成了manager节点的设置,并且得到提示信息如下:

  • 可以在其它节点上执行docker swarm join --token......来将该节点设置为工作node,并加入到这个swarm集群中;
  • 可以在其它节点上执行docker swarm join-token manager来获取下一步执行指令,执行该指令后,该节点将设置为manager从节点加入到这个swarm集群中;

我们目前演示的是一个manager,两个工作node的模式,所以在另外两台node1和node2上执行第一个命令即可完成一个swarm 集群的搭建

使用集群

注意事项:

manager是管理集权的入口,docker命令都是在manager上执行,node节点上不能执行docker命令

命令介绍

docker node ls  # 查看集群中的节点信息

在这里插入图片描述

docker network create -d overlay niginx_network 
# 创建一个名为niginx_network的Docker overlay网络。

Docker支持以下网络类型:
    1. 桥接(Bridge)网络:默认的Docker网络,适用于单节点的Docker主机。
    2. 主机(Host)网络:容器加入到主机网络中,与主机共享网络命名空间和网络接口。
    3. 网络(Network)网络:容器加入到指定的用户定义网络中,不同的容器可以互相通信。
    4. None网络:容器没有网络连接,可用于一些特殊场景。
    5. MACVLAN网络:在物理网卡上创建多个虚拟MAC地址以模拟多个网络接口,将容器关联到指定的虚拟MAC地址,实现容器之间网络隔离和安全性。
    6. Overlay网络:适用于多节点Docker集群,提供跨主机的容器通信能力,使用VXLAN实现容器之间的通信。
docker service create --replicas 1 --network niginx_network --name my_nginx -p 80:80 nginx:latest
# 使用nginx:latest镜像创建了一个容器,容器名称为my_nginx,对外暴露80端口;
docker service ls  # 查看允许的服务列表
docker service ps my_nginx # 查看服务在那个节点运行 
docker service scale my_nginx=4 # 动态扩缩容容器个数
docker service update --replicas 3 my_nginx  # 动态扩缩容容器个数
docker service rm my_nginx  # 移除该任务的所有容器

docker node update --availability drain node2 # 下线某个节点
# 如果某个节点被设置下线,或者因为其它故障宕机了,那么它其上的容器会被转移到其它可运行的节点上,如此来保证始终有指定副本数量的容器在运行。
docker node update --availability active node2 # 上线某个节点
docker swarm leave # 节点离开swarm集群  当最后一个manager节点离开,则swarm集群自动删除。
docker swarm leave # 删除swarm集群
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

go&Python

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

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

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

打赏作者

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

抵扣说明:

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

余额充值