Docker設(shè)置固定IP地址的方法詳解
一、查看Docker的網(wǎng)絡(luò)類型
Docker有三種網(wǎng)絡(luò)模式:Brigde,host,none。Brigde是常用的網(wǎng)絡(luò)模式,也是缺省模式。
#docker network ls ----查看docker下網(wǎng)絡(luò)模式 NETWORK ID NAME DRIVER SCOPE 9781b1f585ae bridge bridge local 1252da701e55 host host local 237ea3d5cfbf none null local
啟動 Docker的時候,用 --network 參數(shù),可以指定網(wǎng)絡(luò)類型。
1、brigde
默認情況下啟動的Docker容器,使用 bridge,Docker安裝時創(chuàng)建的橋接網(wǎng)絡(luò),每次Docker容器重啟時,會按照順序獲取對應(yīng)的IP地址,這個就導(dǎo)致重啟docker后,Docker的IP地址就變了。
docker run -itd --name test1 --network bridge --ip 172.17.0.10 centos:latest /bin/bash
2、host
使用 --network=none ,docker 容器就不會分配局域網(wǎng)的IP。
3、none
使用 --network=host,此時,Docker 容器的網(wǎng)絡(luò)會附屬在主機上,兩者是互通的。
例如,在容器中運行一個Web服務(wù),監(jiān)聽8080端口,則主機的8080端口就會自動映射到容器中。
二、創(chuàng)建docker時設(shè)置固定IP
可以使用Docker的 –ip參數(shù) 指定容器的IP地址。
例如,使用以下命令運行一個名為mycontainer的容器,并將其IP地址設(shè)為192.168.0.100:
docker run -d --name=mycontainer --ip=192.168.0.100 myimage
三、為已創(chuàng)建docker設(shè)置固定IP
如果需要為已經(jīng)存在的容器指定IP地址,則可以通過以下步驟操作。
1、創(chuàng)建一個新的固定IP網(wǎng)絡(luò)
首先,需要使用以下命令創(chuàng)建一個新的固定IP網(wǎng)絡(luò)。
在該例子中,將網(wǎng)絡(luò)名設(shè)置為 “mynetwork”,IP地址范圍為 “172.100.0.2/16”,默認網(wǎng)關(guān)為 “172.100.0.1”:
docker network create --subnet=172.100.0.0/16 --gateway=172.100.0.1 --ip-range=172.100.0.2/16 -d bridge container-network
2、將容器加入新網(wǎng)絡(luò)
然后,將需要指定IP地址的容器加入這個新網(wǎng)絡(luò)。使用以下命令將容器 “mycontainer” 加入到 “mynetwork” 網(wǎng)絡(luò)中,并分配IP地址 “192.168.0.100”:
docker network connect --ip=192.168.0.100 mynetwork mycontainer
現(xiàn)在,容器 “mycontainer” 將在 “mynetwork” 網(wǎng)絡(luò)中,它的IP地址為 “192.168.0.100”。
注意,如果容器已加入一個Docker網(wǎng)絡(luò)中,則必須首先將其從該網(wǎng)絡(luò)中刪除,然后再將其加入到新網(wǎng)絡(luò)中。使用以下命令將容器從當前Docker網(wǎng)絡(luò)中刪除:
docker network disconnect bridge mycontainer
然后再使用上面的命令將容器加入新網(wǎng)絡(luò)中。
最后,如果不再需要舊網(wǎng)絡(luò),則可以使用以下命令刪除它:
docker network rm old_network
四、Docker Compose中定義容器的IP地址
使用networks設(shè)置固定IP地址,可以使用Docker Compose的networks設(shè)置容器的固定IP地址。例如,使用以下配置文件定義一個名為myapp的服務(wù),并將其IP地址設(shè)置為192.168.0.100:
version: '3' services: myapp: build: . networks: mynetwork: ipv4_address: 192.168.0.100 networks: mynetwork: driver: bridge ipam: driver: default config: - subnet: 192.168.0.0/24
在這個配置文件中,使用了Docker Compose的networks設(shè)置一個名為mynetwork的網(wǎng)絡(luò),并將其IP地址設(shè)置為192.168.0.100。然后,在myapp服務(wù)中,將networks參數(shù)設(shè)置為mynetwork,將myapp容器加入到這個網(wǎng)絡(luò)中,并設(shè)置它的IP地址為192.168.0.100。最后,IPAM(IP地址管理)配置了一個IP地址段為192.168.0.0/24的子網(wǎng),以供該網(wǎng)絡(luò)使用。
五、Dockerfile中設(shè)置IP地址
在Dockerfile中設(shè)置IP地址。可以使用ENV命令設(shè)置容器的IP地址變量,然后以這個變量為參數(shù)啟動容器。
例如:
#vim Dockerfile FROM ubuntu ENV MY_IP 192.168.0.100 CMD ["/bin/bash", "-c", "echo My IP address is $MY_IP"]
vim docker-compose.yml
version: '3' services: myapp: build: . command: /bin/bash -c "echo My IP address is $MY_IP"
例子中,Dockerfile中定義了一個名為MY_IP的變量,并設(shè)置為192.168.0.100。然后,在docker-compose.yml文件中,使用command參數(shù)啟動容器,并將MY_IP變量替換到命令中。這樣,在容器啟動時就可以看到應(yīng)該輸出的IP地址了。
總結(jié)
到此這篇關(guān)于Docker設(shè)置固定IP地址的文章就介紹到這了,更多相關(guān)Docker設(shè)置固定IP地址內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker-compose.yaml設(shè)置中國時區(qū)方式
這篇文章主要介紹了docker-compose.yaml設(shè)置中國時區(qū)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11解決Docker報錯:“docker build“ requires exactly&nb
這篇文章主要介紹了解決Docker報錯:“docker build“ requires exactly 1 argument.具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12docker部署Macvlan實現(xiàn)跨主機網(wǎng)絡(luò)通信的實現(xiàn)
這篇文章主要介紹了docker部署Macvlan實現(xiàn)跨主機網(wǎng)絡(luò)通信的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-10-10win10環(huán)境下安裝Docker的實現(xiàn)
這篇文章主要介紹了win10環(huán)境下安裝Docker的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09docker安裝tomcat dubbo-admin實例技巧
在本篇文章里小編給大家整理的是關(guān)于docker安裝tomcat dubbo-admin實例技巧,有需要的朋友們可以參考下。2020-01-01使用Docker搭建MySQL數(shù)據(jù)庫服務(wù)的方法詳解
在現(xiàn)代應(yīng)用程序開發(fā)中,使用數(shù)據(jù)庫是必不可少的,文將介紹如何使用Docker搭建MySQL數(shù)據(jù)庫服務(wù),讓你在本地環(huán)境中快速部署一個MySQL實例,感興趣的可以了解下2024-03-03