運行容器時,最常發生需要互相溝通的問題,容器與容器間的溝通,與虛擬機相同,只要網段一致,即可直接呼叫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
檔案,且互相溝通案例