【发布时间】:2016-02-10 22:47:58
【问题描述】:
我有 PostgreSQL 和 Docker 容器的主机。 PostgreSQL 在 5432 端口上工作。 Docker 容器必须连接到数据库。如何通过 Dockerfile 或运行命令将容器与数据库连接起来? EXPOSE 5432 和 docker run -p 5432:5432 ... 没有帮助。
【问题讨论】:
我有 PostgreSQL 和 Docker 容器的主机。 PostgreSQL 在 5432 端口上工作。 Docker 容器必须连接到数据库。如何通过 Dockerfile 或运行命令将容器与数据库连接起来? EXPOSE 5432 和 docker run -p 5432:5432 ... 没有帮助。
【问题讨论】:
来自documentation 页面:
有时您需要从您的内部连接到 Docker 主机 容器。要启用此功能,请将 Docker 主机的 IP 地址传递给 使用
--add-host标志的容器。要查找主机的地址,请使用ip addr show命令。
$ HOSTIP=`ip -4 addr show scope global dev eth0 | grep inet | awk '{print \$2}' | cut -d / -f 1`
$ docker run --add-host=docker:${HOSTIP} --rm -it busybox telnet docker 5432
EXPOSE 或 -p 标志以相反的方式工作,例如将容器端口发布到您不想要的主机。
【讨论】: