運行容器時,最常發生需要互相溝通的問題,容器與容器間的溝通,與虛擬機相同,只要網段一致,即可直接呼叫IP或容器名稱。因此,這邊示範如何在不同的容器中,讓他們有相同的網段。

## web_service 表示該段名稱
$ docker network create web_service
## 建置完畢後,可以透過以下指令查看
$ docker network ls
另外可以透過前幾天介紹的 Pontainer 查看網段IP,網路會因為建立順序而有不同網段,基本上 172.17.0.x 網段會留給 Docker 使用,所以新網段會從 172.18.0.x 順延,如下圖 web_service 的網段為 172.18.0.x
將以下兩個不同路徑的 docker-compose.yml 跑起來後,在開啟redisAdmin 頁面,即可看見成果
.
├── Redis
│   └── docker-compose.yml
└── RedisAdmin
    ├── config.inc.php
    └── docker-compose.yml
version: '3.1'
services:
  redis6379:
    image: redis:alpine
    container_name: Test_6379
    restart: always
    ports: 
      - 6379:6379
    # 指定使用那一條網路
    networks:
      - web_service
# 表示服務用的網絡是用外部的網路,並且搜尋名稱為「web_service」 
# 搜尋成功後會自動與「redis」服務相連
# 若搜尋失敗,則會顯示該錯誤
# ERROR: Please create the network manually using `docker network create web_services` and try again.
networks:
  web_service:
    external: true
version: '3.1'
services:
  redis-admin:
    image: erikdubbelboer/phpredisadmin
    container_name: redisAdminer
    restart: always
    ports:
        - 8080:80
    volumes: 
      - ./config.inc.php:/src/app/includes/config.inc.php
    # 指定使用那一條網路
    networks:
      - web_service
# 表示服務用的網絡是用外部的網路,並且搜尋名稱為「web_service」 
# 搜尋成功後會自動與「redis-admin」服務相連
# 若搜尋失敗,則會顯示該錯誤
# ERROR: Please create the network manually using `docker network create web_services` and try again.
networks:
  web_service:
    external: true
<?php
include 'config.sample.inc.php';
$config['servers'] = array();
$config['servers'][] = array(
  'name'   => "Test_6379", # 顯示在 RedisAdmin 頁面上的名稱,可以隨意亂取名
  'host'   => "Test_6379", # Redis 容器名稱
  'port'   => "6379",      # Redis Port
  'filter' => '*',
);
?>
以上完成不同的 docker-compose.yml 檔案,且互相溝通案例