使图像彼此沟通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文件示例。 在我的例子中,应用程序与database
和redis
通信。
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/