Docker主机跨主机互联方式
# 环境
主机 | ip |
---|---|
docker1 | 192.168.31.178 |
docker2 | 192.168.31.188 |
前提:
- 安装好 docker
- 关闭防火墙和 selinux
# 两个主机添加内核转发参数
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
1
2
3
4
5
2
3
4
5
# 修改 Docker 容器内部 ip
# docker1 指定为 172.17.2.1/24 网络
cat /etc/docker/daemon.json
{
"bip":"172.17.2.1/24"
}
# docker2 指定为 172.17.3.1/24 网络
cat /etc/docker/daemon.json
{
"bip":"172.17.3.1/24"
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 添加路由规则
# docker1
route add -net 172.17.3.0 netmask 255.255.255.0 gw 192.168.31.188
systemctl restart docker
# docker2
route add -net 172.17.2.0 netmask 255.255.255.0 gw 192.168.31.178
systemctl restart docker
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 测试
# docker1
docker run -it -d --name centos8_1 centos:centos8
docker exec -it centos8_1 /bin/bash
1
2
3
4
2
3
4
# docker2
docker run -it -d --name centos8_2 centos:centos8
docker exec -it centos8_2 /bin/bash
1
2
3
2
3
docker1
# 结论:
两个主机中的 docker 容器可以通过 ip 访问,但是没有办法通过主机名访问
上次更新: 2024/12/26, 16:18:59