溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Docker如何固定IP設(shè)置的方法

發(fā)布時間:2020-09-03 14:15:12 來源:腳本之家 閱讀:311 作者:Johnnian 欄目:服務(wù)器

由于工作需要,需要給Docker設(shè)置固定IP,在網(wǎng)上的查找了一些資料,自己試著實踐一下,留個筆記。

經(jīng)常用Docker模擬項目在生產(chǎn)環(huán)境中的部署,往往需要同時開好幾臺Docker容器,而且有時安裝的軟件需要綁定Docker局域網(wǎng)中的其他容器,如 MongoDB 副本集部署的時候,就需要綁定其他容器的內(nèi)網(wǎng)IP。

但是,Docker 每次重啟后,容器的IP地址會變化,查詢了資料,Docker是支持設(shè)置固定IP的。

Docker 默認網(wǎng)絡(luò)

Docker安裝后,默認會創(chuàng)建下面三種網(wǎng)絡(luò)類型:

$ docker network ls
NETWORK ID     NAME        DRIVER       SCOPE
9781b1f585ae    bridge       bridge       local
1252da701e55    host        host        local
237ea3d5cfbf    none        null        local

啟動 Docker的時候,用 --network 參數(shù),可以指定網(wǎng)絡(luò)類型,如:

~ docker run -itd --name test1 --network bridge --ip 172.17.0.10 centos:latest /bin/bash

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

默認情況下啟動的Docker容器,都是使用 bridge,Docker安裝時創(chuàng)建的橋接網(wǎng)絡(luò),每次Docker容器重啟時,會按照順序獲取對應(yīng)的IP地址,這個就導致重啟下,Docker的IP地址就變了

none:無指定網(wǎng)絡(luò)

使用 --network=none ,docker 容器就不會分配局域網(wǎng)的IP

host: 主機網(wǎng)絡(luò)

使用 --network=host,此時,Docker 容器的網(wǎng)絡(luò)會附屬在主機上,兩者是互通的。

例如,在容器中運行一個Web服務(wù),監(jiān)聽8080端口,則主機的8080端口就會自動映射到容器中。

創(chuàng)建自定義網(wǎng)絡(luò):(設(shè)置固定IP)

啟動Docker容器的時候,使用默認的網(wǎng)絡(luò)是不支持指派固定IP的,如下:

~ docker run -itd --net bridge --ip 172.17.0.10 centos:latest /bin/bash
6eb1f228cf308d1c60db30093c126acbfd0cb21d76cb448c678bab0f1a7c0df6
docker: Error response from daemon: User specified IP address is supported on user defined networks only.

因此,需要創(chuàng)建自定義網(wǎng)絡(luò),下面是具體的步驟:

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

創(chuàng)建自定義網(wǎng)絡(luò),并且指定網(wǎng)段:172.18.0.0/16

➜ ~ docker network create --subnet=172.18.0.0/16 mynetwork
➜ ~ docker network ls
NETWORK ID     NAME        DRIVER       SCOPE
9781b1f585ae    bridge       bridge       local
1252da701e55    host        host        local
4f11ae9c85de    mynetwork      bridge       local
237ea3d5cfbf    none        null        local

步驟2: 創(chuàng)建Docker容器

復(fù)制代碼 代碼如下:

➜  ~ docker run -itd --name networkTest1 --net mynetwork --ip 172.18.0.2 centos:latest /bin/bash

這個時候,創(chuàng)建的Docker容器就會持有 172.18.0.2 這個IP.

[root@ec8e31938fe7 /]# ifconfig
eth0   Link encap:Ethernet HWaddr 02:42:AC:12:00:02
     inet addr:172.18.0.2 Bcast:0.0.0.0 Mask:255.255.0.0
     inet6 addr: fe80::42:acff:fe12:2/64 Scope:Link
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:88 errors:0 dropped:0 overruns:0 frame:0
     TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:0
     RX bytes:4056 (3.9 KiB) TX bytes:1068 (1.0 KiB)

lo    Link encap:Local Loopback
     inet addr:127.0.0.1 Mask:255.0.0.0
     inet6 addr: ::1/128 Scope:Host
     UP LOOPBACK RUNNING MTU:65536 Metric:1
     RX packets:0 errors:0 dropped:0 overruns:0 frame:0
     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1
     RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

鏈接

Docker Container Networking

為Docker容器指定自定義網(wǎng)段的固定IP/靜態(tài)IP地址 

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI