DockerコンテナーからChromiumを実行する方法


9

環境

  • MacOSシエラ10.12.6
  • Dockerバージョン17.09.0-ce、ビルドafdb6d4
  • Ubuntu 16.04
  • XQuartz 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コンテナFAILからの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

serverfaultのエラーSee threadを削除しますが、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

Chromiumが表示されない

更新20171011

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

Chromium 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
@zabumba、これでどこか得ましたか?
Damian Powell、

回答:


2

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


質問に賛成することを忘れないでください。他の誰かが手伝ってくれるかどうか見てください。サブユーザーへのポインタが好きです。それは興味深い
zabumba

subuser私が探していた「Qubes OS lite」かもしれません!ありがとう!
Dave

1

試す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の発明である場合、ドッキングされたUbuntuはそのフォーマットを理解できない可能性があります。

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

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

これは、あきらめる前に失敗する特定の操作を絞り込むのに役立つ場合があります。


良い指針があるので、あなたに賞金を差し上げますが、私は問題を解決していません。他の誰かが助けてくれるかどうか確かめるために、別の賞金を作ります。最終的にはDockerfileを提供します。thx
zabumba 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.