【问题标题】:making images communicate with each other Docker使图像相互通信 Docker
【发布时间】:2017-09-10 12:24:23
【问题描述】:

我在 docker 中创建了一个 webapp。我的 webapp 使用其他 docker 镜像,例如 redis、mariadb。这些都在本地启动并运行。现在我已经创建了我的 webapp 的图像。所以我有三个图像:webapp(未启动)、redis 和 mariadb 已启动。

当我尝试运行我的 webapp 的图像时,它无法启动.. 它无法与其他图像(redis 和 mariadb)连接。

如何使我的 webapp 图像与其他所需的图像进行通信

【问题讨论】:

    标签: image docker containers


    【解决方案1】:

    您需要创建一个 docker 网络来将所有容器连接在一起。

    docker network create net

    然后您可以使用网络选项启动容器:

    docker run --network net ...

    或者如果容器已经在运行,您可以将它们连接到网络

    docker network connect net <container-name>

    一旦你这样做了,容器就可以使用容器名称作为主机名相互通信,例如:redis、mongo ...

    【讨论】:

    • 它不工作。我有一个默认网络,它同时连接了 redis 和 mariadb。现在,当我执行“docker run --network default webapp”时,它会给出错误“无法连接到数据库”:(
    • @Abhishek 您是在命名数据库容器并将该名称用作主机名吗?您也可以尝试执行到其中一个容器并尝试使用容器名称 ping 其他容器。
    • 好的,redis 和 mariadb 已经在运行,我尝试从 mariadb 容器 ping redis,它可以 ping。但我的 webapp 无法 ping,因为它没有运行。我试图运行“docker run --network default webapp”,但它没有启动。
    • 无法获得 JDBC 连接;嵌套异常是 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 。但是,如果我正常运行 webapp,它会正常工作
    【解决方案2】:

    您可以通过使用跨链接通信来做到这一点,这也使您能够sharing environmental variables between containers

    https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/

    为了帮助您,我为您提供了图像链接在一起的 docker-compose 文件示例。在我的示例中,应用程序与databaseredis 通信。

    version: '2'
    services:
      app:
        extends:
          service: app
        volumes:
          - .:/var/www/app
        links:
          - db
          - redis
      nginx:
        extends:
          service: nginx
        links:
          - app
      redis:
        extends:      
          service: redis
      db:
        image: postgres:9
        volumes:
          - db_data:/var/lib/postgres
        restart: always
    

    另一种方法是使用网络命令: https://docs.docker.com/engine/userguide/networking/work-with-networks/

    【讨论】:

      猜你喜欢
      • 2021-11-21
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 2017-12-04
      • 2015-11-01
      • 2017-01-28
      • 1970-01-01
      • 2022-11-10
      相关资源
      最近更新 更多