我有一个从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
的图像的内容,这将非常有用。