我的目标是配置Docker镜像,我将通过无根用户使用它,这个用户只能读取jar文件。
我在Dockerfile中做了什么:
...something...
ARG USERNAME=MyCustomUser
ARG USER_UID=10001
ARG USER_GID=$USER_UID
RUN groupadd --gid $USER_GID $USERNAME \
&& useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \
...something...
但是我如何在文件系统中只配置jar文件的读取权限呢?
1条答案
按热度按时间wj8zmpe11#
不要在容器中安装任何其他东西。容器运行在受限环境中,通常无法访问容器外的文件(Docker强制),因此您不需要专门设置权限或禁止其他事情。
假设Dockerfile只包含:
映像中除了一组基本工具、JVM和jar文件之外没有其他内容,因此您不能在容器中执行其他操作。此外,jar文件归root所有,但容器(默认情况下)以非root用户身份运行,因此您无法覆盖映像中的任何内容。
容器中的用户名和ID通常不需要匹配任何特定的主机用户,在这个例子中,我选择了一个固定的名称,让adduser(8)为我选择ID。如果需要不同的用户ID(例如,写入绑定挂载的主机目录),可以在运行容器时指定数字用户ID。您不需要“创建用户”* 本身 *,并且您不希望仅仅因为其他人正在运行它而重新构建映像。不要尝试将用户ID作为构建时
ARG
传递。