在Docker实战中,docker0
是 Docker 安装后自动创建的一个虚拟网桥,它用于连接宿主机与容器。默认情况下,当容器启动时,会分配一个从 docker0
网桥子网段中的 IP 地址,并通过该网桥与其他容器以及宿主机通信。
以下是一些配置 docker0
网桥的常见操作:
1. 查看 docker0 网桥信息
ip addr show docker0
或
ifconfig docker0
2. 修改 docker0 网桥的IP地址和子网掩码(不推荐直接修改,通常应通过自定义网络实现)
- 直接修改可能需要重启Docker服务并影响正在运行的容器,但在实际场景中,我们更倾向于创建自定义的网桥或网络。
3. 更改 Docker 默认网络子网
方法一:
可以通过修改 Docker 配置文件来更改默认网络的子网范围。在 /etc/docker/daemon.json
文件中添加如下内容:
{
"default-address-pools": [
{
"base": "172.20.0.0/16",
"size": 24
}
]
}
然后重启 Docker 服务:
sudo systemctl restart docker
方法二:
对于每个新创建的容器,Docker 会根据其内部的逻辑分配一个未使用的子网。若要为所有新的bridge网络指定不同的子网,可以创建自定义网络,并指定所需的子网范围:
docker network create --driver bridge --subnet=192.168.10.0/24 my_custom_network
4. 删除并重新创建 docker0 网桥(仅限特殊情况)
在极少数需要完全重置 docker0
网桥的情况下,可以执行以下步骤:
# 停止 Docker 服务
systemctl stop docker
# 删除 docker0 网桥
ip link set dev docker0 down
brctl delbr docker0
# 重启 Docker 服务,这将重新创建 docker0 网桥
systemctl start docker
但请注意,此操作可能会对已有的容器网络产生影响,除非有特殊需求,一般并不建议这样做。
5. 创建自定义网桥替代 docker0
在生产环境中,如果需要更精细的网络控制,通常会创建自定义的网桥,而不是直接修改 docker0
。例如,使用 docker network create
命令创建自定义网络,并设置特定的IP范围、DNS服务器等属性。这样,可以在不影响其他容器网络的前提下,管理特定应用容器的网络环境。