比较多的修改办法都是需要重新 docker run 容器。我不想删除重新运行。就通过修改配置config.v2.json文件实现固定容器IP
先停止容器:
docker stop 要修改的容器名称
查看网络列表
docker network list
创建新的网络(默认bridge不允许固定IP)
docker network create –subnet=10.0.0.1/24 bridge_k
查看新建的网络的id
docker network inspect bridge_k
返回的json:主要复制 b4bc6885e0d6c689d4f04f7b3c617b30ce4cc8e142bcdd34c3b0fbed6b76f89a 留存备用,下面修改配置文件会用到。
[
{
“Name”: “bridge_k”,
“Id”: “b4bc6885e0d6c689d4f04f7b3c617b30ce4cc8e142bcdd34c3b0fbed6b76f89a”,
“Created”: “2023-12-03T03:52:48.061470709-05:00”,
“Scope”: “local”,
“Driver”: “bridge”,
“EnableIPv6”: false,
“IPAM”: {
“Driver”: “default”,
“Options”: {},
“Config”: [
{
“Subnet”: “10.0.0.1/24”,
“Gateway”: “10.0.0.1”
}
]
},
“Internal”: false,
“Attachable”: false,
“Ingress”: false,
“ConfigFrom”: {
“Network”: “”
},
“ConfigOnly”: false,
“Containers”: {},
“Options”: {},
“Labels”: {}
}
]
查看容器id
docker ps
返回容器列表:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f753c61783d0e debian “/lib/systemd/systemd” 8 days ago Up 8 minutes 0.0.0.0:80->80/tcp web
注意 CONTAINER ID 这一项.
然后去 /var/lib/docker/containers/ 目录下在找到 对应 CONTAINER ID 开头的那个目录(容器目录的名称会特别长,一般前面一样就是)
在容器目录下会看到 config.v2.json 这个配置文件
打开文件:
nano config.v2.json
配置文件较长我就不完整复制了,主要修改 NetworkSettings 这个选项下.
修改网卡: NetworkSettings->Networks->将默认的 bridge 修改为我们新创建的 bridge_k
设置固定IP:
NetworkSettings->Networks->bridge_k->IPAMConfig 这一项默认应该是 null ,修改为
{
“IPv4Address”: “10.0.0.6”
}
其中的 10.0.0.6 为你想设置的固定 IP 地址。
修改 NetworkID:
NetworkSettings->Networks->bridge_k->NetworkID-> 替换改为上面新创建的 网络对应的id: b4bc6885e0d6c689d4f04f7b3c617b30ce4cc8e142bcdd34c3b0fbed6b76f89a
保存json后要重启 docker
service docker restart