无法创建挂载数据卷的MySQL Docker容器问题咨询
解决Docker挂载数据卷时出现的"pull access denied for de"错误
你的问题核心在于挂载路径的Shell语法不兼容,导致Docker错误地把路径的一部分识别成了镜像名(也就是错误提示里的de:latest)。既然不挂载数据卷时命令能正常运行,说明mysql-image镜像本身是没问题的,问题就出在-v参数的路径解析上。
下面分不同操作系统的Shell环境给你对应的解决方案:
1. Linux/macOS 下的 Bash/Zsh 环境
Bash支持$(pwd)语法,但如果当前工作目录路径包含空格或特殊字符,就会导致参数拆分混乱。解决方法是给整个挂载路径加上双引号:
docker run -d -v "$(pwd)/api/db/data:/var/lib/mysql" --rm --name mysql-container mysql-image
另外,建议先手动创建目标目录,避免后续出现权限问题:
mkdir -p "$(pwd)/api/db/data"
2. Windows 下的 CMD 命令行
CMD不识别$(pwd)语法,需要替换成%cd%(代表当前工作目录),同样建议用引号包裹路径避免解析错误:
docker run -d -v "%cd%/api/db/data:/var/lib/mysql" --rm --name mysql-container mysql-image
如果习惯用Windows的反斜杠路径,也可以这么写:
docker run -d -v "%cd%\api\db\data:/var/lib/mysql" --rm --name mysql-container mysql-image
提前创建目录的命令:
mkdir "%cd%\api\db\data"
3. Windows 下的 PowerShell 环境
PowerShell可以用${PWD}或者$PWD.Path来获取当前路径,记得用引号包裹路径:
docker run -d -v "${PWD}/api/db/data:/var/lib/mysql" --rm --name mysql-container mysql-image
提前创建目录的命令:
New-Item -ItemType Directory -Path "${PWD}/api/db/data" -Force
额外提示
- 运行命令前,可以先打印挂载路径确认是否正确,比如在Bash里执行
echo "$(pwd)/api/db/data",确保输出是你预期的完整路径。 - 如果还是有问题,直接写绝对路径(比如
/home/yourname/api/db/data:/var/lib/mysql或者C:\Users\yourname\api\db\data:/var/lib/mysql),避开Shell变量的解析问题。
内容的提问来源于stack exchange,提问作者Lucas Castro
相关产品推荐
相关产品推荐

