最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何通过 bridge 桥接实现容器与宿主机宿主机的端口联动教程
时间:2026-06-17 09:11:52 编辑:袖梨 来源:一聚教程网
Bridge桥接通过docker0虚拟网桥和iptables NAT规则实现宿主机与容器端口联动,-p参数映射端口后,宿主机可访问容器服务,自定义bridge网络支持子网指定与容器名DNS解析。
Bridge 桥接实现容器与宿主机端口联动,本质是让宿主机的某个端口接收外部请求,并将流量准确转发到容器内部服务端口。这不需要修改内核或手动建网桥,Docker 默认 bridge 模式已内置完整支持,关键在于正确配置和理解数据流向。
确认默认 bridge 网络可用
Docker 启动后自动创建 docker0 虚拟网桥(如 172.17.0.1/16),所有未指定网络的容器默认接入此网桥。宿主机能直接 ping 通该网桥 IP,也意味着基础通信链路已就绪。
- 运行
ip addr show docker0查看网桥状态和 IP,确保 UP 状态 - 执行
docker run -d --name test-nginx nginx启动测试容器 - 在宿主机上
curl http://172.17.0.2(容器 IP)应返回 Nginx 欢迎页,验证容器可达
使用 -p 参数完成端口映射
端口映射是宿主机与容器联动最常用、最可靠的方式,由 Docker 自动配置 iptables NAT 规则实现。
- 格式为
-p [宿主机IP:]宿主机端口:容器端口[/协议],例如:docker run -p 8080:80 nginx - 宿主机访问
http://localhost:8080即可命中容器内 80 端口服务 - 若需绑定特定宿主机网卡(如仅允许局域网访问),可写成
-p 192.168.1.100:8080:80 - 多个映射用多个
-p,如-p 3306:3306 -p 33060:3306(同一容器暴露双端口)
自定义 bridge 网络增强可控性
默认 docker0 网段固定(172.17.0.0/16),若需隔离、指定子网或避免冲突,推荐创建自定义 bridge 网络。
- 创建:
docker network create --subnet=192.168.100.0/24 --gateway=192.168.100.1 mynet - 运行容器时指定:
docker run -p 9000:80 --network mynet nginx - 此时容器获得 192.168.100.x 地址,宿主机仍可通过
localhost:9000访问,且该网络内容器名可解析(如 curl web1)
验证与排错要点
端口联动失败通常源于三类问题:映射未生效、防火墙拦截、容器服务未监听。
- 检查映射是否建立:
docker port <容器名>应显示类似80/tcp -> 0.0.0.0:8080 - 确认容器内服务监听
0.0.0.0:80而非127.0.0.1:80(后者仅限容器内部访问) - 宿主机防火墙(如 ufw、firewalld)需放行对应端口,例如
sudo ufw allow 8080 - 若用 Docker Compose,确保
ports:下写法正确,如- "8080:80",而非- "8080-80"