跳至主要内容

[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 版本,你可能會看到橋接網路被取名為 docker0bridge,它們指的是同樣的東西;而 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