環境

環境

環境

  • MacOS シエラ 10.12.6
  • Docker バージョン 17.09.0-ce, afdb6d4 ビルド
  • Ubuntu16.04
  • エクスクォーツ 2.7.9

Dockerコンテナを介してMacデスクトップのChromiumブラウザを開きたいです。

docker run -i -t ubuntu:16.04 /bin/bash
apt-get update
apt-get install alsa-base chromium-browser xauth
adduser myuser

犯罪

docker commit 2862a7bfcc2f  acme/mycontainer:0.1

myuserコンテナでChromeブラウザを実行できない

docker run --user myuser -i -t acme/mycontainer:0.1 /usr/bin/chromium-browser
Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted

何かもっとあるようです。

どんなアドバイス?

UDPATE - 使用--privileged

エラーを取り除くサーバーエラーのスレッドを参照してください。しかし、UIは表示されません

docker run \
       --privileged \
       --user mysuer \
       -i -t acme/mycontainer:0.1 /usr/bin/chromium-browser

この

docker run \
   --privileged \
   --net host \
   -v /tmp/.X11-unix:/tmp/.X11-unix \
   -e DISPLAY=$DISPLAY \
   -e XAUTHORITY=/.Xauthority \
   -v ~/.Xauthority:/.Xauthority:ro \
   --name chromium \
   --user mysuser \
   -i -t acme/mycontainer:0.1 /usr/bin/chromium-browser

Chromeが表示されない

20171011アップデート

docker run \
   --privileged \
   --net host \
   -v /tmp/.X11-unix \
   -e DISPLAY \
   --name chromium \
   --user myuser \
   -i -t acme/mycontainer:0.1 \
   bash

Chromeを起動 Gtk: cannot open display: [...] org.macosforge.xquartz:0間違い

$ chromium-browser --verbose
[37:37:1011/154632.348303:VERBOSE1:breakpad_linux.cc(1978)] Breakpad disabled
[1:1:1011/154632.378280:VERBOSE1:zygote_main_linux.cc(537)] ZygoteMain: initializing 0 fork delegates
[1:1:1011/154632.378653:INFO:cpu_info.cc(50)] Available number of cores: 4
[37:37:1011/154632.381303:WARNING:browser_main_loop.cc(275)] Gtk: cannot open display: \
      /private/tmp/com.apple.launchd.Y2wR3QWw57/org.macosforge.xquartz:0

私のMacで編集sshd_config

sudo vim /etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10
XAuthLocation /opt/X11/bin/xauth

私のMacでDISPLAY

$ env | grep DISPLAY
DISPLAY=/private/tmp/com.apple.launchd.Y2wR3QWw57/org.macosforge.xquartz:0

ディスク上

ls -al /private/tmp/com.apple.launchd.gCYQToI4lb/*
srw-rw-rw-  1 joel  wheel     0B Oct 11 17:50 
/private/tmp/com.apple.launchd.gCYQToI4lb/org.macosforge.xquartz:0=

答え1

あなたのニーズが私に思い出させますサブユーザー。プライバシーを保護し、セキュリティを向上させるために、Dockerコンテナでエンドユーザーアプリケーションを実行するように設計されています。

答え2

実験するMacはありませんが、以下はいくつかの一般的な提案です。

X11は通常、モニターを所有しているユーザーのみが読み取り可能なキーファイルで保護されているため、ファイルシステム権限は、ファイルを読み取ることができる他のプログラムのみを接続できると主張するために使用されます。クライアントはファイルを読み取り、その内容をソケットを介してサーバーに繰り返します。じゃあ、あなたの言葉が正しいと思います。

-e XAUTHORITY=/.Xauthority \
-v ~/.Xauthority:/.Xauthority:ro \

次に、SSH X11転送設定を表示しますが、DockerコンテナにSSHとして接続するように指示はありません。 SSH転送は通常、次の目的で使用されます。

ssh $HOST -X program-which-launches-gui

そのためには、Dockerコンテナ内でSSHサーバーを実行する必要がありますが、これには少しの労力が必要です。

次に、DISPLAY=/path/to/socket私が以前に使用していなかったことを示します。これがMacOSの発明なら、Dockerized Ubuntuはフォーマットを理解できないかもしれません。

最後に、dockerコンテナ内で「strace」コマンドを使用して、Chromeが実際に何をしようとしているのかを確認できます。

strace chromium-browser 2>&1 | egrep "open|stat|connect|bind"

これは、放棄する前に失敗した特定のタスクの範囲を絞り込むのに役立ちます。

関連情報