Я пытаюсь запустить Google Chrome из контейнера lxc, но он не работает, несмотря на мои неоднократные попытки и различные изменения.
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
Для меня это работает при выполнении xhost local:*
как корень или с sudo
. Эта команда предоставляет доступ к экрану для локальных пользователей. Я должен выпустить это, потому что я выполняю непривилегированные контейнеры как другой пользователь, поскольку я вхожу в свой рабочий стол.
при выполнении не привилегированного контейнера Вы могли бы еще больше ограничить это с xhost local:username
. См. также man xhost
.
, Когда я начал экспериментировать, мне случайно включили это и задался вопросом некоторое время после перезапуска моей машины.