我正在尝试从 lxc 容器运行 Google Chrome,但尽管我多次尝试并进行各种调整,但仍然失败。
ERROR:browser_main_loop.cc(271)] Gtk: cannot open display: :0.0
这是我的脚本
#!/bin/sh
CONTAINER=xenial-gui
CMD_LINE="google-chrome --disable-setuid-sandbox --user-data-dir $*"
STARTED=false
if ! lxc-wait -n $CONTAINER -s RUNNING -t 0; then
lxc-start -n $CONTAINER -d
lxc-wait -n $CONTAINER -s RUNNING
STARTED=true
fi
PULSE_SOCKET=/home/ubuntu/.pulse_socket
lxc-attach --clear-env -n $CONTAINER -- sudo -u ubuntu -i \
env DISPLAY=$DISPLAY PULSE_SERVER=$PULSE_SOCKET $CMD_LINE
if [ "$STARTED" = "true" ]; then
lxc-stop -n $CONTAINER -t 10
fi
答案1
对我来说,当xhost local:*
以 root 身份或使用执行时,它可以工作sudo
。此命令允许本地用户访问屏幕。我需要发出此命令,因为我在登录桌面时以不同的用户身份运行非特权容器。
如果你正在运行非特权容器,你甚至可以使用 进一步限制这一点xhost local:username
。另请参阅man xhost
。
当我开始实验时,我意外地启用了此功能,并在重新启动机器后感到疑惑了一段时间。