不想重写Dockerfile如何更改docker容器的挂载目录

一、问题

从网络上下载的很多Dockerfile或docker-compose文件进行启动容器的时候,部分重要的目录是依赖volumes挂载到容器内部的,如图

这就会出现一个问题,当我们想将容器打包,便于以后使用的时候,这部分挂载的文件是没有办法打包进去的,迁移到其他地方就会出现容器不可用,那么给大家介绍一个方法。

二、解决方案

当遇到这种情况,一般来讲,我们的思路都是去重写Dockerfile,将本该挂载到容器的文件,以COPY的形式放到容器里,这样便从根源上解决了这个问题。但是,当遇到Dockerfile拉不起容器的时候(哈哈哈哈,我就是这种情况,之前能用Dcokerfile拉起容器,后面就不行了,很头疼),我们就不得不从已经启动的容器上入手。

接下来介绍方法:

tips:原本的挂载目录是:/usr/local/apache2/htdocs/

1、首先,现在容器里创建一个目录,目录名字随意

不想重写Dockerfile如何更改docker容器的挂载目录_第1张图片

我在原本挂载目录的同级目录下创建了一个bak文件。

然后,退出容器,要记住容器id。

2、停止docker服务

停止docker服务: service docker stop (或 systemctl stop docker)

验证服务是否运行: docker ps -a

3、修改容器配置文件

找到如下目录:

/var/lib/docker/containers/

在该目录下,存放着当前主机上运行的所有docker容器的信息,每个文件夹以docker容器id命名。

4、进入到需要修改的容器id目录下

5、修改config.v2.json文件

 将上图所标注的3个位置,修改为一个新的目录:如:/usr/local/apache2/bak

修改后,保存

5、启动docker服务

启动docker服务: service docker start (或 systemctl start docker)

验证服务是否运行: docker ps -a

6、docker start 容器id,启动容器,重新将所需文件,使用docker cp拷贝到容器指定位置

不想重写Dockerfile如何更改docker容器的挂载目录_第2张图片

7、将容器重新提交成镜像,使用新镜像再次启动容器,该问题即可解决。

你可能感兴趣的:(docker,docker,容器,运维)