[Docker] 網路 Network
不懂的單字:
ethernet interface
,NAT
,private network
,sub interface
overlay network
命令行(Command Line)
$ docker container port <container>
$ docker network ls # 列出所有 Docker 內的網路
$ docker network inspect # 檢視某個網路的詳細資料
$ docker network create --driver # 建立虛擬網路讓你的 container 可以與之連結
$ docker network connect
$ docker network disconnect
觀念
- 當我們啟動 container 時,實際上會於背景連接到 Docker 網路。
- 所有的 container 都會連上私有虛擬網路 "bridge"。
- 每個虛擬網路會透過主機 IP 的 NAT (網路位址轉換)分派路由。
- 所有在同一個虛擬網路內的 container 不需要透過
-p
就可以彼此溝通。 - 一個 container 可以連接到多個虛擬網路。
- 某些情況下我們可以透過
--net=host
來略過虛擬網路使用主機的 IP。 - 我們可以使用不同的 Docker 網路驅動程式來擁有更多功能。
- 預設情況下,你會看到一個稱作
bridge
的網路,又或者叫做docker0
指令
docker network ls
取決於 你的作業系統和 Docker 版本,你可能會看到橋接網路被取名為 docker0
或 bridge
,它們指的是同樣的東西;而 host
則是一個特殊的網路,可以跳過 Docker 虛擬網路,直接將 container 與主機介面連接。
--network host
: it gains performance by skipping virtual networks but sacrifices security of container model
--network none
: removes eth0 and leave you with localhost interface in container
docker network inspect
透過 docker network inspect bridge
可以看到,預設情況下 IPAM(IP 位址管理)所設定子網路是 172.17
。