使图像彼此沟通Docker

我已经在docker中创build了一个web应用程序。 我的web应用程序使用其他docker图像,如redis,mariadb。 这些都在本地运行。 现在我创build了一个我的webapp的图像。 所以我有三个图像:webapp(这是不起来),redis和mariadb这是起来。

当我试图运行我的web应用程序的图像,它无法启动..它无法与其他图像(redis和mariadb)连接。

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

您需要创build一个dockernetworking将所有容器连接在一起。

docker network create net

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

docker run --network net ...

或者容器已经在运行,您可以将它们连接到networking

docker network connect net <container-name>

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

您可以通过使用跨链接的通信来实现这一function,这样也可以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 

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