7/9讀書會,帆哥主講Docker network&image筆記
Docker Network
Docker is an open platform for developing, shipping, and running applications.
How do containers communicate with each other?
學了怎麼Run container,接下來要知道的是container之間如何溝通!
Container Network Model
定義container的網路模型所要依循的規範和標準
With
libnetwork, Docker is aiming to provide standard interface to connect containers and satisfy composible needs.libnetworklibrary can be used independent of Docker.
透過Library-Libnetwork,Docker有一套標準去規範網路模型該要遵守的規範和標準! 而Libnetwork是實作CNM來的!
Docker Network
docker network --help 萬能的help
docker network default為bridge!
補充知識-Bridge
大推這篇,圖多-中繼器 (Repeater)、集線器 (Hub)、橋接器 (Bridge)、交換器 (Switch) 原理與介紹
- 橋接器(Bridge)

如文章提的,傳統是採用Bus Topology(匯流排拓樸),當用廣播方式傳輸時,幹線上的節點都會收到,資安會有疑慮。
後來發展出集線器(Hub),佈線採Star Topology(星狀拓樸)
但不管是匯流排或是星狀拓樸都可能會發生碰撞網域(Collision Domain)
所以演化史中就出現了像是Bridge(橋接器)或是Switch(交換器)。
Docker預設使用的就是Bridge,切分多個網域,減少碰撞機率!
docker network ls 列出網路清單
docker network create <networkname> 建立網路 -預設driver是bridge
// docker network my_app_net
// docker network ls
NETWORK ID NAME DRIVER SCOPE
72cf7a683286 bridge bridge local
b2e7e37069ae host host local
8b316da9524b my_app_net bridge local
005a3412f529 none null local
docker network inspect <networkname> 檢視網路設定
docker container attach <containername> 進入container中
- ip addr show 查看IP設定
- Exit會結束container,
Ctrl+P+Q可跳出container且不會stop container - ping 同network的container
docker network connect <networkname> <containername>再掛一個network到container上
如下圖概念:

圖取自Docker Networking – Explore How Containers Communicate With Each Other
精選練習
- 建立名稱為mynet的network
- 檢查mynet是否在清單上
- 啟動三個alpine container (a1,a2,a3),a1&a3不指定network,a2要使用mynet
- 檢查是否啟動成功
- 檢視mynet設定,瞧瞧a2是否在其中
- 進到a1 container 內部,查看ip設定,嘗試從a1
ping <a3 IP>&ping <a2 IP> - a1 和network mynet 連接,再試試看從a1
ping <a2 IP>
延伸閱讀&參考圖文
Docker Networking – Explore How Containers Communicate With Each Other
Practical Design Patterns in Docker Networking
中繼器 (Repeater)、集線器 (Hub)、橋接器 (Bridge)、交換器 (Switch) 原理與介紹:圖多大推