我們每啟動乙個docker容器,docker就會給docker容器分配乙個ip,我們只要安裝了docker,就會有乙個網絡卡docker0。
一、啟動兩個tomcat容器
[root@localhost ~]# docker run -d -p --name tomcat01 tomcat # 啟動映象,生成tomcat01容器之後,使用ip addr命令發現多了一對網絡卡。二、檢視兩個tomcat容器的ip位址三、測試宿主機和容器、容器和容器之間的網路是否可以通[root@localhost ~]# docker run -d -p 3120:8080 --name tomcat02 tomcat # 啟動映象,生成tomcat02容器之後,使用ip addr命令發現多了一對網絡卡。
[root@localhost ~]# ip addr # 執行上面兩步之後,檢視伺服器ip位址,發現多了兩對網絡卡。
[root@localhost ~]# ping 172.17.0.2 # 在伺服器上ping tomcat01容器,即linux伺服器上可以ping通docker容器內部。四、刪除容器,發現第一步生成的網絡卡資訊也同時沒有了[root@localhost ~]# ping 172.17.0.3 # 在伺服器上ping tomcat02容器,即linux伺服器上可以ping通docker容器內部。
[root@localhost ~]# docker exec -it tomcat01 ping 172.17.0.3 # 在tomcat01容器中 ping tomcat02容器,可以ping通,即容器之間可以互相ping通。
[root@localhost ~]# docker stop tomcat01 # 停止tomcat01容器總結1:tomcat01和tomcat02是共用的乙個路由器,即docker0。所有的容器不指定網路的情況下,都是docker0路由的,docker0會給我們的容器分配乙個預設的可用ip。[root@localhost ~]# docker rm tomcat01 # 刪除tomcat01容器
[root@localhost ~]# ip addr # 檢視網絡卡資訊
總結2:docker中的所有的網路介面都是虛擬的,因為虛擬的**效率高(如內網傳遞檔案)。只要容器刪除,對應的網橋一對也沒有了。
總結3:docker網路使用橋接模式,使用的技術是veth-pair技術。就是一對虛擬裝置介面,他們都是成對出現的。veth-pair充當乙個橋梁,連線各種虛擬網路裝置的。
總結4:docker0特點:是預設的網路模式,不能通過容器名訪問。解決方法:一、--link可以打通連線,二、自定義網路可以打通連線。
測試tomcat01容器直接ping tomcat02容器,發現無法ping通,使用--link可以解決這一問題。
[root@localhost ~]# docker exec -it tomcat01 ping tomcat02 # 無法ping通一、檢視所有的docker網路[root@localhost ~]# docker run -d -p --name tomcat03 --link tomcat02 tomcat # 啟動映象,生成tomcat03容器
[root@localhost ~]# docker exec -it tomcat03 ping tomcat02 # 可以ping通,因為--link就是在tomcat03容器中的hosts檔案中新增了172.17.0.3 tomcat02 b41c08fb9421配置。現在不建議使用了。
[root@localhost ~]# docker exec -it tomcat02 ping tomcat03 # 無法ping通,即單向的,是因為在tomcat02容器中的hosts檔案沒有修改配置。
[root@localhost ~]# docker exec -it tomcat03 cat /etc/hosts # 檢視tomcat03容器的hosts檔案
[root@localhost ~]# docker network --help # 檢視幫助文件二、網路模式三、自定義乙個網路[root@localhost ~]# docker network ls
[root@localhost ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet四、檢視自定義網路的資訊--driver bridge 使用的也是橋接模式
--gateway 192.168.0.1 閘道器
[root@localhost ~]# docker network inspect mynet五、測試容器之間網路連通
[root@localhost ~]# docker run -d -p --name tomcat05 --net mynet tomcat # 使用自定義網路建立tomcat05容器一、使用docker0(即bridge)建立乙個容器[root@localhost ~]# docker run -d -p --name tomcat06 --net mynet tomcat # 使用自定義網路建立tomcat06容器
[root@localhost ~]# docker exec -it tomcat05 ip addr # 檢視tomcat05容器的ip位址為:192.168.0.2
[root@localhost ~]# docker exec -it tomcat06 ip addr # 檢視tomcat06容器的ip位址為:192.168.0.3
[root@localhost ~]# docker exec -it tomcat05 ping tomcat06 # 可以ping通,不使用--link也可以通過容器名稱ping通容器了
[root@localhost ~]# docker exec -it tomcat05 ping 192.168.0.3 # 可以ping通
[root@localhost ~]# docker run -d -p --name tomcat01 tomcat # 直接啟動的命令,預設就帶引數--net bridge,而這個就是我們的docker0。二、使用mynet 建立乙個容器[root@localhost ~]# docker run -d -p --name tomcat02 --net bridge tomcat # 等同上面的命令,建立tomcat02容器
[root@localhost ~]# docker run -d -p --name tomcat05 --net mynet tomcat三、測試兩個容器直接的網路連線情況
[root@localhost ~]# docker exec -it tomcat01 ping tomcat05四、打通不在同乙個網段的兩個容器的網路連線
[root@localhost ~]# docker network connect mynet tomcat01 # tomcat01容器與mynet這個網段連通五、再次測試網路連線情況[root@localhost ~]# docker network inspect mynet # 檢視自定義網路mynet的資訊
[root@localhost ~]# docker exec -it tomcat01 ping tomcat05 # 可以ping通[root@localhost ~]# docker exec -it tomcat02 ping tomcat05 # 不可以ping通,因為tomcat02與mynet這個網路沒有連通
docker初識 Docker 初識
一 docker 簡介 docker是乙個開源的應用容器,使用者可以將web程式和服務打包到乙個輕量級 可以移植的容器中,然後發布到任務流行的linux伺服器上,實現虛擬化。同時完全是沙箱操作,即docker內部是乙個沙箱操作,專案之間不會有任何介面,並且開銷極低。二 docker centos 安...
docker初識 初識 Docker
docker 學習 docker概述 docker安裝 docker命令映象命令 容器命令 操作命令 docker映象!容器資料卷!dockerfile docker網路原理 idea整合docker docker compose docker swarm 簡化的k8s ci cd jenkins ...
docker 初識 筆記
docker 是乙個輕量級 可攜式 與外界隔離的容器,也是乙個可以在容器中很方便地構建 傳輸 執行應用的引擎。和傳統的虛擬化技術不同的是,docker 引擎並不虛擬出一台虛擬機器,而是直接使用宿主機的核心和硬體,直接在宿主機上執行容器內應用。也正是得益於此,docker 容器內執行的應用和宿主機上執...