docker 網絡

Docker 安裝時會自動在 host 上創建三個網絡,我們可用 docker network ls 命令查看:


image.png

none 網絡

什么都沒有的網絡,沒有任何網卡。作用用于隔離一些安全要求高,但是不需要聯網的應用

host網絡

連接到 host 網絡的容器共享 Docker host 的網絡棧,容器的網絡配置與 host 完全一樣。可以通過 --network=host 指定使用 host 網絡。

brideg網絡

Docker 安裝時會創建一個 命名為 docker0 的 linux bridge。如果不指定--network,創建的容器默認都會掛到 docker0 上。
通過 docker network inspect bridge 查看 bridge 網絡的配置信息:


image.png

bridge 網絡配置的 subnet 就是 172.18.0.0/16,并且網關是 172.18.0.1。這個網關就是 docker0


image.png

image.png

自定義網絡

我們可通過 bridge 驅動創建類似前面默認的 bridge 網絡

docker network create --driver bridge my_net     #創建
docker network inspect my_net 查看my_net 的配置信息

創建網段時指定 --subnet 和 --gateway 參數可自定義網段

 docker network create --driver bridge --subnet 172.22.15.0/24 --gateway 172.22.15.1 my_net
image.png

image.png

容器要使用新的網絡,需要在啟動時通過 --network 指定,--ip可配置靜態ip

注:只有使用 --subnet 創建的網絡才能指定靜態 IP。
docker run -it --network=my_net  --ip 172.22.15.22  busybox
image.png

容器間的連通性

同一網絡中的容器,網關之間都是可以通的


image.png

不同網橋間通信可以為 容器添加一塊 net_my的網卡。這個可以通過docker network connect 命令實現。


image.png

Docker DNS Server

docker daemon 實現了一個內嵌的 DNS server,使容器可以直接通過“容器名”通信,啟動時用 --name 為容器命名。
下面啟動兩個容器 bbox1 和 bbox2:

docker run -it --network=my_net --name=bbox1 busybox
docker run -it --network=my_net --name=bbox2 busybox

然后,bbox2 就可以直接 ping 到 bbox1 了:


image.png

image.png
注:只能在自定義網絡中使用

joined 容器

joined 容器是另一種實現容器間通信的方式。
joined 容器非常特別,它可以使兩個或多個容器共享一個網絡棧,共享網卡和配置信息,joined 容器之間可以通過 127.0.0.1 直接通信。
先創建一個 httpd 容器,名字為 web1。

docker run -d -it --name=web1 httpd

然后創建 busybox 容器并通過 --network=container:web1 指定 jointed 容器為 web1:

docker run -it --network=container:web1 busybox
image.png

兩容器共享網絡棧
joined適用于
1.不同容器中的程序希望通過 loopback 高效快速地通信,比如 web server 與 app server。
2.希望監控其他容器的網絡流量,比如運行在獨立容器中的網絡監控程序。

外網

docker容器默認可以訪問外網,只要通過nat,外網可以利用端口映射訪問內部容器

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 概述 自從docker容器出現以來,容器的網絡通信就一直是大家關注的焦點,也是生產環境的迫切需求。而容器的網絡通信...
    糙老爺們兒吃什么櫻桃閱讀 3,644評論 1 5
  • 【編者的話】當你在一臺主機上成功運行Docker容器后,信心滿滿地打算將其擴展到多臺主機時,卻發現前面的嘗試只相當...
    SDNLAB閱讀 1,043評論 0 6
  • 基于對network namespace的控制,docker可以為在容器創建隔離的網絡環境,在隔離的網絡環境下,容...
    逑熙閱讀 3,514評論 0 4
  • 轉自:http://ju.outofmemory.cn/entry/255894 概述自從docker容器出現以來...
    dleyanlin閱讀 1,519評論 0 7
  • 陸箏陸箏,哀其不幸,怒其不爭。 花市到清邁泰到體育場外walk and walk, talk and talk 五...
    洛陽女兒名莫愁閱讀 329評論 0 0