我试图在启动时使用supervisord为lxc容器启动vncserver(我不认为容器是相关的)。问题是机器以root身份启动。我的supervisord程序部分如下:
[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 :(得分:0)
您可以定义运行具有特定用户名称(如果存在)的容器或UID,而图像/容器中没有任何现有用户。
Docker文档:https://docs.docker.com/engine/reference/run/#user
USER
root(id = 0)是容器中的默认用户。图片 开发者可以创建其他用户。这些用户可以通过 名称。传递数字ID时,用户不必存在 容器。
开发人员可以设置默认用户来运行第一个进程 Dockerfile USER指令。启动容器时,操作员 可以通过传递-u选项覆盖USER指令。
-u="": Username or UID
注意:如果传递数字uid,则它必须在范围内 0-2147483647。