1. 程式人生 > >docker設定不同網路和遷移到指定網路

docker設定不同網路和遷移到指定網路

Libnetwork官方示例

我們初步瞭解了libnetwork中各個元件和驅動後,為了能深入的理解libnetwork中的CNM模型和熟悉docker network子命令的使用,我們來通過libnetwork官方github上的示例進行驗證一下,如下圖所示:
docker設定不同網路和遷移到指定網路

在上圖示例中,使用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設定不同網路和遷移到指定網路

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地址是通的了