1. 程式人生 > >1.7 Docker-網絡管理

1.7 Docker-網絡管理

eat 物理機 分享 web服務 橋模式 模式 火墻 網絡隔離 cal

1.7 網絡管理

容器網卡的三種工作模式:bridge、host、none。

bridge(網橋模式)

物理機就像一個虛擬交換機,做容器與容器之間,容器與外網通信的橋梁。當運行容器時,Docker會在物理機上創建Docker0和vethx虛擬網卡,Docker0是一個三層接口擁有容器網段的IP地址,用於物理機與容器通信,而vethx是一個二層虛擬接口,用於連接容器網卡。默認情況下容器會使用MASQUERADE(動態SNAT)的方式將容器內部網絡轉換成物理機網卡網段去訪問到外網。
因為是個虛擬交換機,當然如果你想要內網其他主機訪問到容器內部的話,則可以手動增加一條到容器網段的路由即可。
如果你想要發布一個WEB服務或其他服務,你只需要在運行容器時使用“-p <端口:端口>”或“-P”增加端口映射,則Docker會自動使用物理機的IPtables防火墻做DNAT地址轉換,當你訪問物理機的對應IP+端口時,實際訪問的是容器中的應用服務。
技術分享圖片

host(主機模式)

容器完全復制物理機網絡與外界通信。容器與容器之間無法訪問。
技術分享圖片

none(無網絡模式)

無網絡模式,容器無法訪問其他容器及外部網絡,只可以自己訪問自己。
技術分享圖片

1、查看容器網絡

默認情況下容器使用“bridge”網絡。

[root@localhost ~]# docker network ls
網絡ID              網絡名               網絡設備類型          作用範圍                   
NETWORK ID          NAME                DRIVER              SCOPE
08934fc06219        bridge              bridge              local
7288591dd537        host                host                local
0e74f42e99d3        none                null                local

2、創建自定義容器網絡

可以創建一個自定義的“bridge”網絡,使容器與容器之間網絡隔離,互不影響。默認情況下“host”網絡只允許有一個,所以一般情況下我們都是創建的自定義網絡都是“bridge”。

語法:docker network create [選項] 網絡名
選項:
   -d <drive_type>   指定網絡設備類型,默認是"bridge"
示例:
[root@localhost ~]# docker network create -d bridge my-network

3、刪除自定義容器網絡

語法:docker network rm 網絡名
示例:
[root@localhost ~]# docker network rm my-network

4、刪除所有未使用的容器網絡

語法:docker network prune [選項]
選項:
   -f   強制刪除
示例:
[root@localhost ~]# docker network prune

5、查看一個容器網絡設備的詳細信息

語法:docker network inspect 網絡名
示例:
[root@localhost ~]# docker network inspect bridge

6、容器運行時手動指定容器網絡

[root@localhost ~]# docker run -d -p 80:80 --name "WEB-NGINX" --network my-network nginx:latest

1.7 Docker-網絡管理