我已创建此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
登录它。但它没有发生。
请让我知道如何实现这一目标。
答案 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
的方法,要么是错误的,要么是我一无所知的。)