以非root用户身份在Docker内部运行应用

thom_nic

昨天发布了Shocker的消息之后,似乎Docker容器中的应用程序不应以root用户身份运行。我尝试更新自己Dockerfile以创建应用程序用户,但是更改对应用程序文件的权限(虽然仍然是root)似乎不起作用。我猜这是因为可能未将某些LXC权限授予root用户?

这是我的Dockerfile:

# Node.js app Docker file

FROM dockerfile/nodejs
MAINTAINER Thom Nichols "[email protected]"

RUN useradd -ms /bin/bash node

ADD . /data
# This next line doesn't seem to have any effect:
RUN chown -R node /data 

ENV HOME /home/node
USER node

RUN cd /data && npm install

EXPOSE 8888

WORKDIR /data

CMD ["npm", "start"]

很简单,但是当我ls -l一切仍然由root拥有时:

[ node@ed7ae33e76e1:/data {docker-nonroot-user} ]$ ls -l /data
total 64K
-rw-r--r--  1 root root  383 Jun 18 20:32 Dockerfile
-rw-r--r--  1 root root  862 Jun 18 16:23 Gruntfile.js
-rw-r--r--  1 root root 1.2K Jun 18 15:48 README.md
drwxr-xr-x  4 root root 4.0K May 30 14:24 assets/
-rw-r--r--  1 root root  416 Jun  3 14:22 bower.json
-rw-r--r--  1 root root  930 May 30 01:50 config.js
drwxr-xr-x  4 root root 4.0K Jun 18 16:08 lib/
drwxr-xr-x 42 root root 4.0K Jun 18 16:04 node_modules/
-rw-r--r--  1 root root 2.0K Jun 18 16:04 package.json
-rw-r--r--  1 root root  118 May 30 18:35 server.js
drwxr-xr-x  3 root root 4.0K May 30 02:17 static/
drwxr-xr-x  3 root root 4.0K Jun 18 20:13 test/
drwxr-xr-x  3 root root 4.0K Jun  3 17:38 views/

感谢@creak阐明了卷的工作方式,我更新的dockerfile的工作非常出色chowned初始文件完成后npm install将以非root用户身份运行。而且由于采用了postinstall钩,NPM运行bower install && grunt assets这需要的剩余安装步骤护理和避免任何需要npm install -g的任何节点CLI工具,如凉亭,咕噜或CoffeeScript的。

cre

这个有点棘手,实际上是由于您从开始的图像。

如果查看源,您会注意到这/data/是一个卷。因此,您在中所做的所有操作Dockerfile都会在运行时被丢弃,并被随后装入的卷覆盖。

您可以在运行时通过将CMD更改为来进行调整CMD chown -R node /data && npm start

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

以非root用户身份运行docker或以root用户身份在tomcat上运行jenkins

来自分类Dev

以root用户身份运行docker映像,以非root用户身份运行服务

来自分类Dev

如何以非root用户身份运行docker image?

来自分类Dev

以非 root 用户身份运行 docker 容器进程

来自分类Dev

以非root用户身份运行脚本

来自分类Dev

以非root用户身份运行monit

来自分类Dev

以非root用户身份运行openvpn

来自分类Dev

以非root用户身份运行openvpn

来自分类Dev

以另一个(非root)用户身份运行GUI应用程序

来自分类Dev

为什么我不能以非root用户身份在Docker容器中运行IPU程序?

来自分类Dev

如何以非root用户身份运行root别名?

来自分类Dev

如何从非root用户运行docker容器?

来自分类Dev

当Apache以非root用户身份运行时,以root用户身份运行cronjobs

来自分类Dev

如何以非root用户身份启动运行级别3?

来自分类Dev

如何使此deploy / init以非root用户身份运行?

来自分类Dev

以非root用户身份运行rm -rf / *后的分类帮助

来自分类Dev

如何从 Chef 食谱中以非 root 用户身份运行 `gpg`?

来自分类Dev

以非 root 用户身份运行 Hyperledger-Fabric 容器

来自分类常见问题

以非root用户身份连接到docker容器

来自分类Dev

以root用户身份运行的Docker的安全性

来自分类Dev

Composer 在 docker 中以 root 身份运行,即使指定了用户

来自分类Dev

以非root用户身份执行

来自分类Dev

非root用户可以root身份运行passwd命令,为什么不能更改root密码?

来自分类Dev

在非root用户的Android上运行应用程序

来自分类Dev

在Docker容器中以非root用户运行sudo命令

来自分类Dev

在Docker容器中以非root用户运行sudo命令

来自分类Dev

以root身份运行docker容器

来自分类Dev

如何在以root权限开头的脚本中以非root用户身份运行命令?

来自分类Dev

如果以root用户身份安装的程序是由非root用户运行的,它将仍然具有root特权吗?

Related 相关文章

  1. 1

    以非root用户身份运行docker或以root用户身份在tomcat上运行jenkins

  2. 2

    以root用户身份运行docker映像,以非root用户身份运行服务

  3. 3

    如何以非root用户身份运行docker image?

  4. 4

    以非 root 用户身份运行 docker 容器进程

  5. 5

    以非root用户身份运行脚本

  6. 6

    以非root用户身份运行monit

  7. 7

    以非root用户身份运行openvpn

  8. 8

    以非root用户身份运行openvpn

  9. 9

    以另一个(非root)用户身份运行GUI应用程序

  10. 10

    为什么我不能以非root用户身份在Docker容器中运行IPU程序?

  11. 11

    如何以非root用户身份运行root别名?

  12. 12

    如何从非root用户运行docker容器?

  13. 13

    当Apache以非root用户身份运行时,以root用户身份运行cronjobs

  14. 14

    如何以非root用户身份启动运行级别3?

  15. 15

    如何使此deploy / init以非root用户身份运行?

  16. 16

    以非root用户身份运行rm -rf / *后的分类帮助

  17. 17

    如何从 Chef 食谱中以非 root 用户身份运行 `gpg`?

  18. 18

    以非 root 用户身份运行 Hyperledger-Fabric 容器

  19. 19

    以非root用户身份连接到docker容器

  20. 20

    以root用户身份运行的Docker的安全性

  21. 21

    Composer 在 docker 中以 root 身份运行,即使指定了用户

  22. 22

    以非root用户身份执行

  23. 23

    非root用户可以root身份运行passwd命令,为什么不能更改root密码?

  24. 24

    在非root用户的Android上运行应用程序

  25. 25

    在Docker容器中以非root用户运行sudo命令

  26. 26

    在Docker容器中以非root用户运行sudo命令

  27. 27

    以root身份运行docker容器

  28. 28

    如何在以root权限开头的脚本中以非root用户身份运行命令?

  29. 29

    如果以root用户身份安装的程序是由非root用户运行的,它将仍然具有root特权吗?

热门标签

归档