国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

幫助中心 >  行業(yè)資訊 >  云計(jì)算 >  從零開(kāi)始學(xué)Docker系列 Docker 容器網(wǎng)絡(luò)

從零開(kāi)始學(xué)Docker系列 Docker 容器網(wǎng)絡(luò)

2025-02-14 17:55:19 2444

在當(dāng)今的容器化技術(shù)浪潮中,Docker 已成為應(yīng)用部署的關(guān)鍵工具。而其中,Docker 網(wǎng)絡(luò)的配置與運(yùn)用,宛如搭建一座數(shù)字城市的交通脈絡(luò),直接決定了容器間以及容器與外部世界的互聯(lián)互通。了解 Docker 網(wǎng)絡(luò),是解鎖高效、靈活應(yīng)用架構(gòu)的密碼。


一、 Docker 網(wǎng)絡(luò)簡(jiǎn)介


Docker 提供了多種網(wǎng)絡(luò)模式來(lái)滿足不同的應(yīng)用場(chǎng)景需求。通過(guò)配置網(wǎng)絡(luò),容器可以與主機(jī)、其他容器以及外部網(wǎng)絡(luò)進(jìn)行通信。理解 Docker 的網(wǎng)絡(luò)模型和配置方法對(duì)于部署復(fù)雜的應(yīng)用架構(gòu)至關(guān)重要。

二、 Docker 默認(rèn)網(wǎng)絡(luò)類(lèi)型

Docker 默認(rèn)提供了幾種網(wǎng)絡(luò)模式:

2.1 bridge(橋接網(wǎng)絡(luò))

  • 描述:這是 Docker 的默認(rèn)網(wǎng)絡(luò)模式。每個(gè)容器都會(huì)連接到一個(gè)虛擬的網(wǎng)橋 docker0,并通過(guò) NAT 訪問(wèn)外部網(wǎng)絡(luò)。

  • 特點(diǎn):容器之間可以通過(guò) IP 地址互相通信,但默認(rèn)情況下無(wú)法通過(guò)容器名稱直接通信。

2.2 host(主機(jī)網(wǎng)絡(luò))

  • 描述:容器與主機(jī)共享網(wǎng)絡(luò)命名空間,容器可以直接使用主機(jī)的網(wǎng)絡(luò)接口。

  • 特點(diǎn):容器不會(huì)獲得獨(dú)立的 IP 地址,而是直接使用主機(jī)的 IP 地址,適用于需要高網(wǎng)絡(luò)性能的場(chǎng)景。

2.3 none(無(wú)網(wǎng)絡(luò))

  • 描述:禁用網(wǎng)絡(luò)功能,容器沒(méi)有任何網(wǎng)絡(luò)接口。

  • 特點(diǎn):適用于不需要網(wǎng)絡(luò)訪問(wèn)的場(chǎng)景,如離線批處理任務(wù)。

2.4 overlay(覆蓋網(wǎng)絡(luò))

  • 描述:用于跨主機(jī)的容器間通信,通常與 Docker Swarm 或 Kubernetes 集群一起使用。

  • 特點(diǎn):支持多主機(jī)間的容器通信,適合分布式應(yīng)用。

2.5 macvlan(MAC VLAN 網(wǎng)絡(luò))

  • 描述:為每個(gè)容器分配一個(gè) MAC 地址,并將其作為獨(dú)立設(shè)備接入物理網(wǎng)絡(luò)。

  • 特點(diǎn):適用于需要直接訪問(wèn)物理網(wǎng)絡(luò)的場(chǎng)景。

三、 常用網(wǎng)絡(luò)命令

3.1 查看網(wǎng)絡(luò)

列出當(dāng)前所有的 Docker 網(wǎng)絡(luò):


docker network ls

3.2 創(chuàng)建網(wǎng)絡(luò)

創(chuàng)建一個(gè)新的自定義網(wǎng)絡(luò)(例如 bridge 網(wǎng)絡(luò)):


docker network create my_bridge_network

3.3 刪除網(wǎng)絡(luò)

刪除一個(gè)指定的網(wǎng)絡(luò):


docker network rm my_bridge_network

3.4 連接容器到網(wǎng)絡(luò)

將容器連接到指定的網(wǎng)絡(luò):


docker network connect my_bridge_network my_container

3.5 斷開(kāi)容器與網(wǎng)絡(luò)的連接

斷開(kāi)容器與指定網(wǎng)絡(luò)的連接:


docker network disconnect my_bridge_network my_container

3.6 查看網(wǎng)絡(luò)詳細(xì)信息

查看指定網(wǎng)絡(luò)的詳細(xì)信息:


docker network inspect my_bridge_network

四、 實(shí)踐示例

