docker swarm networks
网段冲突问题解决方案
根据搜索结果,以下是关于如何更改Docker Ingress网络默认子网范围的解决方案:
-
首先,我们需要确认当前Docker Ingress网络的默认子网范围。可以使用以下命令检查网络配置信息:
docker network inspect ingress
[1]。 -
如果默认子网范围与您的计算机子网范围冲突,您可以尝试以下方法来更改Docker Ingress网络的子网范围:
- 方法一:使用Docker Swarm命令行选项来指定子网范围。在初始化或加入Docker Swarm时,可以使用
--default-addr-pool
选项来指定子网范围。例如:docker swarm init --default-addr-pool 192.168.0.0/16
[1]。 - 方法二:编辑Docker的守护进程配置文件
daemon.json
来指定子网范围。您可以使用以下步骤进行操作:-
使用文本编辑器打开
/etc/docker/daemon.json
文件(在Windows上是C:\ProgramData\Docker\config\daemon.json
)。 -
添加以下内容到文件中:
{
"default-address-pools": [
{"base":"192.168.0.0/16","size":24}
]
}将
192.168.0.0/16
替换为您想要的子网范围。 -
保存文件并重启Docker服务,以使更改生效。在Linux上,可以使用
sudo systemctl restart docker
命令来重启Docker服务,在Windows上,可以通过Docker桌面界面的"Troubleshoot"选项来重启Docker Desktop [2]。
-
- 方法一:使用Docker Swarm命令行选项来指定子网范围。在初始化或加入Docker Swarm时,可以使用
请注意,更改Docker网络的子网范围可能会影响到已经运行的容器和网络连接,请谨慎操作并确保备份重要数据。
Learn more:
- networking - How to change ip address range of docker swarm ingress network - Stack Overflow
- How to change the default docker subnet IP range
- Changing Docker's default subnet IP range | cylab.be
宿主机与容器不通问题
# 方式一:添加路由
# route add -net 192.168.1.0 netmask 255.255.255.0 gw 172.20.0.1 dev docker_gwbridge # dev 是用来指定网络接口的参数。它用于指定要添加路由的网络接口设备。
route add -net <容器IP网段> netmask <容器IP网段的子网掩码> gw <docker_gwbridge的网关IP> dev docker_gwbridge
## 查看路由
route -n
## 更多操作
# 端口转发问题(上面解决了路由的问题,若还有端口访问不通,则按下面方式解决)
# 查看nat转发的规则
iptables -t nat -nvL
# 添加nat转发规则(实现宿主机访问容器中未开放的端口(即docker run时未添加-p参数))
iptables -t nat -A DOCKER -p tcp -m tcp --dport 8088 -j DNAT --to-destination 10.0.0.2:8088
# 删除nat
## 查看规则编号
iptables -t nat -nL --line-number
## 删除编号
iptables -t nat -D DOCKER 4