Docker进阶Docker Swarm

 

1.环境准备

1.1常用命令

1.2vmware克隆

2.Docker Swarm

2.1Docker Swarm介绍

2.2搭建Docker Swarm集群

3.Raft协议

3.1将docker-1宕机

4.Docker Swarm 弹性、扩缩容、集群

4.1查看docker service

4.2创建服务docker service create

4.3docker service update --replicas

4.4扩缩容到10个nginx服务

4.5docker service scale

5.概念总结

5.1概念

5.2网络

5.3Docker Stack

5.4Docker Secret

5.5Docker Config

 

前言

此搭建环境对电脑配置有一定的要求,vmware搭建了4台centos7

官网地址:https://docs.docker.com/engine/

 

1.环境准备

1.1常用命令

systemctl start  docker 打开docker 

systemctl stop docker  关闭docker服务

sudo systemctl daemon-reload 守护进程重启   

systemctl restart  docker 重启docker服务   

systemctl stop firewalld.service 关闭防火墙

firewall-cmd --zone=public --list-ports  查看开放的端口

vim /etc/sysconfig/network-scripts/ifcfg-ens33 #修改静态ip

service network restart #重启网络服务

docker stop $(docker ps -a -q)  停止所有的container

docker rm $(docker ps -a -q)     删除所有container

docker rmi $(docker images -q) 要删除全部image

1.2vmware克隆

(1)首先需要安装一台centos7虚拟机,为了快捷,剩下的进行克隆即可

https://www.cnblogs.com/pengboke/p/13063168.html#node3

(2)克隆

docker-1--->管理--->克隆

一直下一步,再克隆类型的时候选择创建完整克隆

名称和位置自己选择

点击完成,稍等几分钟

(3)查看环境

xhell连接四台linux

(4)检查防火墙

Docker Swarm默认2377端口

要么关闭防火墙,要么放行2377端口,设置放行完2377端口,需要重启后生效

firewall-cmd --zone=public --add-port=2377/tcp --permanent #放行2377端口

firewall-cmd --state  #查看防火墙状态

firewall-cmd --reload #重启防火墙

 

2.Docker Swarm

2.1Docker Swarm介绍

官网地址:https://docs.docker.com/engine/swarm/

管理节点

工作节点

Raft一致性算法

 

2.2搭建Docker Swarm集群

(1)docker swarm 帮助命令

docker swarm --help

(2)初始化节点

我这里将192.168.188.180作为管理节点,然后进行初始化

docker swarm init --adversise-addr 192.168.188.180

(3)docker-2加入集群

docker swarm join --token SWMTKN-1-37mj0bpx6nq8u5d452zryhxhzqdcqnrxb53sfhezrs7lvqvvmf-3g05ke0bisboi35gizd690zc9 192.168.188.180:2377

docker-1节点查看 docker-2节点已经加入

docker node ls

(4)查看工作节点的token(创建工作节点时需要用到生成的命令)

docker swarm join-token worker

(5)查看管理节点token(创建管理节点时需要用到生成的命令)

docker swarm join-token manager

(6)docker-3加入工作节点

(7)docker-4加入管理节点

一开始加入docker-1节点会失败,原因是作为主节点需要开放2377端口

firewall-cmd --zone=public --add-port=2377/tcp --permanent

firewall-cmd --reload

docker swarm join --token SWMTKN-1-37mj0bpx6nq8u5d452zryhxhzqdcqnrxb53sfhezrs7lvqvvmf-biiz6y5d3lktavopnuuvy91st 192.168.188.180:2377

docker node ls

 

3.Raft协议

Raft协议:保证大多数节点存活才可以使用用。只要>1,集群必须大于三台

3.1将docker-1宕机

systemctl stop docker

systemctl stop docker.socket

docker node ls

(2)查看docker-4

不可用

 

重启后集群恢复

systemctl start docker

 

4.Docker Swarm 弹性、扩缩容、集群

docker脱离编排没有任何意义

告别docker ruin使用docker-compose up启动一个项目

集群:swarm    docker service

容器=>服务

容器=>服务=>副本

redis服务=>10个副本

docker run 容器启动!不具有扩缩容器

docker service 服务!具有扩展容器!滚动更新!

4.1查看docker service

(1)docker service --help

创建服务、动态扩展服务、动态更新服务

4.2创建服务docker service create

(1)创建nginx服务

docker service create -p 8888:80 --name ngx01 nginx

(2)查看服务ngx01

docker service ps ngx01

(3)显示有关一个或多个服务的详细信息

docker service inspect ngx01

(4)查看容器

在docker-1上可以看到ngx01容器

docker ps

在docker-2、docker-3、docker-4上进行查看不到ngx01容器

 

4.3docker service update --replicas

动态更新3个nginx副本

(1)docker service update --replicas 3 ngx01

(2)查看docker-1、docker-2、docker-3、docker-4

4.4扩缩容到10个nginx服务

(1)docker service update --replicas 10 ngx01

(2)查看docker-1、docker-2、docker-3、docker-4

docker ps

4.5docker service scale 

(1)docker service scale ngx01=5

(2)查看docker-1、docker-2、docker-3、docker-4

docker ps

 

5.概念总结

5.1概念

swarm

集群的管理和编号。docker可以初始化一个swarm集群,其他节点可以加入。(管理、工作者)

Node

就是一个docker节点。多个节点就组成了一个网络集群。(管理、工作者)

Service

任务,可以在管理节点或者工作节点来运行。

Task

容器内的命令,细节任务!

 

 

 

 

 

 5.2网络

(1)docker service inspect ngx01

 

 "PublishMode": "ingress"

ingress:特殊的Overlay网络!负载均衡的功能!

Overlay可以使多个相互,ping不同的机器联通并变成一个整体

5.3Docker Stack

docker-compose 单机部署项目!

Docker Statck 集群部署

单机模式下,我们可以使用 Docker Compose 来编排多个服务,而 Docker Swarm 只能实现对单个服务的简单部署。

通过 Docker Stack 我们只需对已有的 docker-compose.yml 配置文件稍加改造就可以完成 Docker 集群环境下的多服务编排

5.4Docker Secret

什么是secret

  • 用户名密码
  • SSH Key
  • TLS认证
  • 任何不想让别人看到的数据

secret management

  • 存在swarm manager 节点raft database里面
  • secret 可以assign给一个service,这个service就能看到这个secret
  • 在container内部secret看起来像文件,但是实际是在内存中

docker secret --help

5.5Docker Config

Docker Config

  • Configs 是安装在容器的文件系统中,而不是使用 RAM 磁盘。
  • Configs 可以随时添加或删除,服务可以共享一个配置。
  • Configs 可以与 Environments 或 Labels 结合使用,以获得最大的灵活性。

 

posted @   peng_boke  阅读(218)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示