Можно ли запустить контейнер Docker и показать его графическое окно приложения на хосте?

Я создал самый простой (минимальный рабочий пример) Dockerfile для запуска графического приложения на моей хост-системе Ubuntu 16.04 LTS с внутренним контейнером 19.04:

mkdir ~/docker-xclock

cat > ~/docker-xclock/Dockerfile << EOF
FROM ubuntu:19.04
RUN apt-get update
RUN apt-get install -y x11-apps
CMD xclock
EOF

Затем создал контейнер с

docker build -t ubuntu:xclock ~/docker-xclock

Когда я пытаюсь запустить этот контейнер, отображается сообщение об ошибке:

$ docker run ubuntu:xclock 
Error: Can't open display: 

Что не так?

1
задан 28 July 2019 в 15:44

3 ответа

Мы должны сообщить контейнеру о выполнении сервера X11 на хосте со специальным синтаксисом [1]:

docker run -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix ubuntu:xclock --user="$(id --user):$(id --group)"

xclock on docker

где [2]:

- e, - ENV = []
Переменные среды набора
- u, - пользователь = ""
Устанавливает имя пользователя или используемый UID и дополнительно groupname или GID для указанной команды.
- v | - объем [= [[DIR хоста:] контейнерный DIR [: ОПЦИИ]]]
Создайте связывание, монтируются. Если Вы указываете,-v/HOST-DIR:/CONTAINER-DIR, Докер связывают, монтируется/HOST-DIR в хосте/CONTAINER-DIR в контейнере Докера. Если 'DIR хоста' опущен, Докер автоматически создает новый объем на хосте. ОПЦИИ являются запятой, разграничил список и может быть:


Ссылка:

  1. https://forums.docker.com/t/x11-forwarding-with-v-on-docker-run-not-working/17708/4
  2. man docker-run
1
ответ дан 7 December 2019 в 15:00

Создайте Dockerfile в папке docker-xclock.

mkdir ~/docker-xclock

cat > ~/docker-xclock/Dockerfile << EOF
FROM ubuntu:19.04
ENV https_proxy="xxx"
ENV http_proxy="xxx"
ENV no_proxy="xxx"
RUN apt-get update
RUN apt-get install -y x11-apps
CMD xclock
EOF

docker build -t ubuntu:xclock ~/docker-xclock

docker run -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --user="$(id --user):$(id --group)" ubuntu:xclock

Примечание: ubuntu:xclock поставить в конце команды. Использование X11 для взаимодействия с графическим интерфейсом.

0
ответ дан 3 January 2020 в 09:15

если вы все еще получаете сообщение об ошибке, например:

No protocol specified
Error: Can't open display: :0

убедитесь, что вы запускаете

$ xhost local:docker

*-из https://github.com/jessfraz/dockerfiles/ вопросы/6#issuecomment-266230114

2
ответ дан 4 January 2021 в 11:18

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

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