在yesterday's news of Shocker之後,Docker容器中的應用程序似乎不應該作爲root運行。我試圖更新我的Dockerfile
以創建應用程序用戶,但是更改應用程序文件的權限(仍然是root用戶)似乎無法正常工作。我猜這是因爲一些LXC權限沒有被授予root用戶?在Docker中以非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:
[ [email protected]:/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感謝@吱吱的澄清的體積是如何工作的。一旦初始文件爲chown
ed,則npm install
以非root用戶身份運行。並且感謝postinstall
掛鉤,npm運行bower install && grunt assets
,它負責處理剩餘的安裝步驟,並避免任何需要npm install -g
任何節點cli工具(如bower,grunt或coffeescript)。
只是好奇,你肯定'node'用戶是越來越產生的? –
@ a.m。是的,用戶肯定是創建的。當我運行'docker run -it myimage/bin/bash'並運行'whoami'時,我以'node'登錄,這正是我所期望的。 –