1. Docker 网络基础概念
当我们在本地机器上启动一个Docker容器时,网络连接就已经自动建立了。但你是否想过,这些容器是如何与外界通信的?为什么有些容器能互相访问而有些不能?这就是Docker网络要解决的核心问题。
Docker网络本质上是一套虚拟网络系统,它允许容器之间、容器与宿主机之间以及容器与外部网络之间进行通信。与传统物理网络不同,Docker网络是完全软件定义的,这意味着我们可以按需创建、配置和销毁网络,而无需接触任何物理网络设备。
在默认情况下,Docker会为每个容器创建一个虚拟网络接口,并分配一个IP地址。这个IP地址通常是在172.17.0.0/16这个私有地址范围内。同时,Docker还会在宿主机上创建一个名为docker0的虚拟网桥,所有容器都通过这个网桥相互连接。
提示:可以使用
ifconfig或ip addr命令查看宿主机上的网络接口,其中docker0就是Docker的默认网桥。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Docker 网络驱动类型
2.1 bridge网络模式
bridge(桥接)模式是Docker默认的网络模式。在这种模式下:
- Docker会创建一个名为docker0的Linux网桥
- 每个容器会获得一个独立的网络命名空间
- 容器通过veth pair(虚拟以太网设备对)连接到docker0网桥
- 容器之间可以通过IP地址相互通信
创建和使用bridge网络的典型命令:
bash复制# 创建一个自定义bridge网络
docker network create my-bridge-network
# 运行容器并连接到该网络
docker run -d --name container1 --network my-bridge-network nginx
docker run -d --name container2 --network my-bridge-network nginx
# 测试容器间通信
docker exec -it container1 ping container2
2.2 host网络模式
host模式让容器直接使用宿主机的网络栈,这意味着:
- 容器不会获得独立的网络命名空间
- 容器直接使用宿主机的IP地址和端口
- 网络
