2

lxc コンテナーの起動時に、supervisord を使用して vncserver を開始しようとしています (コンテナーであることは関係ないと思います)。問題は、マシンがルートとして起動することです。私の 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 に答える