目錄
- 本次目標:
- 一、Docker網絡配置
- 1.bridge模式(默認模式)
- 2.host模式
- 二、bridge模式
- 三、host模式
- 四、如何創建自定義網絡
- 1.創建自定義網絡
- 2.創建容器
- 3.查看網絡模式
- 總結
本次目標:
- Docker網絡配置
- Docker部署SpringCloud項目
一、Docker網絡配置
Docker在創建容器時有四種網絡模式:
bridge/host/container/none,bridge為默認不需要用–net去指定,其他三種模式需要在創建容器時使用–net去指定,今天所展示的是兩種模式bridge和host(橋接和僅主機模式)
1.bridge模式(默認模式)
docker run時使用–net=bridge,這種模式會為每個容器分配一個獨立的Network Namespace,
同一個宿主機上的所有容器會在同一個網段下,相互之間是可以通信的
所虛擬的服務器都有獨立的ip
注1:bridge為默認模式,不需要使用參數–net去指定,使用了–net參數反而無效
注2:bridge模式無法指定容器IP(但非絕對,具體操作可參考其他資料)
Docker run -it –name mytomcat01 -p 8081:8080 鏡像ID
查看當前橋接模式的情況:docker inspect bridge
里面有個c2的網絡地址
然后再關閉c2,重新查看橋接模式的情況
接著我們ifconfig查看當前虛擬ip,里面因為裝了docker引擎,對應上面那個圖docker0和docker1都有獨立的ip
#Docker網絡模式相關命令查看
docker network –help
#列出Docker現有網絡模式
docker network ls
#查看橋接模式下的網絡狀態
docker network inspect bridge
2.host模式
docker run時使用–net=host,容器將不會虛擬出IP/端口,而是使用宿主機的IP和端口
docker run -itd –net=host 961769676411
注1:host模式不能使用端口映射和自定義路由規則,這些都與主機一致,-p 與-icc 參數是無效的
初識網絡模式
#查看網絡模式 ip a ifconfig #Docker網絡模式相關命令查看 docker network --help #列出Docker現有網絡模式 docker network ls #查看僅主機模式下的網絡狀態 docker network inspect host
然后查看一下網絡狀態
發現里面沒有ip
我們刪掉那些多余的鏡像:docker rm -f $(docker ps -aq)
結論:僅主機模式是不會分配獨立的ip,只會共享相同的ip,而橋接模式是隨機分配獨立的ip
二、bridge模式
docker run -di --name tomcat1 -p 8080:8080 da505a5bc55a #--restart=always容器隨著Docker引擎啟動而啟動 docker run -di --name tomcat2 --restart=always -p 8081:8080 da505a5bc55a
通過指令1啟動兩個tomcat 通過宿主機訪問端口8081或8082 訪問到映射到的容器內部的8080端口
接著我們訪問一下網址:(ip a 查看ip地址)
如果還想再來一個直接改一下映射的端口號就行:
接著我們重新查看一下橋接模式下的網絡狀態
三、host模式
在一般情況下僅主機模式對我們更方便些,若我們需要部署單體應用,則僅主機是優選
現在我們再創建一個容器,發現容器將不會虛擬出IP/端口,而是使用宿主機的IP和端口
而在hosto模式中,我們只能進入第一個創建的容器里
網絡模式與數據卷容器掛載的操作
docker run -di -v /javayuyan/software/mydocker:/home/javaxl/docker -p 8083:8080 --name t5 --restart=always da505a5bc55a
掛載后也可以進行訪問tomcat:
四、如何創建自定義網絡
為什么需要自定義網絡,因為當使用docker引擎進行部署項目在容器中之后,會被分配隨機IP,當關閉之后再開啟時,所被分配的IP地址極大可能會不一樣。
1.創建自定義網絡
docker network create –subnet=172.18.0.0/16 mynetwork
作用:創建容器的時候可以指定IP地址
2.創建容器
docker run -it --name tomcat8 --net=mynetwork -v /javaxl/software/mydocker/:/home/javaxl/docker --ip 172.18.0.8 da505a5bc55a /bin/bash
改成自己的容器就行
3.查看網絡模式
docker network inspect mynetwork
當有部署很多微服務需要暫停時,該自定義的ip也不會隨便改變了