我已经阅读了很多关于docker如何使用cgroup和命名空间的信息。如果这是正确的, host 应该能够看到docker容器使用的所有进程和文件系统树。但是我似乎无法弄明白。
有人可以用docker v1.12.6和一个正在运行的“nginx”容器来显示它吗?
可选:是否仍然可以以相同的方式访问已经退出的容器的文件?
PS,GraphDriver看起来像这样:
"GraphDriver" : {
"Name" : "aufs",
"Data" : null
},
答案 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
图像容器