我正按照https://registry.hub.docker.com/_/postgres/上的官方postgres图像尝试使用docker postgres。
在文档中,它运行以下命令并使其工作:
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
docker run -it --link some-postgres:postgres --rm postgres sh -c 'exec psql -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres'
所以我的问题是$ POSTGRES_PORT_5432_TCP_PORT和$ POSTGRES_PORT_5432_TCP_ADDR来自哪里?
答案 0 :(得分:10)
它们可用于通过Docker链接机制启动的第二个容器。
来自https://docs.docker.com/userguide/dockerlinks/#environment-variables:
当链接两个容器时,Docker将设置一些环境 目标容器中的变量,以启用程序化发现 与源容器相关的信息。
...
遵循的模式是:
...
- PORT __ ADDR将仅包含网址中的IP地址(例如WEBDB_PORT_8080_TCP_ADDR = 172.17.0.82)。
- PORT __ PORT将仅包含URL中的端口号(例如WEBDB_PORT_8080_TCP_PORT = 8080)。