2014-02-19 13 views
0

通過pull ubuntu然後通過base-image/docker設置docker實例,然後在此基礎上成功安裝node.js。docker:安裝node.js應用程序有問題,因爲docker以根用戶身份運行

但是,當我嘗試拉取我正在處理的node.js應用程序的回購時,我遇到了npm install操作,然後遇到麻煩,因爲該操作期望不會以root身份運行,而且我已通過實例化它

docker run -name="{name}" -t -i {my custom docker container mirroring base-image) /bin/bash 

它已以root身份登錄我。有沒有辦法運行docker不作爲根?

回答

3

是的 - 您需要根據您的容器的Linux發行版預期(此處爲an Ubuntu example)在容器內創建其他用戶帳戶。

設置完用戶帳戶後,您可以使用Dockerfile USER parameter以該用戶身份運行Dockerfile中的其餘命令。請參閱PostgreSQL example以獲取完整的使用案例。

postgre用戶來自哪個例子? Debian軟件包可以創建安裝時所需的任何用戶。如果您想創建自己的用戶,您可以將RUN useradd添加到您的Dockerfile。對於一個完整的例子,你可以看看吉拉Dockerfile在此Atlassian Blog

由於運營商還可以決定用戶帳戶docker run一次使用,使用-u參數。這將覆蓋在Dockerfile中選擇的USER

+0

很酷,謝謝 - 有沒有一種方法可以在Dockerfile中創建這個用戶?通過創建一個運行所有內容的sudo'ubuntu'帳戶,我已經完成了一切運行,但是將其轉換爲正常工作的'Dockerfile'腳本令我頭疼,因爲我無法創建該帳戶 - 這真的只是是正確的'RUN useradd'功能的問題? – fox

+1

謝謝 - 我已經更明確地將useradd信息添加到原始答案。 – Andy

+0

所以,對不起,我有一個額外的後續行動:我能夠做到以下幾點:'1。 RUN/usr/sbin/useradd --create-home --home-dir/usr/local/{user} --shell/bin/bash {user} 2. RUN/usr/sbin/adduser {user} sudo 3. USER {user}',但後來我遇到了麻煩,運行'RUN sudo chown -R $ USER/src'來獲取目錄的所有權。有沒有一個正確的方法來做到這一點,以便它不會以pw請求退出? – fox

相關問題