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

chr*_*ian 110 macos docker docker-for-mac

我在为/var/lib/dockerMac安装docker之后在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
    ....
Run Code Online (Sandbox Code Playgroud)

/var/lib/docker我的主机上没有目录.

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

Mik*_*ger 127

如上面的答案所述,你会发现:
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

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

  • 我想它现在可能位于〜/ Library/Containers/com.docker.docker/Data/vms/0/tty. (13认同)
  • 分离仍将保持屏幕会话运行.你可以通过运行`screen -ls`看到这个.如果你已经分离,运行`screen -X quit`.如果您有多个屏幕会话,则需要`-S`来指定会话名称.如果你还没有分离,请按ctrl + a,:,q,u,i,t,ENTER.这两个只是在会话中运行屏幕退出命令. (8认同)
  • 您可以使用ctrl + a + d从屏幕上分离 (5认同)
  • 一个小小的修改(在你家下面,不在根目录下):"screen~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty" (4认同)
  • 我想这就是答案。但我现在使用的是 v20.10,没有 `~/Library/Containers/com.docker.docker/Data/vms/0/tty` 目录。 (3认同)
  • 作品!但是我如何从那个 shell 中退出呢?Ctrl + d、`exit` 和 `logout` 不起作用。 (2认同)

小智 47

如果你使用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"

  • 这对我不起作用。我最终得到了一个混乱的外壳。我已经完成并终止了之前的屏幕会话,然后再次尝试。当按回车键时,我会得到随机字符。如果再次按 Enter 键,则会出现新的随机字符。等等 (2认同)

小智 46

看到这个答案

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

〜/资源库/集装箱/ com.docker.docker /数据/ com.docker.driver.amd64 Linux的/ Docker.qcow2

  • **如果您是从Google**来到这里,请向下滚动以找到正确的答案. (29认同)
  • 我想这就是答案。但我现在使用的是 v20.10,没有 `~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux` 目录。 (7认同)

Ric*_*pie 30

到 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

让我们检查一下方法:

  • -即使未连接也保持标准输入打开 + 分配伪 TTY
  • --privileged “给出了所有功能的容器。允许特殊情况下,像跑步泊坞窗”。
  • --pid定义使用主机 VM 命名空间。
  • debian要使用的实际映像。
  • nsenter一个debian 的工具来在不同的命名空间中运行程序
  • -t是目标PID
  • -m挂载提供的 PID 命名空间。
  • -u输入 Unix 时间共享 (UTS) 命名空间。
  • -n输入提供的 PID 网络命名空间。
  • -i输入提供的 PID IPC 命名空间。

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

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

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

我很欣赏评论中的想法!

VSCODE 用户更新

如果你下载了官方 Docker 扩展,阳光会为你闪耀。

Docker 扩展

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

第二次更新

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

在此处输入图片说明

  • 对于备份:`docker run -v <volume_name>:/volume --rm loomchild/volume-backup backup -> <volume_name>.tar.bz2` (2认同)

Ehs*_*adi 13

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

nc -U ~/Library/Containers/com.docker.docker/Data/debug-shell.sock
Run Code Online (Sandbox Code Playgroud)


May*_*May 6

就像@Dmitriy所说的那样:

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

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

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

参考

或者如果要退出,请使用ctrl + a+ k,然后选择y取消屏幕。


lbd*_*bdl 6

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

从 a 列出的路径 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