![从另一个 Docker 镜像创建数据容器](https://linux22.com/image/691492/%E4%BB%8E%E5%8F%A6%E4%B8%80%E4%B8%AA%20Docker%20%E9%95%9C%E5%83%8F%E5%88%9B%E5%BB%BA%E6%95%B0%E6%8D%AE%E5%AE%B9%E5%99%A8.png)
我有一个关于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