【问题标题】:Link between two docker containers in a network网络中两个 docker 容器之间的链接
【发布时间】:2016-09-29 14:42:35
【问题描述】:

我在 geoserver 和 postgres 之间有一个 docker 网络。当我执行 docker inspect container name 时,我可以看到两者是相关联的。当我执行到 geoserver 容器中时,我可以 ping postgres 容器,但是当我尝试从 geoserver 容器中连接到 postgres db 时,出现错误

psql:无法将主机名postgres 转换为地址:名称或服务未知

这是我的 docker-compose 示例:

version: '2'
services:

postgres:
  image: kartoza/postgis:9.5-2.2
geoserver:
  image: geonode/geoserver
  hostname: geonode-geoserver
  links:
    - postgres:postgres
  ports:
    - "8181:8080"

我知道 docker 网络不会填充 /etc/hosts 文件。如何启用从 geoserver 容器访问数据库。

【问题讨论】:

    标签: docker docker-compose docker-networking


    【解决方案1】:

    geoserver 服务可能在postgres 服务可用之前启动。

    见https://docs.docker.com/compose/startup-order/

    【讨论】:

      【解决方案2】:

      您应该使用defined network 来解析没有链接的名称,并使用depends_on 在geoserver 之前启动postgres。

      【讨论】:

        【解决方案3】:

        在geoserver服务定义变更中:

        • postgres:postgres

        到:

        • postgres:kartoza/postgis:9.5-2.2

        您需要将服务名称与图像名称匹配

        【讨论】:

        • 如何将正在运行的容器链接到图像?难道我们不使用图像创建容器然后链接容器
        • 版本:'2' 服务:postgres:图像:kartoza/postgis:9.5-2.2 geoserver:图像:geonode/geoserver 主机名:geonode-geoserver 链接:- postgres:postgres 端口:-“8181: 8080"
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-08
        • 1970-01-01
        相关资源
        最近更新 更多