2013-10-03 49 views
1

我想在啓動時爲lxc容器啓動使用supervisord的vncserver(我不認爲是一個容器是相關的)。問題是機器以root身份啓動。我supervisord程序部分看起來像:在Linux容器內使用supervisord啓動vncserver

[program:vnc] 
directory=/ 
user=ubuntu 
environment=HOME="/home/ubuntu",USER="ubuntu" 
priority=901 
command=/usr/bin/vncserver -fg -geometry 1024x768 :1 

然而,我發現,日誌文件顯示其試圖創建一個密碼,儘管已經存在於/home/ubuntu/.vnc/passwd

密碼想知道我是否錯過了什麼?用戶是否應該在運行該命令之前更改用戶$ HOME和$ USER?

+0

你可以發佈一個Dockerfile來展示如何重現該問題嗎? (作爲一個要點,pastebin或類似的東西,也許?Gist是最好的,因爲你可以添加一個虛擬passwd文件...) – jpetazzo

回答

0

您可以定義運行具有特定用戶名(如果存在)或UID的容器,而圖像/容器中沒有任何現有用戶。

多克爾文檔:https://docs.docker.com/engine/reference/run/#user

USER

根(ID = 0)是在容器內的默認用戶。圖像 開發人員可以創建更多用戶。這些用戶可通過 名稱訪問。在傳遞數字標識時,用戶不必在 容器中存在。

開發人員可以設置默認用戶以使用 Dockerfile USER指令運行第一個進程。啓動容器時,操作員 可以通過傳遞-u選項來覆蓋USER指令。

-u="": Username or UID 

注意:如果你傳遞一個數字的UID,它必須是在 0-2147483647範圍。

相關問題