Docker 容器运行在隔离的网络命名空间中,每个容器拥有独立的 IP 地址和网络堆栈。默认情况下,容器可以与同一主机上的其他容器或主机通信,但外部网络(例如主机外部的客户端或设备)无法直接访问容器内部的服务。端口映射通过将主机上的端口与容器内的端口绑定,打破这一隔离,使容器服务对外可见。
- 主机端口:主机上用于接收外部请求的端口。
- 容器端口:容器内部服务监听的端口。
- 映射关系:通过 Docker 的
-p
标志或 Docker Compose 的ports
指令,将主机端口与容器端口关联。
假设你运行了两个 Nginx 容器,均监听容器内的 80 端口。通过端口映射,你可以将它们分别映射到主机的 8080 和 8090 端口。这样,外部用户可以通过 http://localhost:8080
和 http://localhost:8090
访问不同的 Nginx 服务,避免端口冲突。
何时需要端口映射?
端口映射适用于多种场景,以下是常见的使用情况:
- 开发与调试:
在本地开发时,开发者需要通过