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