Mac/OS X 上的 /var/lib/docker 在哪里
Where is /var/lib/docker on Mac/OS X
为 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/
但在那里找不到任何东西。知道它位于何处吗?
见this answer
将 Docker 用于 Mac 应用程序时,容器似乎存储在位于以下位置的 VM 中:
~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
如以上答案中所述,您将在以下位置找到它:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
获得 tty 运行 后,您可以导航至 /var/lib/docker
此路径来自 Docker 主机(而非来自 MacOS)
在“Docker for Mac Application”之前,有一个 VirtualBox VM“默认”并且在这个 VM 内部,提到的路径存在(肯定),现在在“Docker for Mac Application” 次有一个 Docker.qcow2 image,就是qemu base vm。
跳进这个 VM @mik-jagger 的方式是可以的(但还有更多)
我会说文件:
/var/run/docker.sock
实际在:
/Volumes/{DISKNAME}/var/run/docker.sock
如果你 运行 这个,它应该证明它,只要你的 运行ning 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
如果您将 Docker 用于 Mac,则此处的其他答案已过时。
这是我进入虚拟机的方法。 运行命令:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
这是默认路径,但您可能需要先执行以下操作:
cd ~/Library/Containers/com.docker.docker/Data/vms
然后 ls
查看您的虚拟机所在的目录并相应地替换“0”。
当您进入时,您可能只会看到一个空白屏幕。按下 "Enter" 键。
This page 说明要退出 VM,您需要 "Ctrl-a" 然后 "d"
正如@Dmitriy所说:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
并且可以使用ctrl a
+ d
分离屏幕
然后使用screen -dr
再次重新贴上屏幕(因为如果你简单地重新贴上屏幕,终端文本会乱码。)
或者如果你想退出,使用ctrl + a
+ k
,然后选择y
杀屏。
有点像僵尸线程,但正如我刚刚在这里发现的那样,这是另一种既不需要屏幕也不会弄乱 shell 等的解决方案
从 docker volume inspect <vol_name>
中列出的路径
returns 容器的路径,类似于:
"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
运行:
docker run -it --privileged --pid=host debian nsenter -t 1 -a bash
ls /var/lib/docker
看起来 docker 的新版本 Mac 已将其移至 UI 元素,您可以在此处查看。单击显示 CLI 的按钮将启动一个终端,您可以使用该终端浏览 docker 文件系统。
从 2021 年开始,Mac 用户可以使用记录的方法轻松访问 VM,从而访问卷。
在 Mac 中找到了一种进入 VM 内部的方法 Rocky Chen。有了这个,你实际上可以检查著名的 /var/lib/docker/volumes
.
docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
让我们检查方法:
- -it 用于保持 STDIN 打开,即使未附加 + 分配伪 TTY
- --privileged “赋予容器所有能力。允许像 运行ning 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 扩展程序,阳光将为您照耀。
只需检查 Visual Studio 代码中的卷。右键单击您想要在本地拥有的文件,然后下载它们。就这么简单!
第二次更新
自 2021 年 7 月起,Docker Desktop for Mac 宣布我们将能够直接从 GUI 访问卷,但仅限 Pro 和 Team 帐户。
我觉得docker的新版本(我的版本是20.10.5)使用socket代替TTY与虚拟机通信所以可以用nc命令代替screen命令
nc -U ~/Library/Containers/com.docker.docker/Data/debug-shell.sock
Docker 日志不在 MacOS /var/lib/docker 中。
MacOs 用户可以在此路径上找到 docker 日志;
/Users/Barrack.Kenya/Library/Containers/com.docker.docker/Data/log/host
job_name: docker
static_configs:
- 目标:
- docker
标签:
工作:docker日志
路径: (请输入路径)
pipeline_stages:
- docker:{}
对于 MacOS,我使用以下步骤:
- 登录 docker virtual-machine(在 MacOS 上 docker 只能在虚拟机中 运行,在我的例子中,我有带 docker 的 VirtualBox 工具虚拟机):
docker-machine ssh
- 一旦我 logged-in 我需要从
docker
用户切换到超级用户:sudo -i
- 现在我可以检查
/var/lib/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/
但在那里找不到任何东西。知道它位于何处吗?
见this answer
将 Docker 用于 Mac 应用程序时,容器似乎存储在位于以下位置的 VM 中:
~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
如以上答案中所述,您将在以下位置找到它:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
获得 tty 运行 后,您可以导航至 /var/lib/docker
此路径来自 Docker 主机(而非来自 MacOS) 在“Docker for Mac Application”之前,有一个 VirtualBox VM“默认”并且在这个 VM 内部,提到的路径存在(肯定),现在在“Docker for Mac Application” 次有一个 Docker.qcow2 image,就是qemu base vm。 跳进这个 VM @mik-jagger 的方式是可以的(但还有更多)
我会说文件:
/var/run/docker.sock
实际在:
/Volumes/{DISKNAME}/var/run/docker.sock
如果你 运行 这个,它应该证明它,只要你的 运行ning 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
如果您将 Docker 用于 Mac,则此处的其他答案已过时。
这是我进入虚拟机的方法。 运行命令:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
这是默认路径,但您可能需要先执行以下操作:
cd ~/Library/Containers/com.docker.docker/Data/vms
然后 ls
查看您的虚拟机所在的目录并相应地替换“0”。
当您进入时,您可能只会看到一个空白屏幕。按下 "Enter" 键。
This page 说明要退出 VM,您需要 "Ctrl-a" 然后 "d"
正如@Dmitriy所说:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
并且可以使用ctrl a
+ d
分离屏幕
然后使用screen -dr
再次重新贴上屏幕(因为如果你简单地重新贴上屏幕,终端文本会乱码。)
或者如果你想退出,使用ctrl + a
+ k
,然后选择y
杀屏。
有点像僵尸线程,但正如我刚刚在这里发现的那样,这是另一种既不需要屏幕也不会弄乱 shell 等的解决方案
从 docker volume inspect <vol_name>
returns 容器的路径,类似于:
"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
运行:
docker run -it --privileged --pid=host debian nsenter -t 1 -a bash
ls /var/lib/docker
看起来 docker 的新版本 Mac 已将其移至 UI 元素,您可以在此处查看。单击显示 CLI 的按钮将启动一个终端,您可以使用该终端浏览 docker 文件系统。
从 2021 年开始,Mac 用户可以使用记录的方法轻松访问 VM,从而访问卷。
在 Mac 中找到了一种进入 VM 内部的方法 Rocky Chen。有了这个,你实际上可以检查著名的 /var/lib/docker/volumes
.
docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
让我们检查方法:
- -it 用于保持 STDIN 打开,即使未附加 + 分配伪 TTY
- --privileged “赋予容器所有能力。允许像 运行ning 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 扩展程序,阳光将为您照耀。
只需检查 Visual Studio 代码中的卷。右键单击您想要在本地拥有的文件,然后下载它们。就这么简单!
第二次更新
自 2021 年 7 月起,Docker Desktop for Mac 宣布我们将能够直接从 GUI 访问卷,但仅限 Pro 和 Team 帐户。
我觉得docker的新版本(我的版本是20.10.5)使用socket代替TTY与虚拟机通信所以可以用nc命令代替screen命令
nc -U ~/Library/Containers/com.docker.docker/Data/debug-shell.sock
Docker 日志不在 MacOS /var/lib/docker 中。
MacOs 用户可以在此路径上找到 docker 日志;
/Users/Barrack.Kenya/Library/Containers/com.docker.docker/Data/log/host
job_name: docker static_configs:
- 目标:
- docker 标签: 工作:docker日志 路径: (请输入路径)
pipeline_stages:
- docker:{}
- 目标:
对于 MacOS,我使用以下步骤:
- 登录 docker virtual-machine(在 MacOS 上 docker 只能在虚拟机中 运行,在我的例子中,我有带 docker 的 VirtualBox 工具虚拟机):
docker-machine ssh
- 一旦我 logged-in 我需要从
docker
用户切换到超级用户:sudo -i
- 现在我可以检查
/var/lib/docker
目录