Docker网络核心是网络命名空间隔离与虚拟设备协同,通过veth pair、网桥、iptables和netns实现容器互通、上网及被访问。

Linux Docker 的网络机制核心在于 网络命名空间隔离 和 虚拟网络设备协同。它不依赖外部网络硬件,而是通过内核级虚拟化(如 veth pair、网桥、iptables、netns)构建出灵活、可复用的容器网络环境。理解这一点,就能看懂为什么容器能互通、能上网、也能被访问。
这是 Docker 启动容器时自动使用的模式,底层依赖 docker0 虚拟网桥:
eth0),另一端挂到 docker0 上(如 vethabc123)docker0 自带 IP(如 172.17.0.1/16),作为所有 bridge 容器的默认网关172.17.x.x 地址互 ping;但外部无法直连容器 IP,必须靠 -p 端口映射 + iptables DNAT 转发docker0 访问容器,容器也可通过 docker0 访问宿主机和外网(经 SNAT)容器直接复用宿主机的网络栈,不创建独立 netns:
ip a 显示的是宿主机所有网卡(ens33、lo 等),没有 eth0 或 veth
0.0.0.0:80 就等同于宿主机暴露 80 端口22、80)的服务比默认 bridge 更安全、更可控,支持内建 DNS 和子网划分:
docker network create --subnet 10.10.0.0/24 --gateway 10.10.0.1 mynet
docker network connect 手动添加第二张网卡docker run --network mynet --ip 10.10.0.10 nginx
搞清“谁访问谁”是配置成败的前提:
docker0 网桥(如 ping 172.17.0.2)或映射端口(如 curl localhost:8080)http://192.168.1.100:8080),前提是宿主机防火墙放行该端口host.docker.internal(Docker 20.10+ 默认启用)或宿主机真实 IP(非 127.0.0.1)基本上就这些。不复杂但容易忽略——比如以为容器 IP 能被局域网直接访问,其实它只是 docker0 内部地址;又比如用了 host 模式却忘了检查端口占用。理清命名空间、veth、网桥、NAT 这四层关系,Docker 网络配置就稳了一大半。
以上就是Linux Docker网络机制解析_Linux容器网络配置说明的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号