Docker-compose networks 的例子

klvchen發表於2018-06-29

今天實驗了下 docker 下的網路設定,記錄一下過程,以免後面忘記。
(系統:Centos 7.4 ,docker 版本:18.03.1-ce, docker-compose version 1.18.0)

cat docker-compose.yml 
version: `3`
services: 
  test1:
    image: busybox:latest         # 映象為 busybox
    entrypoint:                   # 容器啟動後執行 top 命令,使容器沒法立即退出
     - top
    networks:
      backend:          # 使用指定的網路 backend, 並且設定網路別名為 test1,
        aliases:        # 設定網路別名後,可以在其他容器中 ping test1 訪問到該容器
          - test1

  test2:
    image: busybox:latest
    entrypoint:
     - top
    networks:
      backend:
        aliases:
          - test2

networks:
  backend:

啟動

docker-compose up -d

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
4d05ceb2088d        busybox:latest      "top"               5 seconds ago       Up 4 seconds                            ibaboss_test2_1
f4ccafa24664        busybox:latest      "top"               5 seconds ago       Up 4 seconds                            ibaboss_test1_1

docker exec -it 4d05ceb2088d /bin/sh
/ # ping test1
PING test1 (172.19.0.2): 56 data bytes
64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.061 ms
64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.062 ms

ping ibaboss_test1_1
PING ibaboss_test1_1 (172.19.0.2): 56 data bytes
64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.045 ms
64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.056 ms
64 bytes from 172.19.0.2: seq=2 ttl=64 time=0.061 ms

# 在網路中可以通過 容器名字或者網路的別名 進行通訊

Compose 的容器名稱格式是:<專案名稱><服務名稱><序號>
雖然可以自定義專案名稱、服務名稱,但是如果你想完全控制容器的命名,可以使用這個標籤指定:
container_name: app

cat docker-compose_v1.yml 
version: `3`
services: 
  test1:
    image: busybox:latest
    entrypoint:
     - top
    container_name: test1
    networks:
     - backend

  test2:
    image: busybox:latest
    entrypoint:
     - top
    container_name: test2
    networks:
     - backend

networks:
  backend:

啟動

docker-compose -f docker-compose_v1.yml up -d

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
132859fc77c2        busybox:latest      "top"               About a minute ago   Up About a minute                       test2
cd0a78dc9bd4        busybox:latest      "top"               About a minute ago   Up About a minute                       test1

docker exec -it 132859fc77c2 ping test1
PING test1 (172.19.0.2): 56 data bytes
64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.070 ms
64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.068 ms
64 bytes from 172.19.0.2: seq=2 ttl=64 time=0.059 ms

相關文章