2

我正在尝试在 lxc 容器的启动时使用 supervisord 启动 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 吗?

4

1 回答 1

0

您可以定义运行具有特定用户名(如果存在)或 UID 的容器,而图像/容器中没有任何现有用户。

Docker 文档:https ://docs.docker.com/engine/reference/run/#user

用户

root (id = 0) 是容器内的默认用户。图像开发人员可以创建其他用户。这些用户可以通过名称访问。传递数字 ID 时,用户不必存在于容器中。

开发者可以通过 Dockerfile USER 指令设置一个默认用户来运行第一个进程。启动容器时,操作员可以通过传递 -u 选项来覆盖 USER 指令。

-u="": Username or UID

注意:如果你传递一个数字 uid,它必须在 0-2147483647 的范围内。

于 2016-01-12T10:15:54.550 回答