容器中的目录所有权:root 与 mambauser

Directory Ownership in Container: root vs mambauser

提问人:navneethc 提问时间:11/4/2023 更新时间:11/16/2023 访问量:30

问:

我们正在尝试将其中一个图像从使用 miniconda3 作为基础图像移动到 micromamba (1.5-bookworm-slim)。

我们的存储库包含一个 Makefile,其中包含用于构建映像和运行一些测试的命令。

构建没什么特别的,Dockerfile 也是如此。(我们短暂地切换到使用 APT 安装软件包。micromamba 映像中的默认用户是 。rootmambauser

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 上运行它时,该文件夹的所有者是该文件夹的所有者,并且测试成功运行。rootmambauser

当我显式添加到命令中时,所有者显示为 ,但测试仍然失败。--user mambauserrun1000

除了在 Dockerfile 中将用户设置为或以 身份运行测试之外,有没有办法让它工作?rootroot

如果需要,很乐意分享 Dockerfile、系统设置等的相关细节。

docker permissions root mamba micromamba

评论


答:

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