Docker四種網路模式決議
- 網路資源詳解——Docker0網卡與四種網路模式
- Docker0網卡及四種網路模式
- host模式
- container模式
- none模式
- bridge模式
- 網路模式的使用方法——指定模式和指定ip
網路資源詳解——Docker0網卡與四種網路模式
安裝完Docker時,會發現系統自動創建了一個docker0網卡和其他Docker網路模式:

Docker0網卡及四種網路模式
Docker安裝完成之后,會使用Linux橋接 ,在宿主機虛擬一個Docker容器網橋(docker0),容器在啟動時會從此網段分配一個IP地址給容器,被稱為container-ip,同時Docker網橋是每個容器的默認網關,因為在同一宿主機內的容器都接入同一個網橋,這樣容器之間就能夠通過容器的container-ip直接通信,
但由于Docker0網卡是虛擬出來的,所以外部網路無法直接進行通訊,只能通過埠映射來進行訪問容器,即docker run創建容器時候通過 -p 或 -P 引數來啟用,訪問容器的時候就通過宿主機IP:容器埠訪問容器

| docker網路模式 | 配置 | 說明 |
|---|---|---|
| host模式 | –net=host | 容器和宿主機共享Network namespace, |
| container模式 | –net=container:name or id | 容器和另外一個容器共享Network namespace, kubernetes中的pod就是多個容器共享一個Network namespace, |
| none模式 | –net=none | 容器有獨立的Network namespace,但并沒有對其進行任何網路設定,如分配veth pair 和網橋連接,配置IP等, |
| bridge模式 | –net=bridge | (默認為該模式) |
host模式
- 容器與宿主機共享network namespace
- 容器將使用宿主機的IP地址與埠,但是容器的其他方面,如檔案系統等仍舊是與宿主機隔離
- 優點是網路性能好,無需nat轉換
- 缺點是網路的隔離性不好,用過的埠就不能再用了

container模式
- container模式是和一個已經存在的容器共享一個network namespace,新創建的容器不會創建自己的網卡與IP,這兩個容器可以通過lo網卡設備進行通信
- 但是和host模式一樣,檔案系統,行程串列等還是隔離的

none模式
- none模式關閉了容器的網路功能,
- 容器會有自己的network namespace,但是容器不會有其他的網路配置,如網卡,IP,路由等資訊,需要手動添加
- 優點是網路封閉性好,容器安全性高

bridge模式
- bridge模式會為每一個容器分配、設定一個IP地址等,并將容器通過veth對連接到一個Docker0虛擬網橋,通過docker0網橋以及iptables nat表配置與宿主機通信
- bridge模式是Docker的
默認模式,一般Docker都會使用172.17.0.0/16這個網段

網路模式的使用方法——指定模式和指定ip
**橋接模式是默認的,不需要指定,如果要指定模式,需要添加–net=none、–net=host、–net=container:name or id **
例如:
docker run -it centos:7 /bin/bash #這個默認就是橋接模式
橋接模式無法直接指定ip,如果想指定ip需要先自行創建網路,創建的網路和Docker0網路統同級
docker network create --subnet=172.18.0.0/24 network01
docker run -itd --name test --net network01 --ip 172.18.0.10 centos:7 /bin/bash
docker ps -a
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/271280.html
標籤:其他
上一篇:Docker基礎命令
