不想重新 run 容器,但是又必须改目录映射,怎么办?
容器内的目录映射到宿主机上有两种情况,这两种情况无论是哪一种都需要重启docker服务方可生效。
容器目录映射是有两个(hostconfig.json、config.v2.json)文件决定的,根据docker ID找到这两个文件,这两个文件一般在目录 /var/lib/docker/containers/以docker ID 开头的一串数字/ 下
第一种:改变容器已经映射目录的名字。
假如,容器里的 /opt 已经映射到宿主机上 /data,改变映射 /data 为 /test
1、在宿主机上创建你想改变的目录 /test
2、停止容器把宿主机上 /data 里的数据拷贝到 /test下
3、修改 hostconfig.json 文件只需要修改一处即可,(/data:/opt 改成 /test:opt)
4、修改 config.v2.json 文件,需修改两处
5、以上两个文件修改完成后,重启 docker 服务,启动容器,使用 docker inspect ID 可查看已经改变的映射目录。
第二种:添加容器内目录映射到宿主机上。
增加目录映射,就是在两个(hostconfig.json、config.v2.json)文件里增加两段文字,例如增加容器 /opt 映射到宿主机 /data 目录,有一点 一定 一定 一定 要记住,如果你映射的是 jar 包运行目录,要把容器里的 jar 包先拷贝的容器外的映射目录,不然你 jar 包可能启动不了。
1、在 hostconfig.json 文件里添加内容
2、在 config.v2.json 文件添加内容
"/opt":{"Source":"/data","Destination":"/opt","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{"Type":"bind","Source":"/data","Target":"/opt"},"SkipMountpointCreation":false},
3、重启 docker 服务,重启容器
参考文章:https://www.cnblogs.com/linyouyi/p/10715408.html
参考文章:https://blog.csdn.net/zdegrh_2/article/details/102790249