我有一个大约900MB的docker图像,它有一个目录/data ,我想要的所有数据都在,还有一个/data/.git目录,我想排除。
我想要创build一个数据容器(例如使用busybox图像),仅包含/data之下的/data不包括/data/.git目录
我如何以最有效的方式做到这一点?
/data不包括/data/.git只有大约130MB
所以基本上我会有数据容器大约130MB到200MB相比,其他docker图像是900MB巨大
谢谢
我将迁移到一个已命名的卷,并使用以下命令创build它:
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 ,你可能需要手动添加其他文件cp -av /data/* /data/.app-files /target
如果您愿意先用/ data的完整副本创build它,然后再删除.git文件夹,那更容易:
docker run -it --rm -v data-vol:/data your_image rm -rf /data/.git
只要“data-vol”没有被初始化,它将由Docker的全部/数据内容创build。 然后你运行的第一个命令是清理“.git”文件夹。
一旦拥有“数据卷”卷,就可以在另一个容器中重复使用它:
docker run -v data-vol:/data another_image