查看和更改Docker容器IP地址的操作指南
引言
Docker 提供了靈活的網(wǎng)絡(luò)配置能力,允許用戶查看和更改容器的 IP 地址。這在構(gòu)建微服務(wù)架構(gòu)、進(jìn)行網(wǎng)絡(luò)調(diào)試、或需要對(duì)網(wǎng)絡(luò)流量進(jìn)行精細(xì)控制時(shí)尤為重要。本文將詳細(xì)介紹如何查看和更改 Docker 容器的 IP 地址,并探討一些高級(jí)用例。
1. 查看 Docker 容器的 IP 地址
要查看容器的 IP 地址,可以使用 docker inspect 命令。docker inspect 是一個(gè)非常強(qiáng)大的工具,它返回容器的詳細(xì)配置信息,包含 JSON 格式的數(shù)據(jù)。你可以通過(guò)以下命令查看容器的 IP 地址:
docker inspect <container_id_or_name> | grep "IPAddress"

這將輸出與容器網(wǎng)絡(luò)相關(guān)的 IP 地址信息。如果容器連接到多個(gè)網(wǎng)絡(luò),你可能需要進(jìn)一步解析 JSON 數(shù)據(jù),或者使用 jq 工具來(lái)精確定位特定網(wǎng)絡(luò)的 IP 地址。
docker inspect <container_id_or_name> | jq '.[].NetworkSettings.Networks'
jq 是一個(gè)強(qiáng)大的命令行 JSON 處理工具,它能夠輕松地過(guò)濾和格式化輸出,但是機(jī)器可能沒(méi)有提前預(yù)裝。

