如何从容器中列出泊坞窗安装的卷

要列出所有已安装卷的容器目录。

即能够得到我得到的类似的信息

docker inspect --format "{{ .Volumes }}" <self> 

但是从集装箱内部,没有docker安装在那里。

我试过cat /proc/mounts但找不到适当的filter。

如果你的docker主机是OSX,挂载的卷将键入osxfs(或fuse.osxfs)。 你可以运行一个

mount | grep osxfs | awk '{print $3}'

并获得所有安装的卷的列表。

如果您的docker主机是Linux(至less是Ubuntu 14+,也许是其他的),这些卷似乎全部在/ dev上,但不在容器的/ dev文件系统中的设备上。 卷将与/etc/resolv.conf,/ etc / hostname和/ etc / hosts一起。 如果你做一个mount | grep ^/dev mount | grep ^/dev启动,然后过滤掉ls /dev/*任何文件,然后过滤出上面列出的三个文件,应该留下主机卷。

mount | grep ^/dev/ | grep -v /etc | awk '{print $3}'

我的猜测是具体可能会有所不同,从Linux到Linux。 不理想,但至less有可能弄清楚。

正如你可以从许多意见中读到的,一个容器最初只不过是一个有限的,保留的部分资源,与你机器的其余部分完全隔离。 它不知道是一个docker工人,在容器内部,所有的行为就像是一个单独的机器。 我想,有点像matrix,你可以访问主机的内核及其资源,但又被限制为一个过滤出来的集合。 这是通过Unix / Linux内核附带的令人敬畏的“cgroups”function完成的。

现在有一个好消息:你有多种方式将信息提供给你的docker工人,但这是你将不得不提供和build立自己的东西。

最简单最强大的方法是将位于主机上的unix插槽安装在/var/run/docker.sock中,并将其放置在容器内部的相同位置。 这样,当你在你的容器中使用docker客户端时,你直接与主机上的docker引擎交谈。 但是,大国的责任很大。 这是一个很好的设置,但不是很安全。 一旦有人设法进入你的docker,它就可以以这种方式访问​​你的主机系统。

更好的方法是通过环境设置提供一个坐骑的列表,或者抓住一些制定的约定来预测坐骑。

(你是否意识到有一个挂载参数,给docker里面的别名?)