【问题标题】:Starting vncserver using supervisord inside a Linux container在 Linux 容器中使用 supervisord 启动 vncserver
【发布时间】:2013-10-10 16:11:44
【问题描述】:

我正在尝试在 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 吗?

【问题讨论】:

  • 你能发布一个 Dockerfile 来展示如何重现这个问题吗? (作为 gist、pastebin 或类似的东西,也许?Gist 是最好的,因为您可以添加一个虚拟 passwd 文件......)

标签: vnc supervisord docker lxc


【解决方案1】:

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

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

用户

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

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

-u="": Username or UID

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

【讨论】:

    猜你喜欢
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多