Docker筆記:一篇學(xué)會Docker網(wǎng)絡(luò)知識
今天給大家介紹docker的網(wǎng)絡(luò)知識,歡迎大家互相交流學(xué)習(xí)!
1、docker網(wǎng)絡(luò)介紹
當(dāng)我們的服務(wù)器成功安裝docker并啟動(dòng)進(jìn)程后,就會產(chǎn)生一個(gè)docker0的虛擬網(wǎng)橋,本質(zhì)為Linux網(wǎng)橋(默認(rèn)為橋接模式),使用的通信技術(shù)是Veth-pair技術(shù).
當(dāng)我們每啟動(dòng)一個(gè)容器,docker就給對應(yīng)容器分配一個(gè)eth0,并能夠橋接到docker0網(wǎng)卡。這個(gè)時(shí)候可以把docker0看作為路由器,每個(gè)容器可以看作為連接路由器的網(wǎng)絡(luò)設(shè)備,docker0用來管理每個(gè)容器的和docker0通信的映射關(guān)系。
查看網(wǎng)絡(luò)信息;
ip addr
具體如下圖:
lo:表示本地回環(huán)地址
dockers0:表示docker容器安裝自動(dòng)產(chǎn)生的docker0地址。
2、測試容器和宿主主機(jī)的通信
2.1 宿主主機(jī)可以ping通 docker0
ping 172.17.0.1
執(zhí)行效果如下圖
2.2 容器內(nèi)部ping宿主主機(jī)也可以ping通
ping 192.168.0.116
2.3 dockers中nginx解決沒有ping命令的問題
大家如果安裝的nginx沒有ping命令的話,可以采用下面的兩條命令安裝ping。
apt-get update #獲取更新軟件源
apt install iputils-ping #安裝ping命令
2.4 容器之間也可以互相ping通
-- 獲取docker所有容器的IP地址
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
nginxtest 容器內(nèi)IP是 172.17.05
nginxtest02 容器內(nèi)IP是 172.17.06
測試一下是否能夠ping通
docker exec -it nginxtest /bin/bash
ping 172.17.0.6
docker exec -it nginxtest02 /bin/bash
ping 172.17.0.5
3、evth-pair技術(shù)簡介
evth-pair就是一對虛擬設(shè)備接口,它們都是成對出現(xiàn)的,一端連著協(xié)議,一端彼此相連,所以可以通信。evth-pair可以充當(dāng)一個(gè)橋梁。
4、Docker網(wǎng)絡(luò)總結(jié)
Docker 使用的是Liunx的橋接原理,宿主機(jī)中是一個(gè)Docker容器的網(wǎng)橋 docker0。Docker 中所有的網(wǎng)絡(luò)接口的是虛擬的,虛擬的轉(zhuǎn)發(fā)效率高,
docker容器網(wǎng)橋的生成周期:docker容器刪除,對應(yīng)的一對網(wǎng)橋就沒了。