全书目录

第十篇:Docker 完全指南 —— 国际港口集装箱宇宙

第十章:网络 —— 货柜之间怎么通话,外部怎么找到它们

1 分钟 444 字 第 156 / 962 个阅读单元

Docker 网络如果没想清楚,很多人就会把它理解成:

  • “端口映射”
  • “能访问就行”
  • “反正都 localhost”

这不够。

Docker 官方文档把网络分成两层心智:

  • 容器之间怎么互联
  • 外部世界怎么进入容器
#1. 默认网络驱动:bridge

Docker 官方文档说明:

  • 如果你不指定驱动,常见默认是 bridge
  • 同一宿主机上的容器通信,最常见就是桥接网络
#2. 用户自定义 bridge 很重要

官方文档明确强调:

用户自定义 bridge 网络 更适合多个容器在同一宿主机协作。

bash
docker network create app-net

docker run -d --name db --network app-net postgres:17
docker run -d --name api --network app-net my-api:1.0.0

这时候 api 容器通常就可以通过服务名或容器名去访问 db

#3. 端口发布是对外开放,不是容器间通信
bash
docker run -d -p 8080:80 nginx

这表示:

  • 外部访问宿主机 8080
  • 会转发到容器 80

但容器和容器之间如果在同一网络上,本来就可以互相通信,不一定需要 -p

#4. 网络驱动的直觉

Docker 官方文档列出常见驱动:

  • bridge
  • host
  • overlay
  • macvlan
  • ipvlan

对大多数单机项目,你先记三层就够:

text
bridge   → 单机多容器协作默认主力
host     → 直接共用宿主机网络,隔离更弱
overlay  → 多主机 / Swarm 跨节点网络