【发布时间】:2019-06-18 18:02:26
【问题描述】:
我是 docker 和 docker-compose 的新手,我正在尝试了解 docker 中的网络。我有以下 docker-compose.yml 文件
version: '3'
services:
app0:
build:
context: ./
dockerfile: Dockerfile0
app1:
build:
context: ./
dockerfile: Dockerfile1
Dockerfiles 看起来像
FROM: python:latest
我正在使用 python 图像,因为这就是我想要的实际用例。
我跑
docker-compose build
docker-compose up
输出:
Building app0
Step 1/1 : FROM python:latest
---> 3624d01978a1
Successfully built 3624d01978a1
Successfully tagged docker_test_app0:latest
Building app1
Step 1/1 : FROM python:latest
---> 3624d01978a1
Successfully built 3624d01978a1
Successfully tagged docker_test_app1:latest
Starting docker_test_app0_1 ... done
Starting docker_test_app1_1 ... done
Attaching to docker_test_app0_1, docker_test_app1_1
docker_test_app0_1 exited with code 0
docker_test_app1_1 exited with code 0
根据我的阅读,docker-compose 将创建一个默认网络,两个容器都将连接到该网络并且应该能够通信。我想提出一个非常简单的演示,例如像这样使用 ping:
docker-compose run app0 ping app1
输出:
ping: app1: Name or service not known
我是否误解了 docker-compose 网络的工作原理?我是否应该能够从 app0 ping app1,反之亦然?
在亚马逊 Linux 上运行。 docker-compose 版本 1.23.2,build 1110ad01
【问题讨论】:
-
这些 Python 容器是否保持运行/启动某种守护程序以保持容器运行?否则,如果它在启动后立即终止,则无需 ping。
-
@TobiasK。是的,这就是问题所在。我在 app1 中创建了一个命令,该命令运行一个无限循环的脚本,然后我能够从 app0 ping app1!谢谢!
-
太棒了。也将其添加为答案:)
标签: docker docker-compose