数智应用帮
柔彩主题三 · 更轻盈的阅读体验

容器怎么联网:一步步搞懂Docker网络配置

发布时间:2025-12-13 18:02:47 阅读:309 次
{"title":"ref="/tag/439/" style="color:#3D6345;font-weight:bold;">容器怎么联网:一步步搞懂Docker网络配置","content":"

容器怎么联网

很多人刚开始用 Docker 的时候都会遇到一个问题:我跑了一个容器,但它好像上不了网,ping 不通外网,也访问不了其他服务。其实这是网络配置的问题,容器不是不能联网,而是要看你怎么“接线”。

你可以把容器想象成一台刚装好系统的虚拟机,系统是干净的,网络也得自己配。Docker 其实已经帮我们做了不少默认工作,比如自动分配 IP、设置 NAT 规则,让容器能通过宿主机上网。

默认桥接网络就够用了

Docker 安装后会自动创建一个叫 docker0 的虚拟网桥。你每次运行容器不加参数时,它就自动连到这个桥上。比如:

docker run -d --name mynginx nginx

这时候容器会从 Docker 的默认子网(通常是 172.17.0.0/16)里分一个 IP,通过宿主机的网络接口做地址转换(SNAT),就能访问外网了。你可以进容器里试试:

docker exec -it mynginx ping 8.8.8.8

如果能通,说明出站联网没问题。

让外部访问容器服务

光容器能上网还不够,很多时候我们希望别人能访问容器里的服务,比如 Web 应用。这就得靠端口映射。

启动容器时加上 -p 参数,把容器端口“映射”到宿主机:

docker run -d -p 8080:80 --name webserver nginx

这样访问宿主机的 8080 端口,流量就会被转发到容器的 80 端口。相当于在路由器上做了一条端口转发规则,家里的设备对外提供服务也是这么干的。

自定义网络更灵活

多个容器之间要互相通信,比如前端连后端、应用连数据库,用默认桥接也能通,但名字解析不方便。这时候可以创建自定义桥接网络:

docker network create mynet
docker run -d --network mynet --name backend myapp:latest
docker run -d --network mynet --name frontend -p 80:80 nginx

在同一个自定义网络里的容器,可以直接用容器名当主机名来通信。比如在 frontend 里执行 ping backend 就能通,不用记 IP 地址。

检查网络问题的小技巧

如果容器上不了网,先别急着重装。几个常用命令帮你定位问题:

查看容器 IP 和网络配置:

docker inspect mycontainer | grep IPAddress

看容器的路由表:

docker exec mycontainer ip route

测试 DNS 是否正常:

docker exec mycontainer nslookup google.com

有时候问题出在 DNS 配置上,可以在 daemon.json 里指定 DNS 服务器:

{
"dns": ["8.8.8.8", "114.114.114.114"]
}

改完重启 Docker 服务即可。

容器联网其实没那么玄乎,理解了它背后的网络模型,就跟配置家用路由器一样,该开的口子打开,该连的线接好,自然就能通。”,"seo_title":"容器怎么联网 - Docker网络配置详解 | 数智应用帮","seo_description":"想让Docker容器正常上网和被访问?这篇文章手把手教你配置容器网络,包括端口映射、自定义网络和常见问题排查方法。","keywords":"容器怎么联网, docker网络配置, 容器端口映射, docker自定义网络, 容器无法上网"}