MacOS下Docker数据卷挂载问题

问题背景及描述

Mac机安装docker镜像,使用了容器卷的方式挂载目录

1
2
3
docker volume create jenkins

docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins:/var/jenkins_home jenkins/jenkins:lts

因为忘记jenkins密码,想要修改users/config.xml ,但容器中未安装vim,不能直接修改。就想可以在本地配置文件中修改。 先查看容器卷的本地文件路径,运行如下命令。

1
docker inspect jenkins

找到本地地址如下:

1
2
3
4
5
6
7
8
9
10
11
"Mounts": [
{
"Type": "volume",
"Name": "jenkins-data",
"Source": "/var/lib/docker/volumes/jenkins-data/_data",
"Destination": "/var/jenkins_home",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": ""
},

可是在本地查找对应路径时,却提示没有对应路径或者文件。

解决方案

运行如下命令

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

本地机器再查找容器卷默认路径(ls /var/lib/docker/volumes)路径可查。

原因及解法分析

为什么如此,是因为MacOS 是在本地运行xhyve 虚拟机管理的docker,容器卷是在虚拟机的文件系统中创建, 在macOS的FileSystem无法直接访问。

文章作者: GeYu
文章链接: https://nuistgy.github.io/2023/02/17/MacOS下Docker数据卷问题/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Yu's Blog