从另一个 Docker 镜像创建数据容器

从另一个 Docker 镜像创建数据容器

我有一个关于900MB它有一个目录/data,其中包含我想要的所有数据,还有一个/data/.git我想要排除的目录。

我想要创建一个数据容器(例如使用 busybox 图像),其中只/data包含/data/.git目录下的数据

我如何以最有效的方式做到这一点?

排除/data只是/data/.git关于130MB

因此,基本上我的数据容器大约有 130MB 到 200MB,而其他 docker 镜像则有 900MB

谢谢

答案1

我将迁移到一个命名卷,并使用以下命令创建它:

docker run -it --rm -v data-vol:/target your_image \
  /bin/bash -c "cp -av /data/* /target"

cp -av /data/* /target忽略所有点文件,因此如果您拥有的不仅仅是“.git”,则可能需要手动添加其他文件,例如cp -av /data/* /data/.app-files /target

如果您愿意先使用 /data 的完整副本创建它,然后稍后删除 .git 文件夹,那就更容易了:

docker run -it --rm -v data-vol:/data your_image rm -rf /data/.git

只要“data-vol”尚未初始化,Docker 就会使用完整的 /data 内容创建它。然后您运行的第一个命令是清理“.git”文件夹。

一旦您有了“data-vol”卷,您就可以在另一个容器中重复使用它:

docker run -v data-vol:/data another_image

相关内容