我怎样才能将 docker 文件系统提取到我的本地文件系统中,这样我就不必再使用 docker
How can I extract the docker filesystem into my local filesystem so I no longer have to use docker
我有一个从 docker hub 下载的 docker 容器,里面有一个完整的文件系统。由于某些原因,我想从容器中删除所有文件并在我的本地机器上重新创建文件系统。
我不能 运行 将图像作为容器单独放置超过几秒钟,因为它依赖于其他一些命令。
我尝试过的东西:
我看到了 docker 导出和 docker 保存的答案,但是这两个都给了我一个 tar 球,里面有 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-
这将tar将内容添加到图像中,然后在您的主机上您选择的位置(/path/to/root
在上例中)取消tar它。
我曾经写过一个名为 undocker 的工具,用于将 docker 图像提取到本地目录;你会像这样使用它:
docker save myimage | undocker
过去几年我用得不多,但它似乎适用于一些测试图像。如果您尝试提取无法提取图像的内容,这将非常有用 运行 tar
.
我有一个从 docker hub 下载的 docker 容器,里面有一个完整的文件系统。由于某些原因,我想从容器中删除所有文件并在我的本地机器上重新创建文件系统。
我不能 运行 将图像作为容器单独放置超过几秒钟,因为它依赖于其他一些命令。
我尝试过的东西:
我看到了 docker 导出和 docker 保存的答案,但是这两个都给了我一个 tar 球,里面有 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-
这将tar将内容添加到图像中,然后在您的主机上您选择的位置(/path/to/root
在上例中)取消tar它。
我曾经写过一个名为 undocker 的工具,用于将 docker 图像提取到本地目录;你会像这样使用它:
docker save myimage | undocker
过去几年我用得不多,但它似乎适用于一些测试图像。如果您尝试提取无法提取图像的内容,这将非常有用 运行 tar
.