使图像与Docker相互通信

时间:2017-09-10 12:24:23

标签: image docker containers

我在docker中创建了一个webapp。我的webapp使用其他docker镜像,如redis,mariadb。这些都在本地运行。现在我已经创建了一个webapp的图像。所以我有三张图片:webapp(不是up),redis和mariadb都是up。

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

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

2 个答案:

答案 0 :(得分:1)

您可以使用跨链接进行操作,这样您还可以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/

答案 1 :(得分:1)

您需要创建一个泊坞网络,将所有容器连接在一起。

docker network create net

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

docker run --network net ...

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

docker network connect net <container-name>

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