You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Docker容器网络?实现Postgres隔离与Server外部可访问

Docker容器隔离与访问配置方案

核心思路

通过自定义Docker网络+端口映射控制就能完美满足你的三个需求:

  • 不给postgres做端口映射,仅让它加入自定义网络,禁止外部访问
  • 让server和postgres在同一自定义网络内,实现容器间通信
  • 给server配置端口映射,允许外部通过宿主机端口访问

具体操作步骤

  1. 创建自定义Docker网络(官方推荐,比默认桥接网络隔离性更好、解析更稳定)
docker network create app-internal-net
  1. 启动postgres容器,仅加入自定义网络,不暴露任何端口
docker run -d \
  --name postgres \
  --network app-internal-net \
  -e POSTGRES_USER=dbuser \
  -e POSTGRES_PASSWORD=dbpass \
  postgres:latest

此时postgres的5432端口仅对app-internal-net网络内的容器可见,外部(包括宿主机)无法直接访问,满足需求1。

  1. 启动server容器,加入同一自定义网络,同时映射端口到宿主机
docker run -d \
  --name server \
  --network app-internal-net \
  -p 8080:80 \  # 示例:将宿主机8080端口映射到容器的80端口,可根据实际调整
  your-server-image:tag
  • 外部用户可以通过宿主机IP:8080访问server,满足需求3
  • server容器内部可以直接用postgres:5432作为连接地址访问postgres(自定义网络支持容器名解析),满足需求2

你之前的误解澄清

你提到“在Docker网络内使用--publish仅能让端口在网络内部访问”是错误的:--publish(或-p)的作用是将容器端口映射到宿主机的端口,和容器所在网络无关,只要配置了-p,外部就能通过宿主机IP+映射端口访问容器。之前的问题可能是你测试时没有用宿主机IP访问,或者映射端口配置错误。


内容的提问来源于stack exchange,提问作者God I Am Clown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 03:27:12