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. libnetwork library can be used independent of Docker.

取自Libnetwork

透過Library-Libnetwork,Docker有一套標準去規範網路模型該要遵守的規範和標準! 而Libnetwork是實作CNM來的!


Docker Network

docker network --help 萬能的help

docker network default為bridge!


補充知識-Bridge

大推這篇,圖多-中繼器 (Repeater)、集線器 (Hub)、橋接器 (Bridge)、交換器 (Switch) 原理與介紹

  • 橋接器(Bridge)

Bridge

圖取自中繼器 (Repeater)、集線器 (Hub)、橋接器 (Bridge)、交換器 (Switch) 原理與介紹

如文章提的,傳統是採用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上

如下圖概念:

container network model

圖取自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 連接,再試試看從a1ping <a2 IP>


延伸閱讀&參考圖文

Docker Networking – Explore How Containers Communicate With Each Other

Practical Design Patterns in Docker Networking

中繼器 (Repeater)、集線器 (Hub)、橋接器 (Bridge)、交換器 (Switch) 原理與介紹:圖多大推