主机上的Docker容器的文件系统内容

我已经读了很多关于docker如何使用cgroups和命名空间的工作。 如果这是正确的, 主机应该能够看到docker容器使用的所有进程和文件系统树。 但是,我似乎无法弄清楚。

有人可以用docker v1.12.6和一个正在运行的“nginx”容器来显示它吗?

可选:是否可以以同样的方式访问已经退出的容器的文件?

PS,GraphDriver看起来像这样:

"GraphDriver" : { "Name" : "aufs", "Data" : null }, 

您可以使用docker cp命令从docker复制文件,然后您可以访问它。这也是访问已退出容器中文件的最简单方法。

在Docker守护进程运行的主机上运行时,可以运行(以root身份);

启动一个nginx容器

 docker run -d nginx 

按层级查看正在运行的所有进程

 ps auxf 

其中显示了所有进程,包括刚开始的nginx容器;

 root 3810 0.9 3.2 387460 67308 ? Ssl 11:31 0:12 /usr/bin/dockerd -H fd:// root 3819 0.1 0.6 291624 14028 ? Ssl 11:31 0:01 \_ docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc root 4241 0.0 0.3 143872 6652 ? Sl 11:49 0:00 \_ docker-containerd-shim 1d3a6c65ac59e61c165d1f0119915a43e4d0387fd8432723f16b1ef2aa966522 /var/run/docker/libcontainerd/1d3a6c65ac59e61c165d1f0119915a43e4d0387fd8432723f16b1ef2aa966522 docker-runc root 4277 0.0 0.2 31872 5280 ? Ss 11:49 0:00 \_ nginx: master process nginx -g daemon off; syslog 4304 0.0 0.1 32260 2904 ? S 11:49 0:00 \_ nginx: worker process 

容器的文件系统

容器文件系统的存储位置取决于您正在使用的存储驱动程序。 在你的情况下,图像层和(可写)容器层保存在/var/lib/docker/aufs 。 但是,这些文件不应该直接混淆。 您可以使用

  • docker cp将文件复制到容器(甚至退出的容器)
  • docker export到容器的文件系统导出到一个tar档案
  • docker commit一个容器的图像