You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker网络工作原理及IP分配、本地访问解析技术咨询

Docker容器IP分配与本地访问解析

Great question—let’s break this down step by step, since Docker’s networking can feel a bit opaque at first!

一、容器IP的来源

Docker manages its own internal networking stack, and here’s how it assigns IPs to containers:

  • 默认桥接网络: 安装Docker时,它会自动创建一个名为docker0的桥接网络,带有一个私有子网(默认通常是172.17.0.0/16)。除非你指定自定义网络,否则容器默认都会连接到这个网络。
  • IP地址管理(IPAM): Docker内置的IPAM组件会跟踪子网中已使用的IP。当你启动新容器时,它会从这个池中获取下一个未使用的IP,分配给容器的虚拟网络接口。
  • 自定义网络: 如果你用docker network create --subnet 192.168.1.0/24 my-custom-net创建自己的网络,Docker会从你指定的子网中分配IP,而非默认池。自定义网络还自带更优的容器间DNS解析能力,算是额外福利。
  • 虚拟网络接口: 每个容器都会获得一个虚拟网络接口(veth pair),一端在容器内部(通常是eth0),另一端连接到主机的桥接接口——这就是容器能与主机、其他容器通信的基础。

二、本地访问容器时的IP识别逻辑

当你在浏览器输入<IP>:<PORT>时,具体的识别逻辑取决于你用的是哪个IP:

场景1:使用容器的私有IP

  • 由于容器连接到Docker桥接(主机上的一个虚拟网络接口),你的电脑会识别这个私有IP属于本地网络段。主机的路由表中有一条条目,会将该子网的流量导向Docker桥接,请求直接转发到容器的虚拟接口。
  • 注意:这种方式仅在Docker运行的同一主机上有效。如果你从本地网络的另一台机器尝试访问容器私有IP,默认情况下是行不通的——这些IP在主机外不可路由,除非你配置额外的网络规则。

场景2:使用主机的公网/私有IP(配合端口映射)

  • 如果你启动容器时用了端口映射,比如docker run -p 8080:80 my-app,Docker会在主机上设置iptables规则。这些规则会拦截主机8080端口的入站流量,转发到容器的IP和80端口。
  • 当你输入localhost:8080或<host-ip>:8080时,电脑先将IP解析到自己的主机,之后iptables规则会在后台处理流量重定向,把请求送到对应的容器。

内容的提问来源于stack exchange,提问作者mux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:07:22