首先我的docker已经起了一个容器,我突然想把他的80->80映射的端口改成80->8080 但是我不想去新启动容器,想在现有容器基础上去修改,或者我想删除某个端口映射(只是大概思路)
如何寻找容器配置文件位置
首先我这边准备了一个容器
首先要去这个docker的配置文件目录
1.先找到他的id,因为在配置文件中,每个docker容器都有不同的配置文件,文件目录是以id命名的
docker inspect nostalgic_mclaren | grep Id
# 这里的nostalgic_mclaren是我的容器名称,要根据指定的容器名称查出来Id号
然后进入docker的根目录下的containers文件中 (也就是cd /var/lib/docker/containers)
然后找到上面对应的id号的文件
上面查到的id号是7a1ec60c588619f094f61053432fa47344a772b6ce363b47a38c285571716c57
那么就是进入到这个文件夹里
cd /var/lib/docker/containers/7a1ec60c588619f094f61053432fa47344a772b6ce363b47a38c285571716c57
然后下面的所有操作,都是在这个目录下执行
( /var/lib/docker/containers/容器id号 )
进来这个文件内
可以找到里边包含这两个文件,config.v2.json ,和,hostconfig.json
这就是今天用到的两个文件
########################################
附加:
可能会因为docker的根目录被移动的情况,那么根目录就不在/var/lib/docker/containers/了
去 cat /etc/docker/daemon.json 执行前面的命令找到docker root,docker的根目录就有containers文件了
########################################
增
首先停止docker服务
systemctl stop docker
systemctl stop docker.socket
编辑hostconfig.json文件
vi hostconfig.json
进入文件内修改 PortBindings的内容
现在我要加一个80映射80的
我在{}内添加了 "80/tcp":[{"HostIp":"","HostPort":"80"}]
现在保存退出,然后编辑config.v2.json文件
vi config.v2.json
在ExposedPorts后面加上 "80/tcp":{}
意思是暴露的端口
现在保存退出
systemctl daemon-reload
systemctl start docker
重新加载并且启动docker,再启动容器查看
你可以对比一下最上面的图片,可以清晰看到添加成功
如果你想再添加一个端口,只需要将他们使用 , (逗号)隔开就行
如我想再添加一个1234映射4321,下面我就简单演示一下
systemctl stop docker
systemctl stop docker.socket
vi hostconfig.json
vi config.v2.json
systemctl daemon-reload
systemctl start docker
这样就添加了第二个