- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認證網(wǎng)站身份V標(biāo)記
- 域名注冊服務(wù)機構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機構(gòu):新網(wǎng)數(shù)碼
在當(dāng)今的容器化技術(shù)浪潮中,Docker 已成為應(yīng)用部署的關(guān)鍵工具。而其中,Docker 網(wǎng)絡(luò)的配置與運用,宛如搭建一座數(shù)字城市的交通脈絡(luò),直接決定了容器間以及容器與外部世界的互聯(lián)互通。了解 Docker 網(wǎng)絡(luò),是解鎖高效、靈活應(yīng)用架構(gòu)的密碼。
一、 Docker 網(wǎng)絡(luò)簡介
Docker 提供了多種網(wǎng)絡(luò)模式來滿足不同的應(yīng)用場景需求。通過配置網(wǎng)絡(luò),容器可以與主機、其他容器以及外部網(wǎng)絡(luò)進行通信。理解 Docker 的網(wǎng)絡(luò)模型和配置方法對于部署復(fù)雜的應(yīng)用架構(gòu)至關(guān)重要。
二、 Docker 默認網(wǎng)絡(luò)類型
Docker 默認提供了幾種網(wǎng)絡(luò)模式:
2.1 bridge(橋接網(wǎng)絡(luò))
描述:這是 Docker 的默認網(wǎng)絡(luò)模式。每個容器都會連接到一個虛擬的網(wǎng)橋 docker0,并通過 NAT 訪問外部網(wǎng)絡(luò)。
特點:容器之間可以通過 IP 地址互相通信,但默認情況下無法通過容器名稱直接通信。
2.2 host(主機網(wǎng)絡(luò))
描述:容器與主機共享網(wǎng)絡(luò)命名空間,容器可以直接使用主機的網(wǎng)絡(luò)接口。
特點:容器不會獲得獨立的 IP 地址,而是直接使用主機的 IP 地址,適用于需要高網(wǎng)絡(luò)性能的場景。
2.3 none(無網(wǎng)絡(luò))
描述:禁用網(wǎng)絡(luò)功能,容器沒有任何網(wǎng)絡(luò)接口。
特點:適用于不需要網(wǎng)絡(luò)訪問的場景,如離線批處理任務(wù)。
2.4 overlay(覆蓋網(wǎng)絡(luò))
描述:用于跨主機的容器間通信,通常與 Docker Swarm 或 Kubernetes 集群一起使用。
特點:支持多主機間的容器通信,適合分布式應(yīng)用。
2.5 macvlan(MAC VLAN 網(wǎng)絡(luò))
描述:為每個容器分配一個 MAC 地址,并將其作為獨立設(shè)備接入物理網(wǎng)絡(luò)。
特點:適用于需要直接訪問物理網(wǎng)絡(luò)的場景。
三、 常用網(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)建一個新的自定義網(wǎng)絡(luò)(例如 bridge 網(wǎng)絡(luò)):
docker network create my_bridge_network
3.3 刪除網(wǎng)絡(luò)
刪除一個指定的網(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 斷開容器與網(wǎng)絡(luò)的連接
斷開容器與指定網(wǎng)絡(luò)的連接:
docker network disconnect my_bridge_network my_container
3.6 查看網(wǎng)絡(luò)詳細信息
查看指定網(wǎng)絡(luò)的詳細信息:
docker network inspect my_bridge_network
四、 實踐示例
為了更好地理解 Docker 網(wǎng)絡(luò)的概念和操作,下面我們通過一些實際的例子來演示常見的網(wǎng)絡(luò)配置。
示例 1:使用默認 bridge 網(wǎng)絡(luò)
1 啟動兩個容器
啟動兩個 Nginx 容器并映射端口:
docker run -d --name web1 -p 8081:80 nginxdocker run -d --name web2 -p 8082:80 nginx
2 驗證容器之間的通信
進入其中一個容器并嘗試 ping 另一個容器:
docker exec -it web1 ping web2
注意:默認情況下,使用默認的 bridge 網(wǎng)絡(luò)時,容器不能通過名稱互相通信。你需要使用容器的 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 啟動容器并連接到自定義網(wǎng)絡(luò)
docker run -d --name web1 --network my_custom_network nginxdocker run -d --name web2 --network my_custom_network nginx
3 驗證容器之間的通信
進入其中一個容器并嘗試 ping 另一個容器:
docker exec -it web1 ping web2
使用自定義 bridge 網(wǎng)絡(luò)時,容器可以通過名稱互相通信。
示例 3:使用 host 網(wǎng)絡(luò)
1 啟動容器并使用 host 網(wǎng)絡(luò)
docker run -d --name web_host --network host nginx
2 驗證容器的網(wǎng)絡(luò)配置
在主機上運行以下命令查看網(wǎng)絡(luò)接口:
ip addr show
你會發(fā)現(xiàn)容器沒有獨立的網(wǎng)絡(luò)接口,而是直接使用主機的網(wǎng)絡(luò)接口。
示例 4:使用 macvlan 網(wǎng)絡(luò)
1 創(chuàng)建 macvlan 網(wǎng)絡(luò)
假設(shè)你的主機有一個物理網(wǎng)絡(luò)接口 eth0,你可以創(chuàng)建一個 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 啟動容器并連接到 macvlan 網(wǎng)絡(luò)
docker run -d --name my_macvlan_container --network my_macvlan_network nginx
3 驗證容器的網(wǎng)絡(luò)配置
進入容器并檢查其網(wǎng)絡(luò)接口:
docker exec -it my_macvlan_container ip addr show
五、 網(wǎng)絡(luò)高級配置
5.1 DNS 配置
Docker 提供了一些選項來配置容器的 DNS 設(shè)置:
--dns:指定 DNS 服務(wù)器地址。
--hostname:設(shè)置容器的主機名。
--domainname:設(shè)置容器的域名。
示例:
docker run -d --name my_container --dns 8.8.8.8 --hostname mycontainer.example.com nginx
5.2 端口映射
使用 -p 或 --publish 選項將容器的端口映射到主機的端口:
docker run -d --name my_container -p 8080:80 nginx
5.3 端口范圍映射
你還可以映射端口范圍:
docker run -d --name my_container -p 8080-8085:80 nginx
通過對 Docker 網(wǎng)絡(luò)的多方面探索,從網(wǎng)絡(luò)類型的選擇,到命令的熟練運用,再到高級配置的實踐,我們能看到 Docker 網(wǎng)絡(luò)在構(gòu)建復(fù)雜應(yīng)用架構(gòu)時的強大支撐能力。它不僅提升了部署效率,更為現(xiàn)代分布式應(yīng)用的發(fā)展鋪平了道路。
想了解更多相關(guān)技術(shù)小分享可以上藍隊云官網(wǎng)查閱,更多技術(shù)問題,也可以直接咨詢。同時,藍隊云整理了運維必備的工具包免費分享給大家使用,需要的朋友可以直接咨詢。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP