docker設定不同網路和遷移到指定網路
阿新 • • 發佈:2018-12-10
Libnetwork官方示例
我們初步瞭解了libnetwork中各個元件和驅動後,為了能深入的理解libnetwork中的CNM模型和熟悉docker network子命令的使用,我們來通過libnetwork官方github上的示例進行驗證一下,如下圖所示:
在上圖示例中,使用Docker 預設的bridge驅動進行演示。在此例中,會在Docker上組成一個網路拓撲的應用:
它有兩個網路,其中backend network為後端網路,frontend network則為前端網路,兩個網路互不聯通。(這兩個網路呆會兒演示的時候會創建出來)
其中容器1和容器3各擁有一個端點,並且分別加入後端網路(backend network)和前端網路(frontend network)中。而容器2則有兩個端點,它們分別加入到後端網路和前端網路。
1、通過以下命令分別建立名為backend、frontend兩個網路:
docker network create backend
docker network create frontend
2、使用docker network ls 可以檢視這臺主機上的所有Docker網路:
[email protected]:~# docker network ls NETWORK ID NAME DRIVER SCOPE 4bb7db8603b3 backend bridge local 89eecd0d67f8 bridge bridge local 4f90775dde19 frontend bridge local 68a185af2068 host host local 7121b3b8e5e9 none null local
除了剛才建立的backend和frontend之外,還有3個網路。這3個網路是Docker daemon預設建立的,分別使用了3種不同的驅動,而這3種驅動則對應了Docker原來的3種網路模式。需要注意的是,3種內建的預設網路是無法使用docker network rm進行刪除的,不信你們試一下。
3、接下來建立3個容器,並使用下面的命令將名為c1和c2的容器加入到backend網路中,將名為c3的容器加入到frontend網路中:
docker run -itd --name c3 --net backend centos docker run -itd --name c2 --net backend centos docker run -itd --name c1 --net frontend centos
然後,分別進入c1和c3容器使用ping命令測試其與c2的連通性,因為c2和c3都在backend網路中,所以兩者可以連通。但是,因為c2和c1不在一個網路中,所以兩個容器之間不能連通:
docker exec -it c2 /bin/bash
# yum install -y net-tools #安裝網路工具包
# ping c1 #處於frontend 不通
# ping c2 #處於backend 通
# ping c3 #處於backend 通
使用如下命令將c2容器加入到backend網路中
# docker network connect backend c1
發現現在ip地址是通的了