社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

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

Nesan Mano • 5 年前 • 1681 次点击  

我试图在Ubuntu服务器上部署一个映像。问题是,我希望容器的用户不是根用户。换句话说,我想在该用户下启动容器。

我试过的。 我已经成功地在容器中创建了一个具有图像的用户。 我试图用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

.

这是我的档案

 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"]
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51394
 
1681 次点击  
文章 [ 2 ]  |  最新文章 5 年前
David Maze
Reply   •   1 楼
David Maze    6 年前

显示的Dockerfile将创建两个图像。第一个是平原 debian 与非根用户的映像。第二个忽略了第一个,是一个有点常规的Java映像。

您需要在同一个图像中执行这两个步骤。如果我要写你的案卷的话

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"]
Shardj
Reply   •   2 楼
Shardj    6 年前

我是怎么做到的,我用的不是Ubuntu而是Alpine,但它应该很好:

创建并运行一个名为“developer”的用户

停靠文件

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"]

入口点.sh

# 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工具。