給docker配置指定ip的超詳細(xì)圖解
本文主要使用docker network進(jìn)行ip的配置(本文主要使用一個(gè)容器來(lái)試驗(yàn))
1、創(chuàng)建一個(gè)簡(jiǎn)單容器,并查看它的詳細(xì)信息
1.1 創(chuàng)建容器
1.2 查看IP信息
?2、查看docker 網(wǎng)絡(luò)信息
2.1 查看docker網(wǎng)絡(luò)列表
圖中bridge是我這里docker的默認(rèn)橋接網(wǎng)絡(luò),通過(guò)查看網(wǎng)絡(luò)詳細(xì)信息我們可以發(fā)現(xiàn),我們的test容器使用的是bridge如下:
[root@192 ~]# docker network inspect bridge [ { "Name": "bridge", "Id": "40b01687a277bf4622dc67bd454eb1f9d6bbab6bf0c547843254c852b680661d", "Created": "2023-06-16T20:22:32.094125218+08:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": null, "Config": [ { "Subnet": "172.17.0.0/16", "Gateway": "172.17.0.1" } ] }, "Internal": false, "Attachable": false, "Containers": { "b015805631839406a7ef4ced2b2cd810dc6b7a08d26f02792858598eec436a46": { "Name": "test", "EndpointID": "d4ddc395b7185a61b0a4008f28286c74bf701493357225656a363bfe8f80e99c", "MacAddress": "02:42:ac:11:00:02", "IPv4Address": "172.17.0.2/16", "IPv6Address": "" } }, "Options": { "com.docker.network.bridge.default_bridge": "true", "com.docker.network.bridge.enable_icc": "true", "com.docker.network.bridge.enable_ip_masquerade": "true", "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0", "com.docker.network.bridge.name": "docker0", "com.docker.network.driver.mtu": "1500" }, "Labels": {} } ]
而我們嘗試修改test的ip時(shí),系統(tǒng)會(huì)指出“用戶(hù)指定的IP地址僅在用戶(hù)定義的網(wǎng)絡(luò)上支持”,如下圖:
所以如果我們要指定容器的ip,我們就要使用自己定義的網(wǎng)絡(luò)。(同時(shí),當(dāng)我們使用自己定義的網(wǎng)絡(luò)但是沒(méi)有分配指定ip的時(shí)候,ip的分配將由容器依照容器啟動(dòng)的順序,在對(duì)應(yīng)的網(wǎng)段內(nèi)從2開(kāi)始往后分配)。
3、自定義容器網(wǎng)絡(luò)
docker network create --driver bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 test
--driver 設(shè)置網(wǎng)絡(luò)模式, bridge 為橋接模式(可以不寫(xiě),默認(rèn)為橋接)
Docker有四種網(wǎng)絡(luò)模式
host:容器和主機(jī)共享一個(gè)網(wǎng)絡(luò)。
container:容器和另外一個(gè)容器共享一個(gè)網(wǎng)絡(luò)。
none:不進(jìn)行網(wǎng)絡(luò)連接。
bridge:默認(rèn)配置,橋接模式。
--subnet 設(shè)置網(wǎng)段(可以不寫(xiě),默認(rèn)為當(dāng)前所有網(wǎng)段中數(shù)值上最大的網(wǎng)段+1的網(wǎng)段,比如當(dāng)前數(shù)值上最大的網(wǎng)段是172.20.0.0/16,則不寫(xiě)的話默認(rèn)為172.21.0.0/16)
172.18.0.0/16 主機(jī)部分全0
--getway 設(shè)置網(wǎng)關(guān)(可以不寫(xiě),不寫(xiě)的話,就沒(méi)有)
172.18.0.1 一般是主機(jī)部分的數(shù)值從1開(kāi)始遞增,有n個(gè)網(wǎng)關(guān),按理就是172.18.0.2
到172.18.0.n(n<256)
4、配置ip
此時(shí)ip為空是因?yàn)楫?dāng)前容器還沒(méi)有打開(kāi),只有當(dāng)容器打開(kāi)的時(shí)候,docker才會(huì)開(kāi)始給容器分配ip,而當(dāng)ip沒(méi)有被定義的時(shí)候,一般ip默認(rèn)是從2開(kāi)始依次遞增(一般網(wǎng)關(guān)主機(jī)部分的數(shù)值是1)。
ps:docker自動(dòng)分配是基于當(dāng)前網(wǎng)絡(luò)中的ip的,而我們自定義ip是固定的,也就是說(shuō),如果你定義了172.18.0.2這個(gè)ip,而當(dāng)有一個(gè)容器的ip是由docker自動(dòng)分配的時(shí)候,此時(shí)如果自定義ip的容器沒(méi)開(kāi)啟的話,docker分配的ip依舊是從172.18.0.2開(kāi)始,而因?yàn)檫@兩個(gè)ip相同,所以如果先開(kāi)啟docker自動(dòng)分配ip的容器,我們自定義ip的容器在開(kāi)啟的時(shí)候就會(huì)發(fā)生ip沖突從而啟動(dòng)失敗。
5、測(cè)試
我們從起docker再打開(kāi)test查看進(jìn)行測(cè)試
如此,我們就配好固定ip啦
6、常見(jiàn)問(wèn)題
序號(hào) | 報(bào)錯(cuò) | 翻譯 | 理由 | 解決方法 |
---|---|---|---|---|
1 | Error response from daemon: User specified IP address is supported on user defined networks only | 來(lái)自守護(hù)進(jìn)程的錯(cuò)誤響應(yīng):用戶(hù)指定的IP地址僅在用戶(hù)定義的網(wǎng)絡(luò)上支持 | 我們只能指定在我們自定義的網(wǎng)絡(luò)上支持的IP | 無(wú),但是如果只是為了配置固定ip,可以自定義網(wǎng)絡(luò)進(jìn)行配置 |
2 | Error response from daemon: Address already in use | ip地址已在被使用 | 1、自定義的ip已被分配,可能是自動(dòng)分配的時(shí)候分配掉的 2、在修改容器ip時(shí),如果容器此時(shí)開(kāi)著,并且修改的網(wǎng)段與當(dāng)前網(wǎng)段一致,也會(huì)有可能出現(xiàn)這個(gè)問(wèn)題 | 1、先開(kāi)啟自定義ip的容器 2、先關(guān)閉容器,并斷開(kāi)網(wǎng)段,否則修改可能會(huì)不起作用。 |
6.1 ip無(wú)法被自定義
6.2 ip沖突
6.3 等等等系列問(wèn)題……
錯(cuò)誤待開(kāi)發(fā)
總結(jié)
到此這篇關(guān)于給docker配置指定ip的文章就介紹到這了,更多相關(guān)docker配置指定ip內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker+keepalived+nginx實(shí)現(xiàn)主從熱備的方法示例
這篇文章主要介紹了Docker+keepalived+nginx實(shí)現(xiàn)主從熱備的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Docker安裝Presto連接Hive的詳細(xì)過(guò)程
這篇文章主要介紹了Docker安裝Presto連接Hive的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09Docker配置本地倉(cāng)庫(kù)web訪問(wèn)的實(shí)現(xiàn)
本文主要介紹了Docker配置本地倉(cāng)庫(kù)web訪問(wèn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-06-06Docker部署MinIO對(duì)象存儲(chǔ)服務(wù)器結(jié)合Cpolar實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)的操作方法
MinIO是一個(gè)開(kāi)源的軟件,可以免費(fèi)使用,還可以在普通硬件上運(yùn)行,降低了存儲(chǔ)成本,本文介紹在本地Docker中部署MinIO服務(wù),并實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)管理界面,節(jié)約云服務(wù)器運(yùn)行成本,感興趣的朋友一起看看吧2023-12-12使用docker?compose快速配置一組容器服務(wù)詳解
這篇文章主要為大家介紹了使用docker-?compose快速配置一組容器服務(wù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11Docker?安裝Tomcat、實(shí)現(xiàn)Tomcat集群的詳細(xì)過(guò)程
這篇文章主要介紹了Docker安裝Tomcat、實(shí)現(xiàn)Tomcat集群,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06