gpt4 book ai didi

node.js - 在 Docker 中以非 root 用户身份运行应用程序

转载 作者:IT老高 更新时间:2023-10-28 12:33:48 32 4
gpt4 key购买 nike

yesterday's news of Shocker 之后,似乎 Docker 容器内的应用程序不应该以 root 身份运行。我尝试更新我的 Dockerfile 以创建应用程序用户,但是更改应用程序文件的权限(虽然仍然是 root)似乎不起作用。我猜这是因为某些 LXC 权限可能没有授予 root 用户?

这是我的 Dockerfile:

# Node.js app Docker file

FROM dockerfile/nodejs
MAINTAINER Thom Nichols "thom@thomnichols.org"

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 时,一切仍然归根用户所有:

[ 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/

My updated dockerfile works great感谢@creak 对音量如何工作的澄清。一旦初始文件被 chown 编辑,npm install 就会以非 root 用户身份运行。并且由于 postinstall 钩子(Hook),npm 运行 bower install && grunt assets,它负责剩余的安装步骤并避免任何需要 npm install -g 任何 Node cli 工具,如 bower、grunt 或 coffeescript。

最佳答案

查看此帖子:http://www.yegor256.com/2014/08/29/docker-non-root.htmlrultor.com我们在他们自己的 Docker 容器中运行所有构建。每次在容器内运行脚本之前,我们都会切换到非 root 用户。方法如下:

adduser --disabled-password --gecos '' r
adduser r sudo
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
su -m r -c /home/r/script.sh

r 是我们正在使用的用户。

关于node.js - 在 Docker 中以非 root 用户身份运行应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24308760/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com