डॉकटर कंटेनर से क्रोमियम कैसे चलाएं


9

वातावरण

  • MacOS सिएरा 10.12.6
  • डॉकर संस्करण 17.09.0-सीइ, afdb6d4 का निर्माण करें
  • उबंटू 16.04
  • XQuartz 2.7.9

मैं अपने मैक डेस्कटॉप पर डॉकटर कंटेनर से क्रोमियम ब्राउज़र खोलना चाहता हूं।

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कंटेनर फेल से क्रोमियम ब्राउजर चलाना

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

क्रोमियम दिखाई नहीं देता है

अद्यतन 20171011

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

क्रोमियम 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

मेरे मैक पर संपादन किया sshd_config

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

मेरे मैक पर 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 के साथ कहीं भी मिला?
डेमियन पॉवेल

जवाबों:


2

अपनी जरूरत मुझे याद दिलाता है subuser । गोपनीयता की सुरक्षा और सुरक्षा बढ़ाने के लिए डॉकटर कंटेनर में एंड-यूज़र एप्लिकेशन को चलाने के लिए इसे डिज़ाइन किया गया है।


सवाल को याद रखना। देखें कि क्या कोई और मदद करने में सक्षम हो सकता है। मुझे आपके सूचक को वश में करना पसंद है यह दिलचस्प है
zabumba

subuser"क्यूब्स ओएस लाइट" हो सकता है जिसे मैं ढूंढ रहा हूं! धन्यवाद!
डेव

1

मेरे पास प्रयोग करने के लिए Mac नहीं है, लेकिन यहाँ कुछ सामान्य सुझाव हैं:

X11 को आमतौर पर एक महत्वपूर्ण फ़ाइल के साथ संरक्षित किया जाता है जिसे केवल उस उपयोगकर्ता द्वारा पढ़ा जा सकता है जो डिस्प्ले का मालिक है, इस प्रकार फाइलसिस्टम अनुमतियों का उपयोग करके यह सुनिश्चित करने के लिए कि केवल अन्य प्रोग्राम जो उस फ़ाइल को पढ़ सकते हैं, कनेक्ट करने में सक्षम हैं। क्लाइंट उस फ़ाइल को पढ़ते हैं और फिर सॉकेट के माध्यम से सर्वर तक उसकी सामग्री को दोहराते हैं। इसलिए, मुझे लगता है कि आप सही रास्ते पर थे

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

इसके बाद, आप SSH X11 अग्रेषण सेटिंग्स दिखाते हैं लेकिन कोई संकेत नहीं है कि आप docker कंटेनर में ssh। SSH अग्रेषण का उपयोग सामान्य रूप से किया जाता है:

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

ऐसा करने के लिए आपको डॉकटर कंटेनर के अंदर एक एसएसएच सर्वर चलाने की आवश्यकता होगी, जो थोड़ा प्रयास है ...

अगला, आप दिखाते हैं DISPLAY=/path/to/socketजो मैंने पहले इस्तेमाल नहीं किया है। यदि यह एक MacOS आविष्कार है, तो डॉक्यूमेंटेड उबंटू उस प्रारूप को नहीं समझ सकता है।

अंत में, आप देख सकते हैं कि क्रोम वास्तव में डॉक कंटेनर के अंदर से 'स्ट्रेस' कमांड का उपयोग करने का प्रयास कर रहा है।

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

इससे आपको यह पता लगाने में मदद मिल सकती है कि कौन सा विशिष्ट ऑपरेशन सही होने से पहले विफल हो जाता है।


मैं तुम्हें अच्छे संकेत के कारण इनाम दूंगा, लेकिन मैंने इस मुद्दे को हल नहीं किया है। मैं यह देखने के लिए एक और इनाम बनाऊंगा कि क्या कोई और मदद कर सकता है। आखिरकार एक डॉकरफाइल के साथ प्रदान करें। thx
zabumba
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.