為了更好地理解 Docker 網(wǎng)絡(luò)的概念和操作,下面我們通過(guò)一些實(shí)際的例子來(lái)演示常見(jiàn)的網(wǎng)絡(luò)配置。

示例 1:使用默認(rèn) bridge 網(wǎng)絡(luò)

1 啟動(dòng)兩個(gè)容器

啟動(dòng)兩個(gè) Nginx 容器并映射端口:


docker run -d --name web1 -p 8081:80 nginxdocker run -d --name web2 -p 8082:80 nginx

2 驗(yàn)證容器之間的通信

進(jìn)入其中一個(gè)容器并嘗試 ping 另一個(gè)容器:


docker exec -it web1 ping web2

注意:默認(rèn)情況下,使用默認(rèn)的 bridge 網(wǎng)絡(luò)時(shí),容器不能通過(guò)名稱互相通信。你需要使用容器的 IP 地址或者創(chuàng)建自定義的 bridge 網(wǎng)絡(luò)。

示例 2:創(chuàng)建自定義 bridge 網(wǎng)絡(luò)

1 創(chuàng)建自定義 bridge 網(wǎng)絡(luò)


docker network create my_custom_network

2 啟動(dòng)容器并連接到自定義網(wǎng)絡(luò)


docker run -d --name web1 --network my_custom_network nginxdocker run -d --name web2 --network my_custom_network nginx

3 驗(yàn)證容器之間的通信

進(jìn)入其中一個(gè)容器并嘗試 ping 另一個(gè)容器:


docker exec -it web1 ping web2

使用自定義 bridge 網(wǎng)絡(luò)時(shí),容器可以通過(guò)名稱互相通信。

示例 3:使用 host 網(wǎng)絡(luò)

1 啟動(dòng)容器并使用 host 網(wǎng)絡(luò)


docker run -d --name web_host --network host nginx

2 驗(yàn)證容器的網(wǎng)絡(luò)配置

在主機(jī)上運(yùn)行以下命令查看網(wǎng)絡(luò)接口:


ip addr show

你會(huì)發(fā)現(xiàn)容器沒(méi)有獨(dú)立的網(wǎng)絡(luò)接口,而是直接使用主機(jī)的網(wǎng)絡(luò)接口。

示例 4:使用 macvlan 網(wǎng)絡(luò)

1 創(chuàng)建 macvlan 網(wǎng)絡(luò)

假設(shè)你的主機(jī)有一個(gè)物理網(wǎng)絡(luò)接口 eth0,你可以創(chuàng)建一個(gè) macvlan 網(wǎng)絡(luò):


docker network create -d macvlan \\\\  --subnet=192.168.1.0/24 \\\\  --gateway=192.168.1.1 \\\\  -o parent=eth0 \\\\  my_macvlan_network

2 啟動(dòng)容器并連接到 macvlan 網(wǎng)絡(luò)


docker run -d --name my_macvlan_container --network my_macvlan_network nginx

3 驗(yàn)證容器的網(wǎng)絡(luò)配置

進(jìn)入容器并檢查其網(wǎng)絡(luò)接口:


docker exec -it my_macvlan_container ip addr show

五、 網(wǎng)絡(luò)高級(jí)配置

5.1 DNS 配置

Docker 提供了一些選項(xiàng)來(lái)配置容器的 DNS 設(shè)置:

  • --dns:指定 DNS 服務(wù)器地址。

  • --hostname:設(shè)置容器的主機(jī)名。

  • --domainname:設(shè)置容器的域名。

示例:


docker run -d --name my_container --dns 8.8.8.8 --hostname mycontainer.example.com nginx

5.2 端口映射

使用 -p 或 --publish 選項(xiàng)將容器的端口映射到主機(jī)的端口:


docker run -d --name my_container -p 8080:80 nginx

5.3 端口范圍映射

你還可以映射端口范圍:


docker run -d --name my_container -p 8080-8085:80 nginx



通過(guò)對(duì) Docker 網(wǎng)絡(luò)的多方面探索,從網(wǎng)絡(luò)類(lèi)型的選擇,到命令的熟練運(yùn)用,再到高級(jí)配置的實(shí)踐,我們能看到 Docker 網(wǎng)絡(luò)在構(gòu)建復(fù)雜應(yīng)用架構(gòu)時(shí)的強(qiáng)大支撐能力。它不僅提升了部署效率,更為現(xiàn)代分布式應(yīng)用的發(fā)展鋪平了道路。


想了解更多相關(guān)技術(shù)小分享可以上藍(lán)隊(duì)云官網(wǎng)查閱,更多技術(shù)問(wèn)題,也可以直接咨詢。同時(shí),藍(lán)隊(duì)云整理了運(yùn)維必備的工具包免費(fèi)分享給大家使用,需要的朋友可以直接咨詢。


提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題: