docker swarm安装和使用

一、安装

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

安装docker 建议>=23.0.0,从23.0.0开始支持csi存储插件

每台机器都需要安装docker,安装命令如下

yum install -y https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.4.3-3.1.el8.x86_64.rpm
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
 
yum install -y docker-ce
systemctl start docker.service
systemctl enable docker.service

二、初始化集群

初始化命令

docker swarm init --advertise-addr 192.168.3.75

这里的192.168.3.75为<MANAGER1-IP>,根据需要改成你自己的ip

初始化速度非常快,执行初始化的节点为管理节点,界面会提示加入节点的语句。

如果关闭了窗口,可以通过下面的命令重新查看加入

加入节点token查看

#加入管理节点的token查看
docker swarm join-token manager
#加入工作节点的token查看
docker swarm join-token worker

开启防火墙端口

firewall-cmd --add-port=2377/tcp --permanent     #集群管理通信
firewall-cmd --add-port=7946/tcp --permanent     #节点间通信
firewall-cmd --add-port=7946/udp --permanent     #节点间通信
firewall-cmd --add-port=4789/udp --permanent     #overlay网络流量
firewall-cmd --reload

加入集群

 docker swarm join --token SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl-7p73s1dx5in4tatdymyhg9hu2 192.168.3.75:2377

集群节点的相关操作

#查看所有节点
docker node ls
#升级worker为manager节点
docker node promote node-3 node-2
#降级manager节点为worker节点
docker node demote node-3 node-2

集群相关操作

#退出集群
docker swarm leave
#强制退出集群
docker swarm leave --force

docker swarm里的节点分为管理节点和工作节点,官方建议管理节点个数是奇数。

与k8s不同的是管理节点默认情况下是可以部署程序的。

如果不需要管理节点部署程序,可以--constraint node.labels.node!=manager 指定

三、部署示例程序nginx

docker swarm部署程序有两种方式,一种是docker service方式,另一种是docker stack的yaml文件方式。

1.docker service方式

部署命令

docker service create --replicas 1 --name my-nginx -p 8000:80 nginx:1.20.0

访问

http://ip:8000

2.docker stack的yaml文件方式

docker集群模式下也支持yaml部署,不过是Docker stack类型的yaml,与docker compse的yaml类似,但不完全一样,不支持docker-compose的环境变量如image: name:${IMAGE_VERSION},不支持build、links和network_mode,Docker stack有一个新的指令deploy,yaml文件版本必须>=3,常用的版本为3.6。

编辑stack文件nginx-stack.yml,内容如下

version: '3.6'
services:

  my-nginx:
    image: nginx:1.20.0
    environment:
      - TZ=Asia/Shanghai

    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
      update_config:
        parallelism: 1
        delay: 10s
        monitor: 30s
        max_failure_ratio: 0.1
        order: start-first
    ports:
      - 8000:80

    networks:
      - my-net

networks:
  my-net:
    external: true

执行命令

#创建网络
docker network create --driver overlay my-net
#部署yaml
docker stack deploy --compose-file nginx-stack.yml vossibility

访问

http://ip:8000

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值