1. 程式人生 > >centos7下安裝docker(12.5容器在單個host上的網絡總結)

centos7下安裝docker(12.5容器在單個host上的網絡總結)

centos 查看 轉換成 跨主機 地址 -s 外部 spec 創建

單個host上的容器的網絡:通過本章的學習,我們知道docker默認有三種網絡,可以通過docker network ls查看;

none:封閉的網絡,通過--network=none來指定;

host:將host主機上面的網絡完全映射到容器中;

bridge:橋接網絡,默認情況下容器使用的是bridge,並將容器網絡橋接到docker0上;可以通過brctl show查看橋接情況

我們可以創建user-defined網絡,user-defined也分為三種:bridge,overlay,macvlan,本節重點討論的是bridge,其他兩個主要用來實現跨主機的網絡;

通過docker network create --driver bridge <網絡名>來創建bridge網絡,通過docker network inspect查看bridge的subnet以及gateway;

我們新建bridge網絡的時候可以通過--subnet和--gateway來指定bridge的網段和網關;

運行容器的時候我們通過--network=<新建的網絡名>指定容器使用的網段,通過--ip指定容器的ip;

通過docker network rm<網絡ID>來刪除不用的網絡,前提是這個網絡沒有被使用。

我們還學習了容器與容器之間的通信:證明了在同一個網絡下的容器之間可以互相通信;在不同網絡的容器可以設置iptables來實現,也可以通過docker network connect <網絡名> <容器名> 來給容器增加一個不同網段的新網卡來實現不同網段的容器之間的通信;

最後學習了容器如何與外部進行通信:通過NAT的方式來實現容器訪問外網:容器發送請求先到橋接網卡(docker0),橋接網卡發現是訪問外網的通過NAT進行網絡地址轉換,將容器的地址轉換成host的地址,通過host的地址訪問外部;

通過端口映射的方式實現了外部訪問容器:首先啟動容器的時候要通過-p設置容器映射的端口,每映射一個端口,host都會啟動一個docker-proxy的進程;當外部有請求過來時,先訪問host對應的端口,然後通過docker-proxy將請求轉發到容器對應的端口,容器在將結果返回。

本節的命令總結:

brctl show:橋接情況

docker network ls:查看docker網絡

docker network create --driver bridge --subnet --gateway docker1:創建一個docker1的bridge網絡

--driver bridge:驅動類型為bridge ;--subnet指定網段;--gateway指定網關

docker run -d --network=none/host/docker1 --ip 192.168.2.2 busybox :運行一個容器指定他使用的網絡和ip

--network=none/host/docker1 指定使用的網絡 --ip指定容器的ip

docker network inspect <網絡ID>查看bridge網絡的信息

docker network connect <網絡名> --ip <容器名> 給容器增加一塊網卡

docker network rm <網絡ID>刪除網絡

centos7下安裝docker(12.5容器在單個host上的網絡總結)