在 Debian 上使用 Docker 时,“设置网络”通常涉及容器网络模式选择、自定义网络、端口映射、以及宿主机网络配置。下面按使用场景系统说明。
Docker 安装后默认有 3 种网络:
docker network ls
bridge:默认,容器通过 NAT 上网host:直接使用宿主机网络none:无网络docker run -d -p 8080:80 --name web nginx
8080 → 容器 80http://<宿主机IP>:8080docker port web
docker network create mynet
docker run -d --net=mynet --name db mysql
docker run -d --net=mynet --name app myapp
✅ 同一网络内可用容器名互相访问(DNS 解析)
docker run -d --network host nginx
特点:
cat /proc/sys/net/ipv4/ip_forward
若为 0:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
Debian 12 默认使用 nftables
查看:
nft list ruleset
Docker 会自动写 iptables 规则
⚠️ 不要手动清空 Docker 创建的链
允许端口示例(UFW 不推荐与 Docker 混用):
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
docker network create --subnet=172.20.0.0/16 mynet
docker run -d --net=mynet --ip=172.20.0.10 nginx
version: "3"
services:
web:
image: nginx
ports:
- "8080:80"
networks:
- mynet
db:
image: mysql
networks:
- mynet
networks:
mynet:
# 容器是否能上网
docker exec -it web ping 8.8.8.8
# 查看容器 IP
docker inspect web | grep IPAddress
# 查看网络详情
docker network inspect mynet
| 场景 | 推荐方式 |
|---|---|
| 单服务暴露端口 | bridge + -p |
| 多容器通信 | 自定义 bridge |
| 高性能 / 少隔离 | host |
| 生产环境 | 自定义网络 + compose |
如果你能说明:
我可以直接给你对应配置命令。