原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
原文連接地址:『中級篇』 Docker Bridge詳解(26)node
上節主要學習了network-namespace,並建立了network-namespace,並把2個network-namespace鏈接在一塊兒,咱們也演示了建立一個容器test1和test2,其實在建立容器的同時也建立了對應的一個network-namespace,由於對應的一個容器他有本身的獨立網絡空間。test1經過exec ip a的方式查看對應的ip,和test2 經過exec ip a的方式查看對應的ip。他們以前是互相能夠ping通的。linux
sudo service docker restart
sudo docker container start test1
sudo docker container start test2
sudo docker docker exec -it test1 /bin/sh
ping www.baidu.com
複製代碼
sudo docker ps
sudo docker stop test2
sudo docker rm test2
sudo docker ps
複製代碼
能夠看到一個 ,這也是linux中常見的一種網絡結構。橋接的形式docker
sudo docker network ls
複製代碼
對於test1 來說,他是經過bridge的方式bash
sudo docker inspect test1
複製代碼
ip a
複製代碼
這個機器有5個網路,除了lo,eth0,eth1,docker0,veth8765ce0@if5,上節課講過veth實際上是鏈接了2個networknamespace,veth8765ce0@if5是負責鏈接docker0上邊的,容器test1裏面也應該有個和veth鏈接的。網絡
sudo docker exec test1 ip a
複製代碼
eth0@if6 和外邊的veth8765ce0@if5 實際上是一對。學習
sudo yum install -y bridge-utils
#安裝後能夠運行brctl這個命令了
brctl
複製代碼
brctl show
複製代碼
由於目前就一個test1的橋接,因此就顯示一個。ui
sudo docker run -d --name test2 busybox /bin/sh -c "while true; do sleep 3600;done"
brctl show
sudo docker network inspect bridge
ip a
複製代碼
多建立了容器,其實多了一對veth,容器內多了veth,宿主內也增長了veth,其實就相似一個線,他們互相鏈接。spa
test1 和test2 以前經過docker0,docker0 相似test1和test2以前的路由器,docker0 在經過nat的eth0鏈接互聯網vagrant
PS:主要理解容器以前如何的互相訪問,容器和外邊的世界如何通訊。3d