docker swarm 集群

1.Swarm镜像下载

分别在不同的节点上执行如下命令

docker pull swarm

2.初始化Swarm

docker swarm init --advertise-addr 192.168.62.15
# --advertise-addr 选项表示管理节点公布它的IP是多少,多网卡时需要指定。其它节点必须能通过这个IP找到管理节点。

问题:
如果你的swarm运行在默认端口,那么你就可能会遇到VXLAN默认端口4789/udp被云服务厂商阻断的问题。因为有些云服务器比如阿里云服务器UDP监听的250、4789和4790三个端口为系统保留端口,暂时不对外开放,所以必须由我们自己手动操作更改端口号。

解决方法:
这个问题在docker:v19.03之前无法直接解决。19.03版本,docker在swarm init之上增加了--data-path-port uint32 的配置项用于更改docker swarm的VXLAN端口。

# 以指定端口5789/udp为例:
docker swarm init --data-path-port 5789

3.添加集群节点

执行 第二步 初始化 会返回一条添加工作节点的命令,直接拷贝在其他节点上执行即可,如下指令:

docker swarm join --token SWMTKN-1-5vqq9j2bwq5rllsubg49cs16440v2ixkngvf25e5688i86c8qf-eawa9w8wf2m5mu9e6ovmhjuyy 192.168.62.15:2377

如果你找不到加入命令了,可以在管理节点运行下列命令找回加入命令:

#生成工作节点 添加命令
docker swarm join-token worker
#生成管理节点 添加命令
docker swarm join-token manager 

4.查看集群节点

docker node ls

5.Node Label 管理

可以根据节点类型,添加不同类型的标签,在使用stack部署server时,在指定的标签中部署

# 添加标签:
docker node update --label-add role=web node1 (hostname)
# 查看标签:
docker node inspect node1
# 删除标签:
docker node update --label-rm role node1

6.退出集群

#管理器节点离开Docker Swarm模式
docker swarm leave --force

#普通节点离开Docker Swarm模式
docker swarm leave

7.开放外部管理端口

# 编辑docker 文件
vi /usr/lib/systemd/system/docker.service
#查找ExecStart位置,然后注释
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
#修改为如下:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
#然后重启docker

附1 docker 常用指令:

=============================================================
命令                            说明
-------------------------------------------------------------
docker container ls             列出正在运行的容器
docker ps                       列出正在运行的容器
docker container ls -a          列出所有的容器
docker ps -a                    列出所有的容器
docker container start          启动容器
docker start                    启动容器
docker container stop           停止容器
docker stop                     停止容器
docker container restart        重启容器
docker restart                  重启容器
docker container rm             删除容器
docker rm                       删除容器
docker container logs           打印容器的标准输出
docker logs                     打印容器的标准输出
docker exec -it ea0cda7fe8d7    进入容器

docker export ea0cda7fe8d7 > test.tar                               导出容器
cat test.tar | docker import - test/ubuntu:v1.0                     导入容器
docker import http://example.com/exampleimage.tgz example/imagerepo 导入容器网络

附2 Centos7.7 Docker如何非root用户操作

1、创建docker组 
命令:groupadd docker

2、将当前用户加入docker组 
命令:gpasswd -a ${USER} docker  (${USER} 为需要操作docker的用户名)

3、重新启动docker服务
sudo systemctl restart docker

4、当前用户退出系统重新登陆
# 运行docker命令 docker ps 查看已运行的容器
docker ps

# 运行docker命令 docker images 查看已下载的镜像
docker images

附3 docker-compose安装

#安装方式,官网
https://docs.docker.com/compose/install/

#安装命令:
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

你可能感兴趣的:(docker swarm 集群)