搭载Apple芯片Mac上IRIS for Health Docker持久化卷启动失败排查
解决Apple芯片Mac上IRIS for Health容器持久化卷启动失败问题
根据报错信息,核心问题是容器内的irisowner用户没有权限向挂载的宿主目录写入文件,导致cp命令执行失败。以下是几种可行的解决方法:
方法1:确保Docker有权访问宿主目录
在Mac的Docker Desktop设置中:
- 打开Settings -> Resources -> File Sharing
- 把你用来挂载的
<volume-path-on-host>目录添加到列表中,点击Apply & Restart重启Docker
方法2:手动调整宿主目录的权限
IRIS容器内的irisowner用户UID固定为51773,直接给宿主目录设置对应权限:
sudo chown -R 51773:51773 /<volume-path-on-host>
如果是测试环境,也可以放宽目录权限让所有用户读写:
chmod -R 777 /<volume-path-on-host>
方法3:使用Docker管理卷代替宿主目录挂载
Docker管理卷会自动处理权限适配,避免宿主目录的权限冲突,修改启动命令如下:
docker run --name iris -d \ --publish 1972:1972 \ --publish 52773:52773 \ --volume iris-data:/external \ --env ISC_DATA_DIRECTORY=/external/durable \ containers.intersystems.com/intersystems/irishealth-community-arm64:latest-cd
这里iris-data是Docker自动创建的卷,数据会持久化存储在Docker的管理路径下。
方法4:启动容器时映射宿主用户权限(进阶)
如果必须使用宿主目录挂载,可以将宿主当前用户的UID/GID映射到容器内的irisowner用户,命令如下:
docker run --name iris -d \ --publish 1972:1972 \ --publish 52773:52773 \ --volume /<volume-path-on-host>:/external \ --env ISC_DATA_DIRECTORY=/external/durable \ --user $(id -u):$(id -g) \ containers.intersystems.com/intersystems/irishealth-community-arm64:latest-cd
注意:此方法需要确保宿主当前用户对挂载目录有读写权限。
内容的提问来源于stack exchange,提问作者JackTheKnife
相关产品推荐
相关产品推荐

