$ POSTGRES_PORT_5432_TCP_ADDR和$ POSTGRES_PORT_5432_TCP_PORT来自哪里?

时间:2014-12-27 05:51:09

标签: docker

我正按照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来自哪里?

1 个答案:

答案 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)。
  •