提问人:navneethc 提问时间:11/4/2023 更新时间:11/16/2023 访问量:30
容器中的目录所有权:root 与 mambauser
Directory Ownership in Container: root vs mambauser
问:
我们正在尝试将其中一个图像从使用 miniconda3 作为基础图像移动到 micromamba (1.5-bookworm-slim)。
我们的存储库包含一个 Makefile,其中包含用于构建映像和运行一些测试的命令。
构建没什么特别的,Dockerfile 也是如此。(我们短暂地切换到使用 APT 安装软件包。micromamba 映像中的默认用户是 。root
mambauser
test 命令如下:
docker run --mount type=bind,source="$$(pwd)/test-data",target=/assets --mount type=bind,source="$$(pwd)/test-output",target="/tmp/test-output" image_name:tag [call to script and arguments omitted]
这最终在我的 Ubuntu 系统上失败,因为脚本无法写入 /tmp/test-output 目录,因为它归 .但是,当同事在他的 Mac 上运行它时,该文件夹的所有者是该文件夹的所有者,并且测试成功运行。root
mambauser
当我显式添加到命令中时,所有者显示为 ,但测试仍然失败。--user mambauser
run
1000
除了在 Dockerfile 中将用户设置为或以 身份运行测试之外,有没有办法让它工作?root
root
如果需要,很乐意分享 Dockerfile、系统设置等的相关细节。
答:
0赞
navneethc
11/16/2023
#1
将当前用户的用户和组 ID(或名称)作为参数传递给命令解决了该问题。docker run
docker run -u "$(id -u):$(id -g)"
参考:https://github.com/mamba-org/micromamba-docker/discussions/382#discussioncomment-7495825
评论