Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与用户一起运行docker容器_Docker_Dockerfile - Fatal编程技术网

与用户一起运行docker容器

与用户一起运行docker容器,docker,dockerfile,Docker,Dockerfile,我创建这个docker文件是为了在docker容器中运行python脚本。 我正在这里创建一个用户,我希望该用户从docker映像运行容器 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 i

我创建这个docker文件是为了在docker容器中运行python脚本。 我正在这里创建一个用户,我希望该用户从docker映像运行容器

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
来自ubuntu:16.04的

维修人员“Vijendra Kulhade”
快速运行yum-makecache
运行yum-y更新
运行yum-y安装gcc
运行yum-y安装zlib-devel
运行yum-y安装openssl-devel
运行yum-y安装python setuptools python setuptools-devel
运行yum-y安装libyaml
运行useraddnewuser-d/home/newuser
运行chown-R newuser.newuser/usr/bin/
运行chown-R newuser.newuser/usr/lib64/
运行chown-R newuser.newuser/usr/lib/
环境https_代理=http://proxy.xxxx.com:8080
运行简易安装程序
运行pip-V
运行pip安装--升级pip
运行pip安装--升级--强制重新安装setuptools
我使用此命令创建图像
docker build-t python容器。
我正在使用
docker run--security opt label=user:newuser-i-t python container:latest/bin/bash
从映像运行容器。我希望这会启动容器并使用
newuser@xxxxxxxx
。但事实并非如此。
请告诉我如何做到这一点。

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


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

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

USER newuser
在Dockerfile中。以下所有命令都将作为user
newuser
执行。这适用于以下所有
RUN
指令以及
docker RUN
命令


第二种可能性:选项
--用户
(最可能的
用户
图像中的说明)

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

docker run --user 1000
docker run --user 1000:100
或指定不带名称的UID和GID:

docker run --user 1000
docker run --user 1000:100
或者只指定一个名称,而不知道用户将获得哪个UID:

docker run --user newuser

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



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

你能运行
docker日志看看会发生什么吗?Ubuntu没有命令
yum
,它使用
apt
来管理包。您是如何构建该图像的?我刚刚浏览了文档,发现
--security opt label=user:newuser
可能我不太理解它。但是
docker-run--user newuser-i-t image:version/bin/bash
对我来说很有效。