web-dev-qa-db-ja.com

Docker内でChromiumを実行しています-Gtk:ディスプレイを開けません::0

Dockerコンテナ内でクロムを実行しようとすると、次のエラーが表示されます:Gtk:cannot open open display::0

Dockerfile:( https://registry.hub.docker.com/u/jess/chromium/dockerfile に基づく)

FROM debian:jessie

# Install Chromium
RUN sed -i.bak 's/jessie main/jessie main contrib non-free/g' /etc/apt/sources.list && \
    apt-get update && apt-get install -y \
    chromium \
    chromium-l10n \
    libcanberra-gtk-module \
    libexif-dev \
    libpango1.0-0 \
    libv4l-0 \
    pepperflashplugin-nonfree \                                                                          
    --no-install-recommends && \
    mkdir -p /etc/chromium.d/

# Autorun x11vnc
CMD ["/usr/bin/chromium", "--no-sandbox", "--user-data-dir=/data"]

ビルドして実行:

docker build -t chromium
docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --privileged chromium

そしてエラー:

[1:1:0202/085603:ERROR:browser_main_loop.cc(164)] Running without the SUID sandbox! See https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
No protocol specified
[1:1:0202/085603:ERROR:browser_main_loop.cc(210)] Gtk: cannot open display: :0
34
user3538553

私はクロムについてあまり知りませんが、:-) Xクライアントに:0に接続するように指示すると、ポート6000(またはXサーバーが実行されているもの)に接続することを伝えますon)+ 0、またはこの場合ポート6000。実際、DISPLAYはIP:PORT(上記の+6000)です。 Xサーバーはホストで実行されているため、以下を設定した場合:

DISPLAY=your_Host_ip:0

うまくいくかもしれません。ただし、Xサーバーは古いクライアントからの接続のみを許可しなかったため、Xサーバーを開く必要があります。ホストで、実行します

xhost +

dockerコンテナを実行する前に。これはすべて、ホストでクロムを実行できることを前提としています(つまり、ホストにXサーバーが存在する)。

54
Greg

試して

xhost local:root

これで解決できます。DebianJessieにいます。 https://github.com/jfrazelle/dockerfiles/issues/4

参照として追加(Gregからの実際の回答を参照)

Dockerイメージに追加

RUN apt-get update
RUN apt-get install -qqy x11-apps

https://people.ece.cornell.edu/skand/post/x-forwarding-on-docker/

そして、実行します

Sudo docker run  --env DISPLAY=unix$DISPLAY --privileged --volume $XAUTH:/root/.Xauthority --volume /tmp/.X11-unix:/tmp/.X11-unix  --rm --runtime=nvidia --rm -it -v /home/alex/coding:/coding  alexcpn/nvidia-cuda-grpc:1.0 bash

サンプルコマンドを確認する

xclock
3
Alex Punnen