Использовать пересылку X для сервера SSH внутри контейнера Docker

Я пытаюсь использовать пересылку X через SSH для запуска приложений GUI, установленных в контейнере Docker на основе Ubuntu, но пересылка X не применяется, даже если я установил xauth с X11Forwarding yes в / etc / ssh / sshd_config , ($DISPLAY не определен.) Я попытался использовать пересылку X для реальных компьютеров с одинаковой конфигурацией, и она работала хорошо. ($DISPLAY определено.) Действительно ли возможна пересылка X через SSH в контейнер Docker?

6
задан 19 April 2017 в 19:50

4 ответа

Если контейнер находится на вашей локальной машине, проще предоставить программам инсайдерский доступ к вашему контейнеру прямо к вашему гнезду X11. Для этого нужно всего лишь установить [F2] и [F3] в контейнер и установите $DISPLAY.

Предполагая, что вы используете some_user с домашней директории /home/some_user/, чтобы запустить your_program в контейнере [ f8] использовать

docker run  -v /tmp/.X11-unix:/tmp/.X11-unix \
            -v ~/.Xauthority:/home/some_user/.Xauthority \
            --env DISPLAY=:0 --user some_user some_image your_program
1
ответ дан 22 May 2018 в 23:26
  • 1
    Не работал для меня. – TarekEldeeb 22 October 2017 в 12:29
  • 2
    Получив информацию из разных источников, а также этот пост, я получил два сценария для создания рабочей установки для запуска nvidia jetpack внутри контейнера. См. superuser SO «Запустите установщик JetPack TX2 в контейнере докеров» – minghua 16 May 2018 в 20:17

Если контейнер находится на вашей локальной машине, проще предоставить программам инсайдерский доступ к вашему контейнеру прямо к вашему гнезду X11. Для этого вам нужно только установить /tmp/.X11-unix и ~/.Xauthority в свой контейнер и установить $DISPLAY.

Предполагая, что вы используете some_user с домашним dir /home/some_user/ для запуска your_program в контейнере some_image использовать

docker run -v /tmp/.X11-unix:/tmp/.X11-unix \ -v ~/.Xauthority:/home/some_user/.Xauthority \ --env DISPLAY=:0 --user some_user some_image your_program
1
ответ дан 18 July 2018 в 14:38

Если контейнер находится на вашей локальной машине, проще предоставить программам инсайдерский доступ к вашему контейнеру прямо к вашему гнезду X11. Для этого вам нужно только установить /tmp/.X11-unix и ~/.Xauthority в свой контейнер и установить $DISPLAY.

Предполагая, что вы используете some_user с домашним dir /home/some_user/ для запуска your_program в контейнере some_image использовать

docker run -v /tmp/.X11-unix:/tmp/.X11-unix \ -v ~/.Xauthority:/home/some_user/.Xauthority \ --env DISPLAY=:0 --user some_user some_image your_program
1
ответ дан 24 July 2018 в 20:26

Если контейнер находится на вашей локальной машине, проще предоставить программам инсайдерский доступ к вашему контейнеру прямо к вашему гнезду X11. Для этого вам нужно только установить /tmp/.X11-unix и ~/.Xauthority в свой контейнер и установить $DISPLAY.

Предполагая, что вы используете some_user с домашним dir /home/some_user/ для запуска your_program в контейнере some_image использовать

docker run -v /tmp/.X11-unix:/tmp/.X11-unix \ -v ~/.Xauthority:/home/some_user/.Xauthority \ --env DISPLAY=:0 --user some_user some_image your_program
1
ответ дан 31 July 2018 в 12:26

Другие вопросы по тегам:

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