在前文中,我們介紹了 Docker 的基本使用和 Volume 的應用。現在,我們將進一步探討 Docker 中的另一個關鍵元素 - Network。
在過去,許多服務都是採用單體架構(Monolithic),即整個應用程式都包含在一個單一的包中,包括服務、測試等等。然而,當出現問題並需要修復時,可能需要操作整個包,牽涉的範圍就變得非常廣泛。
為了解決這個問題,有人提出了微服務的概念。簡單來說,微服務是將原本的單體架構拆分成各個單元,例如資料庫或其他小單元,每個單元運行在各自的運行環境中,再通過網路將它們聯繫在一起。這樣的好處是,如果其中一個服務掛掉,整個系統至少還在運行,可以避免全面停擺。同時,在更新和維護時,可以針對各個部分進行單獨的操作。
要將各個微服務要聯繫起來,就離不開網路。因此,Docker 提供了 Network 來連接不同的 Container。
在 Docker 中,如果各個 Container 要連結到 Network,有兩種方式:
我個人通常使用第一種方式,因此這篇主要介紹第一種方式。
首先,我們需要建立一個 Network。可以使用以下指令:
docker network create --driver bridge <network_name>
# 範例
docker network create --driver bridge test
建立好之後,我們就可以讓 Container 連結到這個 Network:
docker run --net=container:<network_name> <image_name>
# 範例
docker run --net=container:test my-project
只需依序將各個 Container 連結到 Network 就可以實現它們之間的互相溝通。
如果需要管理 Network,可以使用以下指令:
# 列出所有的 Network
docker network ls
# 刪除 Network
docker network rm <network_name>
# 刪除不使用的 Network
docker network prune
需要注意的是,Docker 有三個預設的 Network,請小心不要刪除它們。