Mac/OS X上的/var/lib/docker在哪里

我在Mac上安装docker后寻找文件夹/var/lib/docker

docker info我得到

    Containers: 5
...
Server Version: 1.12.0-rc4
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 339
Dirperm1 Supported: true
...
Name: moby
ID: LUOU:5UHI:JFNI:OQFT:BLKR:YJIC:HHE5:W4LP:YHVP:TT3V:4CB2:6TUS
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
....

但是我的主机上没有/var/lib/docker目录。

我已经检查了/Users/myuser/Library/Containers/com.docker.docker/,但没有找到任何东西。知道它在哪里吗?

107365 次浏览

看到这个答案

当使用Docker for Mac应用程序时,容器似乎存储在位于以下位置的虚拟机中:

~ /图书馆/集装箱/ com.docker.docker /数据/ com.docker.driver.amd64-linux / Docker.qcow2

在上面的答案中提到,你会发现它在:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty < / p >

一旦tty运行起来,你就可以导航到/var/lib/docker

这个路径来自Docker主机(不是MacOS) 在“Docker for Mac application”前面;有一个VirtualBox虚拟机“;default"在这个VM中,提到的路径存在(肯定),现在在“Docker for Mac application”中;每次都有Docker。Qcow2映像,即qemu基础vm。 以@mik-jagger的方式进入这个VM是可以的(但还有一些)

我会说这个文件:

/var/run/docker.sock

实际上是:

/Volumes/{DISKNAME}/var/run/docker.sock

如果你运行这个,它应该证明这一点,只要你运行的是VirtualBox 5.2.8或更高版本,并且/Volumes的共享被设置为自动挂载和永久的,并且你在该版本的VirtualBox上生成了默认的docker-machine:

#!/bin/bash
docker run -d --restart unless-stopped -p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock portainer/portainer \
--no-auth

然后通过192.168.99.100:9000或localhost:9000访问Portainer

如果你在Mac上使用Docker,这里的其他答案就过时了。

下面是我进入VM的方法。执行如下命令:

screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

这是默认路径,但你可能需要先做: cd ~/Library/Containers/com.docker.docker/Data/vms < / p >

然后ls来查看你的虚拟机所在的目录,并相应地替换“0”。

当你进入时,你可能只会看到一个空白的屏幕。按“Enter”键。

这个页面解释了要退出VM,你需要“Ctrl-a”然后“d”

正如@Dmitriy所说:

screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

并且可以使用ctrl a + d分离屏幕

并使用screen -dr重新连接屏幕(因为如果你只是简单地再次连接屏幕,终端文本将被乱码。)

< a href = " https://williambert。在线/ 2017/12 / Docker-for-Mac-the-Missing-Manual / noreferrer“rel = >引用< / >

或者如果你想退出,使用ctrl + a + k,然后选择y关闭屏幕。

一些什么僵尸线程,但我刚刚发现它在这里是另一种解决方案,不需要屏幕也不混乱shell等。

docker volume inspect <vol_name>中列出的路径

返回容器的路径,类似于:

"Mountpoint": "/var/lib/docker/volumes/coap_service_db_data/_data"

_data组件是使用给定卷在服务的volumes:部分中设置的路径的最后一个组件,例如:

< p > <代码>卷: - db_data:/var/lib/postgresql/data, obvs你的mileage会有所不同

要在mac上到达那里,我发现最简单的方法是实际启动一个小容器运行,并将主机的根目录挂载到映像中的/docker目录,这使您可以访问主机上使用的卷。

docker run --rm -it -v /:/docker alpine:edge

从这一点你可以CD到音量

cd /var/lib/docker/volumes/coap_service_db_data/_data

运行:

docker run -it --privileged --pid=host debian nsenter -t 1 -a bash
ls /var/lib/docker

看起来Mac的新版本的docker已经把这个移到了一个UI元素中,你可以在这里看到。单击命令行按钮将启动一个终端,您可以使用该终端浏览docker文件系统. __abc0

到2021年,Mac用户可以很容易地使用文档化的方法访问VM,从而访问卷。

有一种方法岩石陈可以在Mac中进入VM。使用这个方法,你可以检查著名的/var/lib/docker/volumes

docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh

让我们来看看这个方法:

  • -用于保持STDIN打开,即使没有附加+分配伪tty
  • ——特权 "赋予容器所有的能力。允许特殊情况,如运行码头工人".
  • ——pid定义使用主机虚拟机命名空间。
  • debian实际图像使用。
  • nsenterdebian的工具在不同的命名空间中运行程序
  • - t是目标PID
  • - m挂载提供的PID命名空间。
  • - u输入Unix分时(UTS)命名空间。
  • - n输入提供的PID网络命名空间。
  • -我输入提供的PID IPC命名空间。

运行后,去__abc0,你会找到你的卷。

我的下一个问题是:

如何获取这些卷并将它们备份到主机中?

我很欣赏评论中的想法!

为vscode用户更新

如果你下载了官方Docker扩展,太阳将为你照耀。

Docker Extension

只需检查Visual Studio Code中的卷即可。右键单击您想要保存在本地的文件,并下载它们。那么容易!

2日更新

2021年7月,Mac版Docker Desktop宣布,我们将能够直接从GUI访问卷,但仅限于专业和团队帐户。

enter image description here

我认为新版本的docker(我的版本是20.10.5)使用socket而不是TTY来与虚拟机通信,因此您可以使用nc命令而不是screen命令。

nc -U ~/Library/Containers/com.docker.docker/Data/debug-shell.sock

MacOS上的Docker日志不在/var/lib/docker目录下。

MacOs用户可以在此路径下找到docker日志;

/用户/ Barrack.Kenya /图书馆/集装箱/ com.docker.docker /数据/日志/主机

    <李> < p > job_name:码头工人 static_configs: < / p >
      <李>目标:
        <李>码头工人 标签: 工作:dockerlogs 路径:(请输入路径)

    pipeline_stages:

    • 码头工人:{}

对于MacOS,我使用以下步骤:

  1. 登录到docker虚拟机(在MacOS上,docker只能在虚拟机内运行,在我的情况下,我有VirtualBox工具与docker VM): docker-machine ssh
  2. 一旦我登录,我需要从docker用户切换到超级用户:sudo -i
  3. 现在我能够检查/var/lib/docker目录