如何将docker文件系统提取到本地文件系统中,以便不再使用docker



我有一个从docker hub下载的docker容器,里面有一个完整的文件系统。由于某些原因,我想从容器中删除所有文件,并在本地机器上重新创建文件系统。

我不能将图像作为容器单独运行超过几秒钟,因为它依赖于其他一些命令。

我尝试过的事情:

  • 我已经看到了docker导出和docker保存的答案,但这两个都给了我一个tarball,里面有20-30个文件夹,每个文件夹都有一个tar目录。我不想手动进入并执行此操作。

  • 我编写了一个简单的bash脚本,帮助我将.tar中的文件删除到一个简单目录for d in ./*/ ; do (cd "$d" && tar xvf ./*.tar); done中。这给了我一堆文件,我必须自己构建到文件系统中。

如果图像具有可用的tar命令,则可以运行:

docker run --rm yourimage tar -C / -cf- | tar -C /path/to/root -xf-

这将标记图像上的内容,然后在您选择的位置(上例中为/path/to/root(的主机上取消标记。


我曾经写过一个名为undocker的工具,用于将docker映像提取到本地目录;你会这样使用它:

docker save myimage | undocker

在过去的几年里,我很少使用它,但它似乎对一些测试图像有效。如果您试图提取无法运行tar的图像的内容,这将非常有用。

最新更新