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網絡:

  root@centos-mysql01:~# 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地址是通的了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章