Cara menjalankan Chromium dari wadah buruh pelabuhan

9

Lingkungan Hidup

  • MacOS Sierra 10.12.6
  • Docker versi 17.09.0-ce, bangun afdb6d4
  • Ubuntu 16.04
  • XQuartz 2.7.9

Saya ingin membuka browser Chromium dari wadah buruh pelabuhan ke desktop Mac saya.

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

Melakukan

docker commit 2862a7bfcc2f  acme/mycontainer:0.1

Menjalankan peramban kromium myuserdari wadah FAIL

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

Saya yakin ada sedikit lebih dari itu

Ada petunjuk?

UDPATE - menggunakan --privileged

Menghapus kesalahan Lihat utas pada serverfault tetapi UI tidak muncul

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

dan yang satu ini

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 tidak muncul

UPDATE 20171011

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

Mulai Gtk: cannot open display: [...] org.macosforge.xquartz:0 kesalahan Chromium

$ 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

Di Mac saya diedit sshd_config

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

Di Mac saya DISPLAY

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

Pada disk

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=
zabumba
sumber
1
Apakah Anda berhasil dengan ini, @zabumba?
Damian Powell

Jawaban:

2

Kebutuhan Anda mengingatkan saya pada subuser . Ini telah dirancang untuk menjalankan aplikasi pengguna akhir dalam wadah buruh pelabuhan untuk melindungi privasi dan meningkatkan keamanan.

Setop
sumber
ingatlah untuk memperbaiki pertanyaan. lihat apakah orang lain mungkin dapat membantu. Saya suka pointer Anda ke subuser. itu menarik
zabumba
subusermungkin "Qubes OS lite" yang saya cari! Terima kasih!
Dave
1

Saya tidak punya Mac untuk bereksperimen, tetapi berikut beberapa saran umum:

X11 biasanya dilindungi dengan file kunci yang hanya dapat dibaca oleh pengguna yang memiliki tampilan, sehingga menggunakan izin filesystem untuk menyatakan bahwa hanya program lain yang dapat membaca file yang dapat terhubung. Klien membaca file itu dan kemudian mengulangi isinya ke server melalui soket. Jadi, saya pikir Anda berada di jalur yang benar

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

Selanjutnya, Anda menunjukkan pengaturan penerusan SSH X11 tetapi tidak ada indikasi bahwa Anda ssh ke wadah buruh pelabuhan. Penerusan SSH biasanya digunakan oleh:

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

Untuk melakukan ini, Anda harus menjalankan server SSH di dalam wadah buruh pelabuhan, yang merupakan sedikit usaha ...

Selanjutnya, Anda menunjukkan sesuatu DISPLAY=/path/to/socketyang belum pernah saya gunakan sebelumnya. Jika ini adalah penemuan MacOS, maka Ubuntu mungkin tidak memahami format itu.

Terakhir, Anda dapat melihat apa yang sebenarnya coba dilakukan krom menggunakan perintah 'strace' dari dalam wadah buruh pelabuhan.

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

Itu mungkin membantu Anda mempersempit operasi tertentu yang gagal tepat sebelum menyerah.

M Conrad
sumber
Aku akan memberimu hadiah karena petunjuk yang bagus, tapi aku belum menyelesaikan masalah. Saya akan membuat hadiah lain untuk melihat apakah orang lain bisa membantu. Akhirnya berikan dengan Dockerfile. thx
zabumba