我刚刚在Docker容器中创build的文件在Windows主机文件系统中的位置?

我正在学习Docker,这是一个新手问题。

一方面,我想从高层次上理解技术基础,所以我有正确的推理思维模式。 另一方面,我想了解什么选项来访问容器内的数据(与-v标志的文件同步?)。

Git场景

我们来看一个Git的例子。 也许,我们可以在Git存储库和Docker镜像/容器/文件系统之间绘制相似之处。

  • 使用Git,这些文件位于工作目录中:

    Git工作副本

  • 一旦我执行commit操作,文件将以对象文件夹内的内部格式存储,并且不能从Windows资源pipe理器直接访问

    Git对象文件夹

  • 只有在执行checkout操作才能将文件从Git存储库移出到工作副本文件夹后,才能访问该文件

Docker场景

它如何与Docker一起工作? 再举一个例子。 我只是做了以下几点:

  1. docker run -it hello-world cmd
  2. echo "test" > myfile.txt
  3. exit

Docker的例子

问题

现在的问题是:

  1. 主机系统上存储的myfile.txt在哪里? 我可以使用主机系统上的Windows资源pipe理器导航到它吗?
  2. 我需要备份什么,所以我有容器,包括myfile.txt保存? 对于Git,我只能保存.git文件夹。 (文章: Docker备份 – 简单的步骤来备份和恢复您的容器 )

到目前为止我所知道的

图像文件的位置

有一件令我困惑的事情是,我可以在主机的Windows资源pipe理器中看到Docker镜像的文件:

  • C:\ProgramData\Docker\windowsfilter\379664351fc1b563c0dbd5d4c815d9792bd4c89c315a16792f56b6706084ca4c\Files

    Docker图像与hello.txt文件

我会希望他们像Git一样以某种内部格式被隐藏起来。

当然,只有hello.txt文件是可见的,因为我们正在查看基本的图像,而不是我们的容器实例。

docker文件的位置

接下来,让我们看看容器在主机文件系统上的位置。 文件夹名称暗示容器存储在这里:

  • C:\ProgramData\Docker\containers

    Docker容器文件夹

但是,当我打开这些文件夹时,即使存在其他文件,也不会在任何地方findmyfile.txt

Docker容器子文件夹