Mac(Intel芯片)下Podman挂载目录失败及初始化报错问题
问题背景
因许可问题从Docker迁移至Podman后,podman build可正常执行,但运行镜像时出现异常。
挂载目录提示不存在
执行运行命令:
podman run -d -e "LOG_LEVEL=DEBUG" -it -v /Users/myuser/logs/:/logs
该命令在Docker中可正常执行,但Podman返回错误:
Error: statfs /Users/myuser/logs: no such file or directory
本地目录/Users/myuser/logs实际存在且权限为777,问题仍未解决。
初始化机器时-v参数报错
尝试通过初始化Podman机器时挂载目录来解决问题,执行命令:
podman machine init --cpus=4 --disk-size=60 --memory=6096 -v $HOME:$HOME
返回错误:
Error: unknown shorthand flag: 'v' in -v
当前Podman版本
Client: Version: 3.4.2 API Version: 3.4.2 Go Version: go1.17.2
Built: Fri Nov 12 21:38:25 2021 OS/Arch: darwin/amd64Server: Version: 4.3.0 API Version: 4.3.0 Go Version: go1.19.2
Built: Fri Oct 21 13:39:51 2022 OS/Arch: linux/amd64
解决方案
挂载目录不存在的核心原因
Podman在Mac上依赖虚拟机运行,本地Mac的目录必须先被Podman虚拟机挂载,容器才能访问到对应路径。你遇到的问题就是/Users/myuser/logs未被虚拟机挂载,导致容器找不到该目录。修正Podman机器初始化命令
旧版本Podman的machine init不支持短格式-v参数,需使用全称--volume:
podman machine init --cpus=4 --disk-size=60 --memory=6096 --volume $HOME:$HOME
如果已经初始化过Podman机器,无需重新初始化,执行以下步骤添加挂载:
podman machine stop podman machine set --volume $HOME:$HOME podman machine start
- 验证挂载有效性
启动机器后,进入虚拟机内部检查目录是否存在:
podman machine ssh ls /Users/myuser/logs
确认目录存在后,重新运行容器命令即可正常挂载。
内容的提问来源于stack exchange,提问作者tryingToLearn