2. 修改 Docker 容器的 IP 地址
修改 Docker 容器的 IP 地址通常有多種方式,包括創(chuàng)建自定義網(wǎng)絡(luò)并指定 IP 地址、通過(guò)不刪除容器來(lái)更改 IP 和網(wǎng)絡(luò)、或通過(guò)刪除并重新創(chuàng)建容器來(lái)更改 IP 地址。
2.1 創(chuàng)建自定義網(wǎng)絡(luò)并指定 IP 地址
Docker 默認(rèn)使用橋接網(wǎng)絡(luò)(bridge network)來(lái)管理容器的網(wǎng)絡(luò)。如果你希望對(duì) IP 地址進(jìn)行更精細(xì)的控制,可以通過(guò)自定義網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)。
創(chuàng)建一個(gè)自定義網(wǎng)絡(luò),指定子網(wǎng)范圍:
docker network create --subnet=172.18.0.0/16 mynet
運(yùn)行容器并指定 IP 地址:
docker run --network mynet --ip 172.18.0.22 -d nginx
2.2 不刪除容器更改 IP 地址和網(wǎng)絡(luò)
可以通過(guò) docker network connect 和 docker network disconnect 命令,將容器從一個(gè)網(wǎng)絡(luò)切換到另一個(gè)網(wǎng)絡(luò),或者更改其 IP 地址,而無(wú)需刪除容器。
將容器斷開(kāi)當(dāng)前網(wǎng)絡(luò)(如果需要切換網(wǎng)絡(luò)):
docker network disconnect bridge <container_id_or_name>
連接到新的網(wǎng)絡(luò)并指定 IP 地址:
docker network connect --ip 172.18.0.22 mynet <container_id_or_name>
通過(guò)這種方式,容器的網(wǎng)絡(luò)和 IP 地址可以在不刪除容器的情況下進(jìn)行修改。
2.3 刪除并重新創(chuàng)建容器以更改 IP 地址
如果需要更徹底地更改 IP 地址,最簡(jiǎn)單的方法是停止并刪除容器,然后使用新 IP 地址重新創(chuàng)建它。需要注意的是,直接更改正在運(yùn)行的容器的 IP 地址通常是不支持的。
停止容器:
docker stop <container_id_or_name>
刪除容器:
docker rm <container_id_or_name>
使用新的 IP 地址重新創(chuàng)建容器:
docker run --network mynet --ip 172.18.0.22 -d nginx
3. 高級(jí)用例:多網(wǎng)絡(luò)、多 IP 容器配置
在復(fù)雜的應(yīng)用場(chǎng)景中,一個(gè)容器可能需要連接到多個(gè)網(wǎng)絡(luò),并擁有多個(gè) IP 地址。Docker 支持這種高級(jí)配置,通過(guò)將容器連接到多個(gè)自定義網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)。
創(chuàng)建多個(gè)自定義網(wǎng)絡(luò):
docker network create --subnet=172.19.0.0/16 mynet1 docker network create --subnet=172.20.0.0/16 mynet2
啟動(dòng)容器,并連接到其中一個(gè)網(wǎng)絡(luò):
docker run --network mynet1 --ip 172.19.0.22 -d nginx
將容器連接到第二個(gè)網(wǎng)絡(luò),并指定 IP 地址:
docker network connect --ip 172.20.0.33 mynet2 <container_id_or_name>
此時(shí),容器將在 mynet1 中擁有 172.19.0.22,并在 mynet2 中擁有 172.20.0.33。
4. Docker 網(wǎng)絡(luò)調(diào)試與問(wèn)題排查
在復(fù)雜的網(wǎng)絡(luò)環(huán)境中,調(diào)試和排查網(wǎng)絡(luò)問(wèn)題可能非常棘手。以下是一些常用的 Docker 網(wǎng)絡(luò)調(diào)試技巧:
4.1 使用 docker network inspect 查看網(wǎng)絡(luò)詳情
通過(guò)這個(gè)命令可以查看特定網(wǎng)絡(luò)的詳細(xì)信息,包括所有連接到該網(wǎng)絡(luò)的容器以及它們的 IP 地址。
docker network inspect mynet
4.2 使用 docker exec 進(jìn)入容器并測(cè)試連接
通過(guò) docker exec 進(jìn)入容器內(nèi)部,可以使用 ping 或 curl 測(cè)試網(wǎng)絡(luò)連通性。
docker exec -it <container_id_or_name> ping 172.19.0.22
4.3 檢查防火墻規(guī)則
如果容器之間無(wú)法通信,可能是由于宿主機(jī)的防火墻規(guī)則阻止了流量。檢查和調(diào)整防火墻規(guī)則可以幫助解決這些問(wèn)題。
5. 總結(jié)
Docker 允許用戶根據(jù)需求自定義 IP 地址和網(wǎng)絡(luò)配置。通過(guò)創(chuàng)建自定義網(wǎng)絡(luò)并指定 IP 地址,可以精細(xì)控制容器的網(wǎng)絡(luò)行為,而通過(guò)連接多個(gè)網(wǎng)絡(luò),一個(gè)容器可以擁有多個(gè) IP 地址以應(yīng)對(duì)復(fù)雜的場(chǎng)景。此外,不刪除容器的情況下更改 IP 地址和網(wǎng)絡(luò)提供了更高的靈活性。
以上就是查看和更改Docker容器IP地址的操作指南的詳細(xì)內(nèi)容,更多關(guān)于查看和更改Docker IP地址的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
docker 安裝nacos并配置數(shù)據(jù)庫(kù)的教程詳解
這篇文章主要介紹了docker 安裝nacos并配置數(shù)據(jù)庫(kù)的教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
再見(jiàn) Docker如何5分鐘轉(zhuǎn)型 containerd
這篇文章主要介紹了再見(jiàn) Docker如何5分鐘轉(zhuǎn)型 containerd,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
docker創(chuàng)建容器的兩種實(shí)現(xiàn)方式(交互式與守護(hù)式)
這篇文章主要介紹了docker創(chuàng)建容器的兩種實(shí)現(xiàn)方式(交互式與守護(hù)式),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-05-05
gitlab實(shí)踐教程使用git config進(jìn)行相關(guān)的配置操作
今天小編就為大家分享一篇關(guān)于gitlab實(shí)踐教程使用git config進(jìn)行相關(guān)的配置操作,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
Windows11上Docker Desktop鏡像源配置失效排查與解決方案
這篇文章主要介紹了Windows11上Docker Desktop鏡像源配置失效排查與解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
遠(yuǎn)程docker服務(wù)器攜帶證書(shū)連接的實(shí)現(xiàn)方法
本文主要介紹了遠(yuǎn)程docker服務(wù)器攜帶證書(shū)連接的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
Docker如何給Springboot項(xiàng)目動(dòng)態(tài)傳參的實(shí)現(xiàn)方法
這篇文章主要介紹了Docker如何給Springboot項(xiàng)目動(dòng)態(tài)傳參的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
基于docker的AI-Codereview-Gitlab部署實(shí)戰(zhàn)教程
AI-Codereview-Gitlab是一個(gè)基于大模型的自動(dòng)化代碼審查工具,幫助開(kāi)發(fā)團(tuán)隊(duì)在代碼合并或提交時(shí),快速進(jìn)行智能化的審查(Code Review),提升代碼質(zhì)量和開(kāi)發(fā)效率,這篇文章主要介紹了基于docker的AI-Codereview-Gitlab部署實(shí)戰(zhàn) ,需要的朋友可以參考下2025-05-05
Docker Swarm結(jié)合Docker Compose部署集群的實(shí)現(xiàn)
本文主要介紹了Docker Swarm結(jié)合Docker Compose部署集群的實(shí)現(xiàn),通過(guò)部署和配置幫助讀者更好地理解并應(yīng)用這些工具,感興趣的可以了解一下2023-12-12

