188

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

随着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/过,但在那里找不到任何东西。知道它的位置吗?

4

12 回答 12

180

如上述答案中所述,您将在以下位置找到它:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

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

于 2016-12-19T16:22:00.440 回答
60

如果您使用 Docker for Mac,此处的其他答案已经过时。

以下是我如何能够进入虚拟机。运行命令:

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

这是默认路径,但您可能需要先执行以下操作: cd ~/Library/Containers/com.docker.docker/Data/vms

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

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

此页面说明要退出 VM,您需要“Ctrl-a”然后“d”

于 2018-12-12T20:10:53.500 回答
54

截至 2021 年,Mac 用户可以通过记录的方法轻松访问 VM,从而访问卷。

Rocky Chen发现有一种方法可以进入 Mac 中的虚拟机。有了这个,您实际上可以检查著名的/var/lib/docker/volumes.

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

让我们检查一下方法:

  • -即使没有附加也保持STDIN打开+分配伪TTY
  • --privileged “为容器提供所有功能。允许运行 docker 等特殊情况
  • --pid定义使用主机 VM 命名空间。
  • debian要使用的实际图像。
  • nsenter一个debian 的工具以在不同的命名空间中运行程序
  • -t是目标PID
  • -m挂载提供的 PID 命名空间。
  • -u进入 Unix 时间共享 (UTS) 命名空间。
  • -n输入提供的 PID 网络命名空间。
  • -i输入提供的 PID IPC 命名空间。

运行后,转到/var/lib/docker/volumes/,您将找到您的卷。

我要解决的下一个问题是:

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

我很欣赏评论中的想法!

VSCODE 用户更新

如果你下载了官方 Docker 扩展,sun 会为你发光。

码头工人扩展

只需检查 Visual Studio Code 中的卷。右键单击要在本地拥有的文件,然后下载它们。就这么简单!

第二次更新

自 2021 年 7 月起,Docker Desktop for Mac 宣布我们将能够直接从 GUI 访问卷,但仅适用于 Pro 和 Team 帐户。

在此处输入图像描述

于 2021-01-09T17:19:58.560 回答
53

看到这个答案

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

~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

于 2016-09-02T07:52:44.583 回答
16

正如@Dmitriy 所说:

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

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

并使用screen -dr再次重新附加屏幕(因为如果您只是再次附加屏幕,终端文本会乱码。)

参考

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

于 2019-03-23T10:15:07.240 回答
7

一些僵尸线程,但正如我刚刚在这里发现的那样,这是另一种不需要屏幕也不需要弄乱外壳等的解决方案。

从一个列出的路径docker volume inspect <vol_name>

返回容器的路径,例如:

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

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

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

于 2019-10-10T12:10:31.140 回答
4

看起来新版本的 docker for Mac 已将其移至您可以在此处看到的 UI 元素。单击显示 CLI 的按钮将启动一个终端,您可以使用该终端浏览 docker 文件系统。码头工人 CLI 按钮

于 2020-12-08T17:08:59.383 回答
3

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

nc -U ~/Library/Containers/com.docker.docker/Data/debug-shell.sock
于 2021-06-03T15:50:25.567 回答
1

在“Docker for Mac Application”时代之前,该路径来自 Docker 主机(不是来自 MacOS),其中有一个 VirtualBox VM“默认”,并且在此 VM 内部,提到的路径存在(肯定),现在在“Docker for Mac Application”中" 有一个 Docker.qcow2 映像,它是 qemu 基础 vm。跳入这个 VM @mik-jagger 方式是可以的(但还有更多)

于 2017-03-20T14:46:24.497 回答
1

跑:

docker run -it --privileged --pid=host debian nsenter -t 1 -a bash
ls /var/lib/docker
于 2020-09-29T18:18:09.237 回答
0

我会说文件:

/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

然后,访问 Portainer:192.168.99.100:9000 或 localhost:9000

于 2018-04-14T01:52:24.820 回答
0

Docker 日志不在 MacOS 上的 /var/lib/docker 中。

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

/Users/Barrack.Kenya/Library/Containers/com.docker.docker/Data/log/host

  • 工作名称:码头工人静态配置:

    • 目标:
      • 码头工人标签:工作:码头日志 路径:(请输入路径)

    管道阶段:

    • 码头工人:{}
于 2022-02-18T12:02:47.117 回答