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

时间:2016-07-22 17:44:40

标签: macos docker

我在为Mac安装docker之后在Mac上寻找文件夹/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/但却找不到任何内容。知道它在哪里吗?

11 个答案:

答案 0 :(得分:120)

如上所述,您可以在以下网址找到:
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

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

答案 1 :(得分:43)

请参阅this answer

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

  

〜/库/容器/ com.docker.docker /数据/ com.docker.driver.amd64-LINUX / Docker.qcow2

答案 2 :(得分:25)

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

这就是我进入虚拟机的方式。运行命令:

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

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

然后ls来查看您的VM在哪个目录中,并相应地替换为“ 0”。

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

This page解释说,要退出VM,您需要先按Ctrl-a,然后按d。

答案 3 :(得分:22)

到 2021 年,Mac 用户可以轻松地使用已记录的方法访问 VM,从而访问卷。

找到了一种方法 Rocky Chen 可以进入 Mac 中的 VM。有了这个,您实际上可以检查著名的 /var/lib/docker/volumes

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

让我们检查一下方法:

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

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

接下来要解决的问题是:

如何获取这些卷并在主机中对其进行备份?

我很欣赏评论中的想法!

VSCODE 用户更新

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

Docker Extension

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

答案 4 :(得分:4)

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

docker volume inspect <vol_name>

列出的路径

返回容器的路径,例如:

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

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

volumes: - db_data:/var/lib/postgresql/data,说明您的里程会有所不同。

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

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

此时,您可以CD到音量

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

答案 5 :(得分:2)

我觉得新版docker(我的版本是20.10.5)使用socket代替TTY来和虚拟机通信,所以可以用nc命令代替screen命令。

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

答案 6 :(得分:1)

此路径来自Docker Host(不是来自MacOS) 因为“Docker for Mac Application”时代,VirtualBox VM在哪里“默认”并且在这个VM提到的路径中存在(当然),现在在“Docker for Mac Application”时代有一个Docker.qcow2图像,这是qemu基地。 要进入这个VM @ mik-jagger方式是可以的(但还有更多)

答案 7 :(得分:1)

就像@Dmitriy所说的那样:

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

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

,然后使用screen -dr重新附加屏幕(因为如果您只是简单地再次附加屏幕,则终端文本将出现乱码。)

Reference

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

答案 8 :(得分:0)

我会说文件:

/var/run/docker.sock

实际上是:

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

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

#!/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

答案 9 :(得分:0)

好像Mac的新版docker已将其移至UI元素,您可以在此处看到。点击显示CLI的按钮,将启动一个终端,您可以使用该终端浏览docker文件系统。Docker CLI Button

答案 10 :(得分:-1)

运行:

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