溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Docker如何實(shí)現(xiàn)自定義網(wǎng)絡(luò)

發(fā)布時(shí)間:2021-12-29 16:42:58 來源:億速云 閱讀:125 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下Docker如何實(shí)現(xiàn)自定義網(wǎng)絡(luò),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1、自定義網(wǎng)絡(luò)實(shí)現(xiàn)容器互聯(lián)

四類網(wǎng)絡(luò)模式,使用docker network ls查看docker網(wǎng)絡(luò)模式

Docker網(wǎng)絡(luò)模式配置說明
host模式–net=host容器和宿主機(jī)共享Network namespace。
container模式–net=container:NAME_or_ID容器和另外一個(gè)容器共享Network namespace。 kubernetes中的pod就是多個(gè)容器共享一個(gè)Network namespace。
none模式–net=none容器有獨(dú)立的Network namespace,但并沒有對(duì)其進(jìn)行任何網(wǎng)絡(luò)設(shè)置,如分配veth pair 和網(wǎng)橋連接,配置IP等。
bridge模式–net=bridge橋接模式(默認(rèn)為該模式)

–net=bridge 這個(gè)是默認(rèn)值,連接到默認(rèn)的網(wǎng)橋。

–net=host 告訴 Docker 不要將容器網(wǎng)絡(luò)放到隔離的名字空間中,即不要容器化容器內(nèi)的網(wǎng)絡(luò)。此時(shí)容器使用本地主機(jī)的網(wǎng)絡(luò),它擁有完全的本地主機(jī)接口訪問權(quán)限。容器進(jìn)程可以跟主機(jī)其它 root 進(jìn)程一樣可以打開低范圍的端口,可以訪問本地網(wǎng)絡(luò)服務(wù)比如 D-bus,還可以讓容器做一些影響整個(gè)主機(jī)系統(tǒng)的事情,比如重啟主機(jī)。因此使用這個(gè)選項(xiàng)的時(shí)候要非常小心。如果進(jìn)一步的使用 --privileged=true,容器會(huì)被允許直接配置主機(jī)的網(wǎng)絡(luò)堆棧。

–net=container:NAME_or_ID 讓 Docker 將新建容器的進(jìn)程放到一個(gè)已存在容器的網(wǎng)絡(luò)棧中,新容器進(jìn)程有自己的文件系統(tǒng)、進(jìn)程列表和資源限制,但會(huì)和已存在的容器共享 IP 地址和端口等網(wǎng)絡(luò)資源,兩者進(jìn)程可以直接通過 lo 環(huán)回接口通信。

–net=none 讓 Docker 將新容器放到隔離的網(wǎng)絡(luò)棧中,但是不進(jìn)行網(wǎng)絡(luò)配置。之后,用戶可以自己進(jìn)行配置。

自定義網(wǎng)絡(luò)

# --driver bridge 橋接模式
# --subnet 192.168.0.0/16 子網(wǎng)絡(luò)網(wǎng)段
# --gateway 192.168.0.1 網(wǎng)關(guān)
# mynet 網(wǎng)絡(luò)名
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

Docker如何實(shí)現(xiàn)自定義網(wǎng)絡(luò)

查看自定義的網(wǎng)絡(luò)信息:

docker network inspect mynet

Docker如何實(shí)現(xiàn)自定義網(wǎng)絡(luò)

在自定義的網(wǎng)路中創(chuàng)建容器

docker run -d -P --name tomcat01-net-01 --net mynet tomcat
docker run -d -P --name tomcat01-net-02 --net mynet tomcat

Docker如何實(shí)現(xiàn)自定義網(wǎng)絡(luò)

再次查看自定義的網(wǎng)絡(luò)信息:發(fā)現(xiàn)新創(chuàng)建的兩個(gè)容器添加進(jìn)網(wǎng)絡(luò)中了。

Docker如何實(shí)現(xiàn)自定義網(wǎng)絡(luò)

使用容器名互相進(jìn)行ping測試

tomcat01-net-01 ping tomcat01-net-02:

Docker如何實(shí)現(xiàn)自定義網(wǎng)絡(luò)

tomcat01-net-02ping tomcat01-net-01:

Docker如何實(shí)現(xiàn)自定義網(wǎng)絡(luò)

現(xiàn)在不使用 --link 容器間也可以互相 ping 通了,容器間可以互相通信。

2、網(wǎng)絡(luò)連通

需求分析圖

Docker如何實(shí)現(xiàn)自定義網(wǎng)絡(luò)

創(chuàng)建tomcat01和tomcat02兩個(gè)容器:

docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat02 tomcat

Docker如何實(shí)現(xiàn)自定義網(wǎng)絡(luò)

很明顯,直接ping通是不可能的,需要先把tomcat01容器和mynet網(wǎng)絡(luò)連通。

docker network connect

docker network connect 命令是用于將 docker 容器連接到某個(gè)網(wǎng)絡(luò)中,可以使用容器名或者容器ID。

用法:

docker network connect [OPTIONS] NETWORK CONTAINER

把tomcat01容器連接到mynet網(wǎng)絡(luò)上:

docker network connect mynet tomcat01

查看mynet的網(wǎng)絡(luò)信息:docker inspect mynet

Docker如何實(shí)現(xiàn)自定義網(wǎng)絡(luò)

tomcat01已經(jīng)連接到mynet網(wǎng)絡(luò)上,像tomcat01-net-tomcat01和tomcat01-net-tomcat02一樣。

此時(shí),tomcat01已經(jīng)和mynet網(wǎng)絡(luò)中的兩個(gè)容器連接起來,因?yàn)檫@三個(gè)容器處于同一網(wǎng)絡(luò)中,當(dāng)然可以互相通信:

Docker如何實(shí)現(xiàn)自定義網(wǎng)絡(luò)

一個(gè)容器兩個(gè)網(wǎng)絡(luò):

查看tomcat01的元數(shù)據(jù):docker inspect tomcat01

Docker如何實(shí)現(xiàn)自定義網(wǎng)絡(luò)

tomcat01連接到自定義的mynet網(wǎng)絡(luò)后,就有兩個(gè)網(wǎng)絡(luò)了。

以上是“Docker如何實(shí)現(xiàn)自定義網(wǎng)絡(luò)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI