用户运行码头工人容器

时间:2017-12-28 23:38:24

标签: docker dockerfile

我已创建此docker文件以在docker容器中运行python脚本。 我在这里创建了一个用户,我希望这个用户从docker image运行容器。

FROM ubuntu:16.04
MAINTAINER "Vijendra Kulhade" <xxxxxx@xxxxxx.com>
RUN yum makecache fast
RUN yum -y update
RUN yum -y install gcc
RUN yum -y install zlib-devel
RUN yum -y install openssl-devel
RUN yum -y install python-setuptools python-setuptools-devel
RUN yum -y install libyaml
RUN useradd newuser -d /home/newuser
RUN chown -R newuser.newuser /usr/bin/
RUN chown -R newuser.newuser /usr/lib64/
RUN chown -R newuser.newuser /usr/lib/
ENV https_proxy=http://proxy.xxxx.com:8080
RUN easy_install pip
RUN pip -V
RUN pip install --upgrade pip
RUN pip install --upgrade --force-reinstall setuptools

我使用此命令来创建图像 docker build -t python-container . 而我正在使用 docker run --security-opt label=user:newuser -i -t python-container:latest /bin/bash从图像运行容器。我期待这会启动容器并使用newuser@xxxxxxxx登录它。但它没有发生。 请让我知道如何实现这一目标。

1 个答案:

答案 0 :(得分:0)

使用与root不同的用户运行docker容器有两种可能性。

第一种可能性:在Dockerfile中创建用户

在示例Dockerfile中,使用命令newuser创建用户useradd。你可以写指令

USER newuser
Dockerfile中的

。以下所有命令将以用户newuser执行。这适用于以下所有RUN指令以及docker run命令。

第二种可能性:选项--user(图像中可能有USER个指令)

您可以使用docker run选项--user。它可用于指定不带名称的UID:

docker run --user 1000

或者指定没有名称的UID和GID:

docker run --user 1000:100

或仅在不知道用户将获得哪个UID的情况下指定名称:

docker run --user newuser

您可以将两种方式结合起来。使用指定的(!)UID和GID在Dockerfile中创建用户,并将其添加到所有需要的组。使用匹配的docker run --user UID:GID,您的容器用户将拥有您在Dockerfile中为其提供的所有属性。

(我不理解你使用--security-opt label=user:newuser的方法,要么是错误的,要么是我一无所知的。)