自定义网络与 DNS
约 719 字大约 2 分钟
布欧-Lewyon
2026-05-15
首页 › Docker › 网络(在新窗口打开) › 自定义网络与 DNS
docker network 命令
# 创建网络
docker network create --driver bridge mynet
# 创建网络时指定子网
docker network create \
--driver bridge \
--subnet 172.20.0.0/16 \
--ip-range 172.20.10.0/24 \
--gateway 172.20.0.1 \
mynet
# 列出网络
docker network ls
# 查看网络详情
docker network inspect mynet
# 删除网络
docker network rm mynet
# 清理未使用的网络
docker network prune内置 DNS
自定义 bridge 网络的容器自带 DNS 解析能力:
# 启动两个容器到同一网络
docker run -d --network mynet --name web nginx:alpine
docker run -d --network mynet --name api node:20-alpine sleep 3600
# DNS 解析测试
docker exec api getent hosts web
# 172.20.0.2 web
docker exec api ping -c 1 web
# PING web (172.20.0.2): 56 data bytesDNS 解析规则:
- 容器名 → IP 地址。
- 也支持
服务名解析(在 Compose 场景中)。 - 同一网络下的容器才能解析彼此的名字。
- 不同网络即使在同一宿主机也不能通过名字解析。
网络别名
# 为容器设置网络别名
docker run -d \
--network mynet \
--network-alias db \
--name mysql \
mysql:8.4
# 其他容器可以通过 db 访问
docker exec api ping db容器主机名
# 设置容器的主机名(默认等于容器 ID)
docker run -d \
--network mynet \
--hostname api-server \
--name api \
alpine sleep 3600
docker exec api hostname
# api-server网络配置查看
# 查看容器的 DNS 配置
docker inspect api --format '{{json .NetworkSettings.Networks}}'
# 查看 /etc/resolv.conf
docker exec api cat /etc/resolv.conf
# 默认使用宿主机的 DNS 配置
# 自定义 DNS
docker run -d --dns 8.8.8.8 --dns 114.114.114.114 alpine sleep 3600实际场景:多网络拓扑
# 开发环境网络拓扑
docker network create frontend
docker network create backend
docker network create monitoring
# Web 服务器(连接 frontend + backend)
docker run -d \
--network backend \
--name nginx \
nginx:alpine
docker network connect frontend nginx
# API 服务器(连接 backend + monitoring)
docker run -d \
--network backend \
--name api \
myapp:latest
docker network connect monitoring api
# 数据库(仅 backend)
docker run -d \
--network backend \
--name mysql \
mysql:8.4
# Prometheus(仅 monitoring)
docker run -d \
--network monitoring \
--name prometheus \
prom/prometheus注意事项
- 容器启动后可以动态连接到其他网络(
docker network connect),无需重建。 - 默认 bridge 网络不支持 DNS 解析,自定义网络才支持。
- 自定义网络在删除前需确保没有容器连接。
小结
docker network create创建自定义 bridge 网络,支持--subnet、--gateway等高级选项。- 自定义网络提供内置 DNS,容器通过容器名互相解析 IP。
- 一个容器可同时连接到多个网络,实现网络隔离与互通并存的拓扑。
- 网络别名(
--network-alias)和主机名(--hostname)提供灵活的 DNS 解析方式。 - 默认 bridge 网络不支持 DNS 解析,生产环境应用自定义网络。
上一节:端口映射与容器互联 下一节:Compose 文件与服务定义
