Chromium docker konteynerinden nasıl çalıştırılır


9

çevre

  • MacOS Sierra 10.12.6
  • Docker sürüm 17.09.0-ce, yapı afdb6d4
  • Ubuntu 16.04
  • XQuartz 2.7.9

Bir docker kapsayıcısından Mac masaüstüme Chromium tarayıcısını açmak istiyorum.

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

işlemek

docker commit 2862a7bfcc2f  acme/mycontainer:0.1

myuserFAIL kapsayıcısında olduğu gibi krom tarayıcı çalışıyor

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

Eminim biraz daha fazlası var

İşaretçi var mı?

UDPATE - kullanma --privileged

Hatayı kaldırır Sunucu arızasındaki iş parçacığına bakın ancak kullanıcı arayüzü görünmüyor

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

ve bu

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 görünmüyor

GÜNCELLEME 20171011

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

Chromium başlatılıyor Gtk: cannot open display: [...] org.macosforge.xquartz:0 hatası

$ 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'imde düzenlendi sshd_config

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

Mac bilgisayarımda DISPLAY

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

Diskte

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
Bununla bir yere gittin mi, @ zabumba?
Damian Powell

Yanıtlar:


2

İhtiyacın bana alt kullanıcıyı hatırlatıyor . Gizliliği korumak ve güvenliği artırmak için son kullanıcı uygulamasını bir docker konteynerinde çalıştırmak üzere tasarlanmıştır.


soruyu onaylamayı unutmayın. başka birinin yardım edip edemeyeceğini görün. İşaretçinizi subuser'a sevdim. ilginç
zabumba

subuseraradığım "Qubes OS lite" olabilir! Teşekkürler!
Dave

1

Denemek için bir Macim yok, ancak bazı genel öneriler:

X11 genellikle yalnızca ekranın sahibi olan kullanıcı tarafından okunabilen bir anahtar dosyası ile korunur, böylece yalnızca bu dosyayı okuyabilen diğer programların bağlanabileceğini iddia etmek için dosya sistemi izinlerini kullanır. İstemciler bu dosyayı okur ve daha sonra içeriğini soket aracılığıyla sunucuya tekrarlar. Yani, bence doğru yoldasınız

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

Ardından, SSH X11 yönlendirme ayarlarını gösterir, ancak docker kapsayıcısına ssh yaptığınızı göstermez. SSH iletimi normalde aşağıdakiler tarafından kullanılır:

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

Bunu yapmak için docker konteynerinin içinde bir SSH sunucusu çalıştırmanız gerekir, bu da biraz çaba gerektirir ...

Sonra, DISPLAY=/path/to/socketdaha önce kullanmadığım bir şeyi gösterirsiniz . Bu bir MacOS buluşuysa, dockerized Ubuntu bu formatı anlamayabilir.

Son olarak, docker konteynerinin içindeki 'strace' komutunu kullanarak gerçekte hangi kromun yapmaya çalıştığını görebilirsiniz.

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

Bu, vazgeçmeden hemen önce hangi belirli işlemlerin başarısız olduğunu daraltmanıza yardımcı olabilir.


İyi işaretçiler nedeniyle sana lütuf vereceğim, ama sorunu çözmedim. Başkasının yardım edip edemeyeceğini görmek için başka bir ödül yaratacağım. Sonunda bir Dockerfile sağlayın. thx
zabumba
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.