Docker Swarm 使用手册

简介

docker技术已经出来很久了,发展已经很完善了,本人初次使用,遇到的问题希望能帮助到其他人。

环境情况

阿里云的服务器,共有3台,搭建Swarm集群。因为现有环境是使用18年的阿里云提供的Docker Swarm搭建的,一直没有维护更新,突然出现问题,服务器重启造成docker集群无法正常启动,因为阿里已经下架了该服务,所以只能自己重新搭建。

  1. UDP端口问题4789 ,因为已经安装了docker,所以直接初始一个swarm集群,但是因为阿里禁用了4789端口,造成各节点间无法通讯;
  2. cluster-advertise冲突 , 因为是老环境,daemon.json里有之前集群的参数,需要去掉,不去掉不能初始化swarm集群。比如:cluster-store,cluster-advertise;
  3. 解决 UDP端口4789 问题,需要升级到19.02版本以上,所以重装操作系统【原为Ubuntu 16,顺便升级,怕新版与操作系统又不兼容】,安装新的版本docker;

Docker 安装

# 更新源
sudo apt update
# 安装环境
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# 下载验证
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 增加docker源
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# 查看有哪些可用版本,选择
sudo apt-cache madison docker-ce
#//根据终端显示的版本选择一个
sudo apt install docker-ce=5:20.10.23~3-0~ubuntu-focal
# 启动docker
systemctl start docker
# 查看docker 信息
docker info

Docker 拉取镜像

# 配置阿里的镜像地址,在 /etc/docker/目录下修改或建立 daemon.json文件,增加下面内容
{
    
    
"registry-mirrors":["https://registry.cn-beijing.aliyuncs.com"]
}

# 重启docker服务

systemctl daemon-reload
systemctl restart docker

# 登录阿里云镜像服务器,根据自己的需要修改参数
docker login --username=aaa registry.cn-beijing.aliyuncs.com
#然后输入密码
666666
# 拉取镜像
docker pull registry.cn-beijing.aliyuncs.com/my/my-web:latest
# 查看本地镜像
docker images

创建Swarm集群

建立集群

# 需要--data-path-port 参数设置端口,否则默认是4789,阿里云会有问题。
docker swarm init --autolock=false --advertise-addr 172.17.94.42 --listen-addr 172.17.94.42:2377 --data-path-port 5789
# 然后显示
To add a worker to this swarm, run the following command:

docker swarm join --token SWMTKN-1-4eupxdkjxoflf2rhqfh9g89fna625he0njg-46vuoig9t90ry4uym2 172.17.94.42:2377

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

# 在其它Node节点上输入下面指令,将会加入swarm集群
docker swarm join --token SWMTKN-1-4eupxdkjxoflf2rhqfh9g89fna625he0njg-46vuoig9t90ry4uym2 172.17.94.42:2377

建立网络

# 建立一个 my-network 网络,在compose.yml配置文件里会用到,指定网络。
docker network create --scope=swarm --attachable -d overlay my-network
# 删除网络
docker network rm my-network
# 网络查看
docker network ls
# 查看网络详细信息
docker network inspect my-network

配置节点

# 节点列表
docker node ls
# 节点删除
docker node rm 节点id
# 节点退出集群
docker swarm leave
# 删除指定节点 (管理节点上操作)
docker node rm g36lvv23ypjd8v7ovlst2n3yt
# 管理节点,解散集群,需要 --force  参数
docker swarm leave --force 
# 给节点增加标签,方便在compose.yml配置时指定运行某服务。
docker node update --label-add role=node197  Node的ID

发布服务

# 发布或更新服务,在管理节点上操作,my-stack为堆名称
docker stack deploy --compose-file ./docker-compose/my-web.yml my-stack
# 移除所有服务
docker stack rm my-stack
# 查看服务是否成功启动
docker service ls
# 当前机器查看启动的服务
docker ps
# 进入docker 里,必须是已经启动的,启动失败的不行。
docker exec -it 容器名称  /bin/bash

docker-compose 简介

docker-compose 只是一个cli工具,主要用来写 yaml 配置来编排docker的,可用于单机的发布。

# 查看版本
docker-compose -v
# 直接下载替代老版本,替代前先备份
curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
# 需要设置运行权限
chmod +x /usr/bin/docker-compose
# 发布一个服务
docker-compose -f my-web.yml up -d
# 停止一个服务
docker-compose -f my-web.yml stop

兼容情况

docker-compose.yaml 中的version 则是 compose 文件格式的版本号。这里是需要和docker engine 对应的。

Compose file format Docker Engine release
Compose specification 19.03.0+
3.8 19.03.0+
3.7 18.06.0+
3.6 18.02.0+
3.5 17.12.0+
3.4 17.09.0+
3.3 17.06.0+
3.2 17.04.0+
3.1 1.13.1+
3.0 1.13.0+
2.4 17.12.0+
2.3 17.06.0+
2.2 1.13.0+
2.1 1.12.0+
2.0 1.10.0+

猜你喜欢

转载自blog.csdn.net/saperliu/article/details/129758635