0

我有这个 Dockerfile:

FROM ubuntu:bionic

RUN mkdir /usr/custom
ADD script.sh /usr/custom
RUN chmod =rx /usr/custom/script.sh
RUN useradd -ms /bin/bash -u 1001 someusr
USER someusr
WORKDIR /home/someusr

其中 script.sh(它与 Dockerfile 位于同一目录中)包含:

#!/bin/bash
whoami

使用以下命令构建图像:

docker image build --tag my_ubuntu_bionic:auto .

然后运行它:

docker run --rm --name ubl --user=1001 my_ubuntu_bionic:auto /usr/custom/script.sh

它显示根。

我怎样才能运行脚本someusr?该--user参数似乎没有任何效果(--user=someusr不起作用)。

最终,我希望 script.sh 在具有最低权限的用户的上下文中执行。我在 SO 上看到的解决方案假设一个 linux 主机。

版本:

Docker version 19.03.5, build 2ee0c57608
OS Name: Microsoft Windows Server 2019 Datacenter
Version: 10.0.17763 Build 17763

谢谢

4

2 回答 2

0

我最终使用了以下runuser命令:

docker run --rm --name ubl --user=1001 my_ubuntu_bionic:auto runuser -l someusr -c whoami
于 2020-01-03T00:54:03.317 回答
0

您需要将所有权添加到 someusr 脚本所在的文件夹。

FROM ubuntu:bionic

RUN mkdir /usr/custom
ADD script.sh /usr/custom
RUN chmod +rx /usr/custom/script.sh
RUN useradd -ms /bin/bash -u 1001 someusr
RUN chown someusr -R /usr/custom
USER someusr
WORKDIR /home/someusr

我已经测试过它显示'someusr'。 在此处输入图像描述

于 2020-01-01T09:42:14.603 回答