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

与码头信息我得到

    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 /但是在那里什么也找不到。知道它在哪里吗?


请看这个答案

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

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


在以上的回答中,你会发现: 屏幕~ /图书馆/集装箱/ com.docker.docker /数据/ vm / 0 /电传

tty运行后,您可以导航到/var/lib/docker


此路径来自Docker主机(不是MacOS) 在“Docker for Mac Application”时代之前,有一个VirtualBox虚拟机“default”,在这个虚拟机中,提到的路径存在(肯定的),现在在“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的方法。执行如下命令:

屏幕~ /图书馆/集装箱/ com.docker.docker /数据/ vm / 0 /电传

这是默认路径,但你可能需要先做: cd ~ /图书馆/集装箱/ com.docker.docker /数据/ vm

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

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

本页解释了要退出VM,您需要按“Ctrl-a”然后“d”


正如@Dmitriy所说:

屏幕~ /图书馆/集装箱/ com.docker.docker /数据/ vm / 0 /电传

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

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

参考

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


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

从docker卷inspect <vol_name>中列出的路径

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

“Mountpoint”:“道克/ var / lib / / volumes coap_service_db_data - _data "

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

卷: db_data:/var/lib/postgresql/data, obvs你的里程会有所不同。

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

Docker run——rm -it -v /:/ Docker alpine:edge

从这一点你可以CD到音量

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


Run:

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

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


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

Rocky Chen找到了一种方法来进入Mac中的VM。通过这个方法,你可以检查著名的/var/lib/docker/volumes.

Docker运行-it——privilege——pid=host debian nsenter -t 1 -m -u -n -i sh

让我们来看看这个方法:

-it goes for Keep STDIN open even if not attached + Allocate pseudo-TTY --privileged "gives all capabilities to the container. Allows special cases like running docker" . --pid defines to use the host VM namespace. debian the actual image to use. nsenter a debian's tool to run programs in different namespaces -t is the target PID -m mount the provided PID namespace. -u enter the Unix Time Sharing (UTS) namespace. -n enter the provided PID network namespace. -i enter the provided PID IPC namespace.

运行后,转到/var/lib/docker/volumes/,你会找到你的卷。

我的下一个问题是:

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

我很欣赏评论中的想法!

为vscode用户更新

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

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

2日更新

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


我认为新版本的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 /数据/日志/主机

job_name:码头工人 static_configs: 目标: 码头工人 标签: 工作:dockerlogs 路径:(请输入路径) pipeline_stages: 码头工人:{}


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

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