X11 Ошибка при запуске в виде контейнера Docker

Кроме того, если вы хотите восстановить 4% размера раздела диска на разделах EXT3 / EXT4, вы можете использовать

tune2fs -m 1 /dev/sdXY

Это (это не будет переформатировать или изменить ваши данные любым способом) уменьшит пространство, зарезервированное для root, с 5% до 1%. Это пространство было зарезервировано для того, чтобы у пользователя root всегда было пространство для управления системой.

Эти 5% требовались, когда диски были небольшими, но с сегодняшними дисками 1% более чем достаточно.

С уважением,

0
13.11.2018, 19:38
2 ответа

Команда apt-get install xauthтребуется только один раз, поэтому вы можете включить ее в свой Dockerfile, чтобы она выполнялась при сборке образа.

RUN apt-get install xauth

Для команды xauth addвы, похоже, зависите от переменной DISPLAY, которая передается контейнеру при запуске. В этом случае было бы лучше создать сценарий оболочки, который выполняет всю необходимую инициализацию при запуске, а затем запускает вашу программу Python. Например:

#!/bin/bash

HOST=cctv
DISPLAY_NUMBER=$(echo $DISPLAY | cut -d. -f1 | cut -d: -f2)
AUTH_COOKIE=$(xauth list | grep "^$(hostname)/unix:${DISPLAY_NUMBER} " | awk '{print $3}')
xauth add ${HOST}/unix:${DISPLAY_NUMBER} MIT-MAGIC-COOKIE-1 ${AUTH_COOKIE}
python /path/to/program.py

Затем вы можете скопировать этот сценарий на этапе сборки и установить его в качестве команды или точки входа.

COPY init-script.bash /opt/program
CMD ["/bin/bash","/opt/program/init-script.bash"]
2
28.01.2020, 02:31

Я решил эту проблему, используя эту команду на хосте перед запуском контейнера:

xhost +

После этого я смог запустить свой контейнер с:

sudo docker run -it --device=/dev/video0:/dev/video0 -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix test1

Я не устанавливал xauthвнутри контейнера.

1
10.05.2021, 23:21

Теги

Похожие вопросы