docker swarm安装和使用
Posted gsls200808
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
访问
以上是关于docker swarm安装和使用的主要内容,如果未能解决你的问题,请参考以下文章