Кроме того, если вы хотите восстановить 4% размера раздела диска на разделах EXT3 / EXT4, вы можете использовать
tune2fs -m 1 /dev/sdXY
Это (это не будет переформатировать или изменить ваши данные любым способом) уменьшит пространство, зарезервированное для root, с 5% до 1%. Это пространство было зарезервировано для того, чтобы у пользователя root всегда было пространство для управления системой.
Эти 5% требовались, когда диски были небольшими, но с сегодняшними дисками 1% более чем достаточно.
С уважением,
Команда 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"]
Я решил эту проблему, используя эту команду на хосте перед запуском контейнера:
xhost +
После этого я смог запустить свой контейнер с:
sudo docker run -it --device=/dev/video0:/dev/video0 -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix test1
Я не устанавливал xauth
внутри контейнера.