簡體   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