溫馨提示×

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

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

docker網(wǎng)絡(luò)怎么配置

發(fā)布時(shí)間:2022-02-16 15:12:11 來源:億速云 閱讀:392 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“docker網(wǎng)絡(luò)怎么配置”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

docker網(wǎng)絡(luò)怎么配置

Docker 配置容器的步驟是:

1.創(chuàng)建一對(duì)虛擬接口

2.在主Docker主機(jī)內(nèi)部給它一個(gè)唯一的名稱,比如veth75f9,綁定它到docker0或者Docker使用的任何網(wǎng)橋上

3.讓其他的接口翻墻進(jìn)入新的容器(已經(jīng)提供了lo接口),在容器的獨(dú)立和唯一網(wǎng)絡(luò)接口命名空間內(nèi),重新命名它為更漂亮的名字eth0,名稱不要和其他的物理接口沖突。

4.在網(wǎng)橋的網(wǎng)絡(luò)地址訪問內(nèi)給容器的eth0一個(gè)新的IP地址,設(shè)置它的缺省路由為Docker主機(jī)在網(wǎng)橋上擁有的IP地址。

這些步驟結(jié)束后,容器將立即擁有一個(gè)eth0(虛擬)網(wǎng)卡,并會(huì)發(fā)現(xiàn)它自己可以和其他的容器以及互聯(lián)網(wǎng)通訊。 你可以使用 –net= 這個(gè)選項(xiàng)來執(zhí)行 docker run 啟動(dòng)一個(gè)容器,這個(gè)選項(xiàng)有一下可選參數(shù)。

–net=bridge— 默認(rèn)選項(xiàng),用網(wǎng)橋的方式來連接docker容器。

–net=host— docker跳過配置容器的獨(dú)立網(wǎng)絡(luò)棧。

–net=container:NAME_or_ID— 告訴docker讓這個(gè)新建的容器使用已有容器的網(wǎng)絡(luò)配置。

–net=none— 告訴docker為新建的容器建立一個(gè)網(wǎng)絡(luò)棧,但不對(duì)這個(gè)網(wǎng)絡(luò)棧進(jìn)行任何配置,所以只能訪問本地網(wǎng)絡(luò),沒有外網(wǎng)。

一,橋接模式

這是 docker 默認(rèn)的網(wǎng)絡(luò)模式,Docker 后臺(tái)程序會(huì)創(chuàng)建 docker0,一個(gè)虛擬的以太網(wǎng)橋,用于自動(dòng)轉(zhuǎn)發(fā)與之連接的任意網(wǎng)絡(luò)接口間的數(shù)據(jù)包。在bridge模式下,連在同一網(wǎng)橋上的容器可以相互通信。

docker網(wǎng)絡(luò)怎么配置
[root@sta2 docker]# docker run -it -P --name mynginx nginx #為容器做端口映射

使用橋接模式時(shí),docker會(huì)創(chuàng)建一個(gè)docker0 的網(wǎng)橋,并將這個(gè)網(wǎng)絡(luò)設(shè)備加入到docker0網(wǎng)橋中,可以通過brctl show命令查看。

[root@sta2 ~]# brctl showbridge name bridge id STP enabled interfaces
docker0 8000.3e2d35d38bae no vethab6aea2

從docker0子網(wǎng)中分配一個(gè)IP給容器使用,并設(shè)置docker0的IP地址為容器的默認(rèn)網(wǎng)關(guān)。

容器中的網(wǎng)絡(luò)配置:

docker網(wǎng)絡(luò)怎么配置

查看映射端口配置:

[root@sta2 docker]# docker ps -l
docker網(wǎng)絡(luò)怎么配置

或者使用以下方法查看映射端口配置:

[root@sta2 docker]# docker port mynginx443/tcp -> 0.0.0.0:32774
80/tcp -> 0.0.0.0:32775

當(dāng)使用 -P 標(biāo)記時(shí),Docker 會(huì)隨機(jī)映射一個(gè) 49000~49900 的端口到內(nèi)部容器開放的網(wǎng)絡(luò)端口,nginx 映射的端口固定為32774 和 32775。

查看訪問日志:

[root@sta2 docker]# docker logs -f mynginx
docker網(wǎng)絡(luò)怎么配置

使用 -p(小寫的)則可以指定要映射的端口,并且,在一個(gè)指定端口上只可以綁定一個(gè)容器,-p 標(biāo)記可以多次使用來綁定多個(gè)端口。支持的格式有 ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort 。

可以使用 hostPort:containerPort 映射所有接口地址:

# docker run -d -p 5000:5000 --name mydocker nginx

此時(shí)默認(rèn)會(huì)綁定本地所有接口上的所有地址。 可以使用 ip:hostPort:containerPort 格式指定映射使用一個(gè)特定地址,映射到指定地址的指定端口

# docker run -d -p 127.0.0.1:5000:5000 --name mydocker nginx

使用 ip::containerPort 綁定 localhost 的任意端口到容器的 5000 端口,本地主機(jī)會(huì)自動(dòng)分配一個(gè)端口。映射到指定地址的任意端口:

# docker run -d -p 127.0.0.1::5000 --name mydocker nginx

docker 做端口映射時(shí)會(huì)生成 iptables 規(guī)則,端口映射前的 iptables 規(guī)則:

docker網(wǎng)絡(luò)怎么配置

端口映射后的 iptables 規(guī)則:

docker網(wǎng)絡(luò)怎么配置

二,host 模式

此模式使用主機(jī)的網(wǎng)絡(luò)

# docker run -it --name feiyu-host --net=host busybox sh
docker網(wǎng)絡(luò)怎么配置

三,other container 模式

這種模式下與其他容器共享一個(gè)網(wǎng)絡(luò)

# docker run -it --name feiyu-con --net=container:feiyu busybox sh
docker網(wǎng)絡(luò)怎么配置

四,none 模式

這種模式只能訪問本地網(wǎng)絡(luò),沒有外網(wǎng)。

docker網(wǎng)絡(luò)怎么配置

“docker網(wǎng)絡(luò)怎么配置”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

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

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎ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