在 Linux 上是可行的,用 docker inspect <容器 id> , 查看 GraphDriver 里 overlay 类型的目录,例如:
"GraphDriver": {
"Name": "overlay",
"Data": {
"LowerDir": "/var/lib/docker/overlay/59f07724ebb1ea7ed1beb73957545c27b23b8b40fc05d7d20bdaa2bd07d5c972/root",
"MergedDir": "/var/lib/docker/overlay/7ed602749564139b0bc2f31245400305b163499bd42e53350c1d32fbc338e652/merged",
"UpperDir": "/var/lib/docker/overlay/7ed602749564139b0bc2f31245400305b163499bd42e53350c1d32fbc338e652/upper",
"WorkDir": "/var/lib/docker/overlay/7ed602749564139b0bc2f31245400305b163499bd42e53350c1d32fbc338e652/work"
}
},
直接访问那个 merged 目录就行了。
但是,在 mac 上, docker engine 是运行在一个 xhyve 虚拟机里,容器则是第二层虚拟机。 所以 docker inspect 拿到的是 xhyve 虚拟机里的路径,并不是物理机里的路径, 在 mac 上并没有这些目录。
而 xhyve 虚拟机使用得不是 aufs, 而是一个 qcow2 格式的镜像文件,一般在这个位置:
Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
。 这个镜像文件,不能在 docker 服务运行时 mount 它 。
我要访问得,其实就是这个镜像文件里的 /var/lib/docker/overlay/
目录。
我想知道,有没有什么办法,在 mac 上透过 xhyve 虚拟机,直接访 docker 容器里的文件系统。
例如用 sshfs 去 mount xhyve 里的 /var/lib/docker/overlay/
目录?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.