Ошибки dbus при попытке запустить приложение с графическим интерфейсом из контейнера Docker CentOS - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь запустить графический интерфейс из контейнера CentOS. Я пытался следовать этому примеру . Это мой Dockerfile:

#!/bin/bash
FROM centos:7
#RUN yum install -y firefox dbus dbus-x11
RUN yum install -y firefox 
# Replace 0 with your user / group id
RUN export uid=1000 gid=100
RUN mkdir -p /home/developer
RUN echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd
RUN echo "developer:x:${uid}:" >> /etc/group
RUN echo "developer ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
RUN chmod 0440 /etc/sudoers
RUN chown ${uid}:${gid} -R /home/developer
#RUN dbus-uuidgen > /var/lib/dbus/machine-id

#RUN export $(dbus-launch)

USER developer
ENV HOME /home/developer
CMD /usr/bin/firefox

Затем я запускаю следующие команды в моем терминале.

   docker run -ti --rm \
       -e DISPLAY=$DISPLAY \
       -v /tmp/.X11-unix:/tmp/.X11-unix \
       firefox

    process 8: D-Bus library appears to be incorrectly set up; failed to read machine uuid: UUID file '/etc/machine-id' should contain a hex string of length 32, not length 0, with no other text
    See the manual page for dbus-uuidgen to correct this issue.
      D-Bus not built with -rdynamic so unable to print a backtrace
    Running without a11y support!
    No protocol specified
    Error: cannot open display: :0.0

Я пробовал это решение , где я добавляю следующие строки в мой Dockerfile,

# apt-get install -y dbus
# dbus-uuidgen > /var/lib/dbus/machine-id

Но это не решило проблему. Есть идеи?

Редактировать: моей операционной системой является Arch Linux. И я действительно пытаюсь запустить этот пример в CentOs. Мне действительно не нужен контейнер с графическим интерфейсом Firefox. Я просто пытался получить простейший пример графического интерфейса пользователя, работающего в контейнере CentOS, и мне это не удалось.

1 Ответ

0 голосов
/ 10 января 2019

Проблема с вашим DockerFile, ваш базовый образ - Centos, а остальная часть команды - для Ubuntu.

FROM ubuntu

RUN apt-get update && apt-get install -y firefox

# Replace 1000 with your user / group id
RUN export uid=1000 gid=1000 && \
    mkdir -p /home/developer && \
    echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \
    echo "developer:x:${uid}:" >> /etc/group && \
    echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer && \
    chmod 0440 /etc/sudoers.d/developer && \
    chown ${uid}:${gid} -R /home/developer

USER developer
ENV HOME /home/developer
CMD /usr/bin/firefox

Ваша команда Run будет

docker run -ti --rm  -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix firefox

Изображение выше протестировано в Ubuntu 18.04 и работает нормально.

Для окна попробуйте вот так

docker run -ti --rm -e DISPLAY=$DISPLAY firefox

Вы проверяете вышеуказанное изображение в реестре Docker.

docker pull adilm7177/firefox
...