因爲工做須要,須要給Docker設置固定IP,在網上的查找了一些資料,本身試着實踐一下,留個筆記。docker
常常用Docker模擬項目在生產環境中的部署,每每須要同時開好幾臺Docker容器,並且有時安裝的軟件須要綁定Docker局域網中的其餘容器,如 MongoDB 副本集部署的時候,就須要綁定其餘容器的內網IP。centos
可是,Docker 每次重啓後,容器的IP地址會變化,查詢了資料,Docker是支持設置固定IP的。bash
Docker 默認網絡網絡
Docker安裝後,默認會建立下面三種網絡類型:oop
1
2
3
4
5
|
$ docker network
ls
NETWORK ID NAME DRIVER SCOPE
9781b1f585ae bridge bridge
local
1252da701e55 host host
local
237ea3d5cfbf none null
local
|
啓動 Docker的時候,用 --network
參數,能夠指定網絡類型,如:spa
1
|
~ docker run -itd --name test1 --network bridge --ip 172.17.0.10 centos:latest
/bin/bash
|
bridge:橋接網絡.net
默認狀況下啓動的Docker容器,都是使用 bridge,Docker安裝時建立的橋接網絡,每次Docker容器重啓時,會按照順序獲取對應的IP地址,這個就致使重啓下,Docker的IP地址就變了3d
none:無指定網絡code
使用 --network=none
,docker 容器就不會分配局域網的IPhtm
host: 主機網絡
使用 --network=host
,此時,Docker 容器的網絡會附屬在主機上,二者是互通的。
例如,在容器中運行一個Web服務,監聽8080端口,則主機的8080端口就會自動映射到容器中。
建立自定義網絡:(設置固定IP)
啓動Docker容器的時候,使用默認的網絡是不支持指派固定IP的,以下:
1
2
3
|
~ 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.
|
所以,須要建立自定義網絡,下面是具體的步驟:
步驟1: 建立自定義網絡
建立自定義網絡,而且指定網段:172.18.0.0/16
1
2
3
4
5
6
7
|
➜ ~ 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: 建立Docker容器
這個時候,建立的Docker容器就會持有 172.18.0.2 這個IP.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[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)
|