繁体   English   中英

使用不同于主机上的用户启动Docker容器

[英]Starting a Docker container with a user different from the one on the host

我正在尝试在Ubuntu服务器上部署映像。 问题是我希望容器具有root以外的用户。 换句话说,我想在该用户下启动容器。

我尝试过的。 我已经在具有图像的容器中成功创建了一个用户。 我尝试使用docker start命令启动容器,但未成功。

我试图用dockerfile内定义的用户创建一个新容器,但它也不成功。

root@juju_dev_server:/home/dev# sudo docker run -it --user dev d08d53c4d78b
docker: Error response from daemon: linux spec user: unable to find user dev: no matching entries in passwd file

这是我的dockerfile

 FROM debian

RUN groupadd -g 61000 dev
RUN useradd -g 61000 -l -m -s /bin/false -u 61000 dev
USER dev

CMD ["bash"]



FROM java:8
EXPOSE 8080
ADD /target/juju-0.0.1.jar juju-0.0.1.jar
ENTRYPOINT ["java","-jar","juju-0.0.1.jar"]

我是如何做到的,我使用Alpine而不是Ubuntu,但是应该可以正常工作:

以称为“开发人员”的用户身份创建并运行

Docker文件

RUN /bin/bash -c "adduser -D -u 1000 developer"
RUN passwd -d developer

RUN chown -R developer /home/developer/.bash*

RUN echo "developer    ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer

ENTRYPOINT ["/entrypoint.sh"]
CMD ["bash"]

入口点

# stuff I need running as root here. Then below runs a bash shell as "developer"
sudo -u developer -H bash -c "$@;"

我想您想将ENTRYPOINT更改为CMD或类似的名称,或者将其写入到entrypoint.sh中,但是您想启动Java东西。

您显示的Dockerfile将创建两个映像。 第一个是具有非root用户的纯debian映像。 第二个忽略第一个,它是一个有点常规的Java映像。

您需要在同一张图片中执行这两个步骤。 如果我要编写您的Dockerfile,它可能看起来像

FROM java:8
EXPOSE 8080

# (Prefer COPY to ADD unless you explicitly want its
# auto-unpacking semantics.)
COPY /target/juju-0.0.1.jar juju-0.0.1.jar

# Set up a non-root user context, after COPYing content
# in.  (Prevents the application from overwriting
# itself as a useful security measure.)
RUN groupadd -g 61000 app
RUN useradd -g 61000 -l -m -s /bin/false -u 61000 app
USER app

# Set the main container command.  (Generally prefer
# CMD to ENTRYPOINT if you’re only using one; it makes
# both getting debugging shells and later adopting the
# pattern of an initializing entrypoint script easier.)
CMD ["java","-jar","juju-0.0.1.jar"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM