Docker 网络

网络驱动

驱动使用场景说明
bridge独立容器默认驱动单主机隔离网络
host性能敏感型应用共享主机网络栈,无隔离
overlaySwarm 多主机加密节点间流量
none完全隔离容器仅有回环接口

网络管理

# 列出网络 docker network ls # 创建自定义 bridge 网络 docker network create \ --driver bridge \ --subnet 172.20.0.0/16 \ my-network # 检查网络 docker network inspect my-network # 连接/断开运行中的容器 docker network connect my-network my-container docker network disconnect my-network my-container # 删除网络 docker network rm my-network docker network prune # 删除所有未使用

端口绑定

# 发布指定端口 docker run -p 8080:80 nginx # 绑定到指定主机 IP docker run -p 127.0.0.1:8080:80 nginx # 随机分配主机端口 docker run -P nginx # 多端口 docker run -p 80:80 -p 443:443 my-server # 查看端口映射 docker port my-container

DNS 与容器发现

# 同一用户自定义网络上的容器可通过名称互相解析 docker network create app-net docker run -d --name db --network app-net postgres:16 docker run -d --name api --network app-net myapp # api 可通过主机名 "db" 访问数据库 # 自定义 DNS docker run --dns=8.8.8.8 --hostname=my-host nginx # 注意:默认 bridge 网络不支持 DNS, # 请始终使用用户自定义网络进行服务发现

Docker Compose 网络

services: web: image: nginx ports: ["80:80"] networks: [frontend, backend] api: image: myapi networks: [backend] db: image: postgres:16 networks: [backend] networks: frontend: driver: bridge backend: driver: bridge internal: true # 禁止此网络访问互联网