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

时间:2017-04-03 11:44:35

标签: docker host

我已经阅读了很多关于docker如何使用cgroup和命名空间的信息。如果这是正确的, host 应该能够看到docker容器使用的所有进程和文件系统树。但是我似乎无法弄明白。

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

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

PS,GraphDriver看起来像这样:

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

在运行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图像容器