目錄
- 前言
- 1. 修改Docker宿主機(jī)的Docker網(wǎng)絡(luò)
- 2. 啟動(dòng)容器時(shí)指定IP
- 3. 啟動(dòng)容器后修改IP
- 總結(jié)
前言
Docker容器啟動(dòng)后,默認(rèn)會(huì)在主機(jī)上分配一個(gè)網(wǎng)卡,該網(wǎng)卡對(duì)應(yīng)一個(gè)網(wǎng)絡(luò)命名空間,并在這個(gè)網(wǎng)絡(luò)命名空間下隨機(jī)分配一個(gè)IP地址。
如果想修改Docker容器的IP地址,有以下幾種方法:
1. 修改Docker宿主機(jī)的Docker網(wǎng)絡(luò)
可以在Docker主機(jī)上修改/etc/docker/daemon.json
文件,添加如下內(nèi)容:
{ "bip": "192.168.1.5/24", }
這會(huì)將Docker容器分配IP的子網(wǎng)修改為192.168.1.0/24
,并且默認(rèn)網(wǎng)關(guān)設(shè)置為192.168.1.1
。
重啟Docker后生效,此后創(chuàng)建的容器會(huì)在此子網(wǎng)分配IP。
2. 啟動(dòng)容器時(shí)指定IP
使用--ip
參數(shù)可以指定容器的IP地址:
docker run -it --ip 192.168.1.10 ubuntu:18.04
這會(huì)強(qiáng)制分配192.168.1.10
這個(gè)IP給新啟動(dòng)的容器。
3. 啟動(dòng)容器后修改IP
可以在啟動(dòng)容器后,直接修改容器內(nèi)的網(wǎng)絡(luò)配置來變更IP地址。
首先,要定位到容器的網(wǎng)絡(luò)命名空間。可以使用:
docker inspect 容器id|name # 查看"NetworkSettings"下的"SandboxKey"值
然后使用ip netns exec
命令進(jìn)入該網(wǎng)絡(luò)命名空間:
sudo ip netns exec 沙盒KEY /bin/bash
在該命名空間下修改網(wǎng)絡(luò)配置即可。例如:
ip addr add 192.168.1.15/24 dev eth0 ip link set eth0 up
這會(huì)將eth0網(wǎng)卡的IP設(shè)置為192.168.1.15
。
退出后容器的IP就已經(jīng)修改。
需要注意,如果容器已經(jīng)把舊IP寫入到其它容器或者宿主機(jī)的配置(例如/etc/resolv.conf
)中,那么還需要相應(yīng)修改那些地方的配置,否則可能出現(xiàn)網(wǎng)絡(luò)異常的情況。
以上是修改Docker容器IP地址的幾種常用方法。根據(jù)實(shí)際場(chǎng)景選擇適用的方案即可。