为什么选择swarm,而没有选择更加成熟的k8s,主要是自己对k8s并没有了解太多,而我的需求只是实现不同主机之间的容器能够正常通信。看过docker官方文档之后,感觉用swarm结合overlay网络可以实
现。故选择了swarm

一、环境准备

准备两台机器

主机名称

主机IP

主机用途

server1

140.143.112.111

运行swarm manage节点

server2

140.143.112.112

运行swarm worker节点

二、配置

2.1 开放相关端口 2377/tcp 7946/tcp 7946/udp 4789/udp

在server1和server2上分别执行如下命令

$ firewall-cmd --add-port={2377/tcp,7946/tcp,7946/udp,4789/udp} --permanent
$ firewall-cmd --reload
$ firewall-cmd --list-port

若提示“FirewallD is not running”,请先开启firewall防火墙

docker自定义网络 容器名dns偶现无法解析 docker swarm dnsrr_IP

2.2 swarm配置

2.2.1 在server1上对swarm进行初始化,分两种情况:
  1. 所有主机在同一局域网
# 直接执行下面命令
docker swarm init
  1. 若不在一个局域网内,则指定连接当前服务器地址
# docker swarm init --advertise-addr [server1的公网IP]
docker swarm init --advertise-addr 140.143.112.111

docker自定义网络 容器名dns偶现无法解析 docker swarm dnsrr_docker_02


3. swarm初始化成功之后,控制台会打印出其他主机想加入此swarm所需要执行的命令(如上图所示),也可通过以下命令查看

# 添加一台主机作为worker时要执行的命令,可在manager节点上通过下面命令查看
docker swarm join-token worker
# 添加一台主机作为manager时要执行的命令,可在manager节点上通过下面命令查看
docker swarm join-token manager

执行之后,控制台会打印出相应的命令,如下图所示

docker自定义网络 容器名dns偶现无法解析 docker swarm dnsrr_docker_03

2.2.1 将server2加入到server1的swarm集群中

分两种情况:

  1. 将server2作为worker节点加入到swarm集群中,执行如下命令
# 直接将manager控制台中的命令在server2上执行即可
docker swarm join --token SWMTKN-1-*******-******* 140.143.112.111:2377

docker自定义网络 容器名dns偶现无法解析 docker swarm dnsrr_docker_04


2. 将server2作为manager节点加入到swarm集群中,执行如下命令

# 直接将manager控制台中的命令在server2上执行即可
docker swarm join --token SWMTKN-1-*******-******* 140.143.112.111:2377

docker自定义网络 容器名dns偶现无法解析 docker swarm dnsrr_docker_05

2.3 overlay网络配置

创建网络并指定ip段

  1. 在manager节点(server1)上,执行如下命令,创建overlay网络
# 其中的 subnet指定子网配置
# 其中gateway指定网关配置
  docker network create \
  --driver overlay \
  --subnet=10.11.0.0/16 \
  --gateway=10.11.0.2 \
  --attachable overlay-network

docker自定义网络 容器名dns偶现无法解析 docker swarm dnsrr_IP_06


2. 查看overlay网络是否创建成功

docker network ls

docker自定义网络 容器名dns偶现无法解析 docker swarm dnsrr_docker_07


3. 查看swarm集群是否创建成功

docker node ls

docker自定义网络 容器名dns偶现无法解析 docker swarm dnsrr_网络配置_08


所有配置全部来源于官网:

overlay网络配置至此,swarm集群搭建完成!