我在docker中创建了一个webapp。我的webapp使用其他docker镜像,如redis,mariadb。这些都在本地运行。现在我已经创建了一个webapp的图像。所以我有三张图片:webapp(不是up),redis和mariadb都是up。
当我尝试运行我的webapp图像时,它无法启动..它无法与其他图像(redis和mariadb)连接。
如何让我的webapp图像与其他所需图像进行通信
答案 0 :(得分:1)
您可以使用跨链接进行操作,这样您还可以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
另一种方法是使用网络命令: 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 ......