繁体   English   中英

docker-compose简单网络演示

[英]docker-compose simple networking demo

我是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 ping app1,反之亦然吗?

在亚马逊Linux上运行。 docker-compose版本1.23.2,内部版本1110ad01

您需要向使它们保持运行的Python容器中添加一些内容(通过CMD编写的脚本),在端口上侦听的内容或简单的循环。

现在,它们在启动后立即终止,没有任何可Ping的操作。 (整个容器在其命令完成时关闭)

在docker-composer.yaml文件中定义服务可能还不够,好像其中一项服务将关闭而另一项服务将没有有关其IP地址的信息。

但是,您可以在它们之间创建依赖关系,例如,这将允许实例在启动app0时自动启动app1服务。

设置以下配置:

version: '3'

services:
  app0:
    build:
      context: ./
      dockerfile: Dockerfile0
    depends_on:
      - "app1"
  app1:
    build:
      context: ./
      dockerfile: Dockerfile1

如果您希望服务之间相互通信,这是一个好习惯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM