Network 手動配置
Docker Network 可以調整非常多設定,而在使用 Network 連結 container 使用的是預設的 bridge 模式,這個模式符合大多數開發階段的情境,所以通常不會調整它。但如果想要將 Docker 活用在更多地方的話,那就勢必要了解 Docker Network 是如何配置的。
對網路架構不熟,因此單純就從 docker 指令來了解架構。
docker0
安裝好 Docker 後,可以使用 docker network ls
指令來查看目前的網路設定配置:
$ docker network ls |
預設的 bridge
網路配置,即很多文章會提到的 docker0。
bridge
使用 docker network create
,預設會是 bridge 模式:
$ docker network create my-net |
它能滿足大多數的情境,所以才會做為預設設定。
host
當使用 container 設定成 host
時,Docker 會與 host 共享網路資源,但檔案系統依然是分開獨立的。
注意:下面這個範例需要在 Linux 上才能 work。
# 啟動 Nginx 並開啟 80 port,注意這裡沒有 -p 參數 |
因不需要做 port forwarding,其實蠻方便的。但缺點就是 container 開了任何 port,都會佔用到 host 資源,反之亦然,這樣隔離性就會降低。
container
與 host
類似,不同點在於網路配置會與指定的 container 共享。
# 啟動 web server |
特色也跟 host
一樣,某些情境非常好用,但隔離性就會變差。
none
顧名思義,它就是沒有設定網路,必須要手動為它配置網卡才能正常運作。
今日自我回顧
清楚知道 Network,才能順利在許多 host 的環境下串接 container。它甚至就像一個迷你的 VPC 一樣,可以建構出簡單網路架構的私有雲。
對開發階段來說,善用 Network 也有辦法模擬出一般線上實際環境,對於除錯會非常有幫助。