9.4 容器互聯

容器之間的網路通訊是 Docker 網路的核心功能之一。本節介紹容器互聯的幾種方式。

9.4.1 同一網路內的容器

同一自定義網路內的容器可以直接透過容器名通訊,這是推薦的容器互聯方式:

## 建立網路

$ docker network create app-net

## 啟動應用和數據函式庫

$ docker run -d --name redis --network app-net redis
$ docker run -d --name app --network app-net myapp

## app 容器中可以用 redis:6379 連線 Redis

...

9.4.2 連線到多個網路

一個容器可以同時連線到多個網路,這對於需要跨網絡通訊的中間件容器特別有用:

## 啟動容器

$ docker run -d --name multi-net-container --network frontend nginx

## 再連線到另一個網路

$ docker network connect backend multi-net-container

## 檢視容器的網路

$ docker inspect multi-net-container --format '{{json .NetworkSettings.Networks}}'

--link 是 Docker 早期用於容器互聯的方式,已經被廢棄,不建議在新專案中使用。請使用自定義網路替代:

## 舊方式(不推薦)

$ docker run --link db:database myapp

## 新方式(推薦)

$ docker network create mynet
$ docker run --network mynet --name db postgres
$ docker run --network mynet --name app myapp

使用自定義網路的優勢在於:

  • 原生支援 DNS 解析
  • 不需要在容器啟動時顯式宣告依賴
  • 更靈活,可以動態 connect/disconnect
第 78 页,共 196 页
使用 mdPress 构建