容器网络基础
理解 Docker 的默认网络和桥接网络,以及容器如何发现彼此
容器网络基础 是 CoddyKit 上的免费 Docker & DevOps Fundamentals 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Docker & DevOps Fundamentals 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Docker & DevOps Fundamentals 课程共包含 4 节课。
为什么需要容器网络?
容器在设计上彼此隔离,这有利于安全性和可移植性。不过,应用要发挥作用,通常需要相互通信并与外部世界通信。
这正是 Docker 网络发挥作用的地方!它允许容器安全、高效地相互通信。

Docker 的默认桥接网络
如果运行容器时未指定网络,Docker 会自动将其连接到默认桥接网络。该网络的名称是 bridge。
此网络上的容器可以使用各自的 IP 地址相互通信,也可以访问互联网。
检查 Docker 网络
您可以轻松查看系统上所有可用的 Docker 网络。docker network ls 命令会列出这些网络,而 docker network inspect 会提供指定网络的详细配置。
尝试列出您的网络:
docker network ls容器 IP 地址
连接到桥接网络(默认网络或用户自定义网络)的每个容器,都会由 Docker 的内部 DNS 服务器分配一个独有的 IP 地址。
此 IP 地址允许同一网络上的其他容器访问它。下面来查看某个容器的 IP:
docker run --rm -it alpine ip a默认桥接网络中的通信
在默认的 bridge 网络中,容器可以使用分配到的 IP 地址相互通信。不过,IP 地址可能会发生变化,因此对于动态应用而言,这种方式不够可靠。
若要更好地按名称发现容器并与其通信,用户自定义桥接网络是现代且首选的方案。
用户自定义桥接网络
用户自定义桥接网络相比默认桥接网络具有显著优势:
- 自动 DNS 解析:同一用户自定义网络中的容器可以通过服务名称(即容器名称)找到彼此。
- 更好的隔离性:它们能为应用提供更好的隔离。
- 可配置性:您可以更好地控制网络设置。
演示:通过名称进行通信
让我们创建一个自定义网络,在其中运行 Nginx 网络服务器,然后使用另一个容器通过名称访问 Nginx 服务器。看看这有多简单!
docker network create my-app-net
docker run -d --name webserver --network my-app-net nginx
docker run --rm --network my-app-net alpine sh -c "apk add curl && curl -s http://webserver"
docker rm -f webserver
docker network rm my-app-net向主机公开端口
要从主机或外部网络访问容器中的服务,您需要使用 -p 或 --publish 标志“发布”或“映射”其端口。
例如,-p 8080:80 会将主机的 8080 端口映射到容器的 80 端口。
docker run -d --name my-webserver -p 8080:80 nginx
# To check, open http://localhost:8080 in your browser
# Then, clean up the container:
docker rm -f my-webserver其他网络驱动程序
除了桥接网络之外,Docker 还针对特定使用场景提供了其他网络驱动程序:
- Host:容器共享主机的网络协议栈,因此会失去隔离性。
- None:容器没有网络接口。
- Overlay:用于 Docker Swarm,使不同主机上的多个 Docker 守护进程能够相互通信。
每种驱动程序都在不同的部署场景中发挥独特作用。
网络挑战
关于 Docker 的默认 bridge 网络和用户自定义桥接网络,以下哪些说法是正确的?
回顾:网络基础
我们已经介绍了 Docker 网络的基础知识:
- 默认
bridge网络允许容器通过 IP 相互通信。 - 用户自定义桥接网络支持按名称自动进行 DNS 解析,并能提供更好的隔离性,因此更受推荐。
- 我们学习了如何让容器相互通信,以及如何将容器端口公开给主机。
- 我们还简要了解了
host和overlay等其他网络驱动程序。
理解网络对于构建相互连接的容器化应用至关重要。接下来,我们将深入了解如何使用 Docker 卷管理持久化数据!
常见问题解答
「容器网络基础」课时是免费的吗?
是的 — 「容器网络基础」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Docker & DevOps Fundamentals 课程的其余内容,请升级到 CoddyKit PRO。 Docker & DevOps Fundamentals 课程共包含 4 节课。
「容器网络基础」这节课中我会学到什么?
理解 Docker 的默认网络和桥接网络,以及容器如何发现彼此 你通过在浏览器中直接运行的动手代码来练习 Docker & DevOps Fundamentals,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Docker & DevOps Fundamentals 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Docker & DevOps Fundamentals 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「容器网络基础」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Docker & DevOps Fundamentals 课中编写并运行代码吗?
能。每节 Docker & DevOps Fundamentals 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。