डॉकर के तहत क्रोम: कैप_सिस_एडमिन बनाम विशेषाधिकार प्राप्त?

मैं अपने परीक्षण वातावरण में डॉकर के अंदर क्रोमड्राइवर + क्रोम चला रहा हूं ।

नवीनतम कोरओएस अपग्रेड तक सब कुछ ठीक काम कर रहा था ।

ये ऐसे संस्करण हैं जो काम करने लगते हैं:

VERSION=1185.5.0VERSION_ID=1185.5.0BUILD_ID=2016-12-07-0937

और यह एक नया संस्करण है जो क्रोम को कोरडम्प का कारण बनता है:

VERSION=1235.4.0VERSION_ID=1235.4.0BUILD_ID=2017-01-04-0450

परिवर्तनों को देखते हुए, ऐसा लगता है कि डॉकर को 1.11 से अपग्रेड किया गया था । x करने के लिए 1.12.x तोड़ दिया, जो setns() कंटेनर के अंदर कॉल करें । setns() नामस्थान बनाने के लिए क्रोम द्वारा उपयोग किया जाता है ।

इस उदाहरण outputs:

jsosic-coreos-test-20161207 ~ # docker --versionDocker version 1.11.2, build bac3bae

इस बॉक्स पर एक कंटेनर के अंदर से:

[root@2939f21ecfaa /]# /opt/google/chrome/google-chrome[57:57:0107/015130:ERROR:browser_main_loop.cc(261)] Gtk: cannot open display:

इस तरह नए संस्करण ने इसे तोड़ दिया:

jsosic-coreos-test-2017-01-04 ~ # docker --versionDocker version 1.12.3, build 34a2ead[root@13ab34c36c82 /]# /opt/google/chrome/chromeFailed to move to new namespace: PID namespaces supported,  Network namespace supported,  but failed: errno = Operation not permittedAborted (core dumped)

मुझे जो पता चला है वह यह है कि अगर मैं कंटेनर को या तो शुरू करता हूं --cap-add=SYS_ADMIN या --privileged - क्रोम उम्मीद के मुताबिक काम करता है ।

उन दो स्विच में क्या अंतर है? किन क्षमताओं द्वारा सक्षम हैं --privileged?

और, क्या मैं अनुमति दे सकता हूं setns() सुरक्षा से समझौता किए बिना कंटेनर के अंदर?

AFAICS, प्रलेखन सुझाव देता है उपयोग करने के बजाय कंटेनर के लिए आवश्यक क्षमताओं को प्रदान करना --privileged स्विच. विशेषाधिकार प्राप्त मोड में चल रहा है अनुदान लगता है कंटेनर सभी क्षमताओं (वास्तव में जो पहले यूआरएल में सूचीबद्ध हैं, बशर्ते कि दस्तावेज़ अद्यतित हों) ।

संक्षेप में, मैं कहूंगा कि --cap-add=SYS_ADMIN कंटेनर की तुलना में क्षमताओं का एक छोटा सबसेट अनुदान देता है --privileged स्विच. घटना डॉकर दस्तावेज़ीकरण (पहला यूआरएल) में उदाहरण केवल जोड़ना पसंद करते हैं SYS_ADMIN या NET_ADMIN क्षमता जहां जरूरत.

एक अंतर यह है कि-विशेषाधिकार प्राप्त माउंट /देव और /एसवाईएस आरडब्ल्यू के रूप में, जहां एसवाईएस_एडमिन उन्हें आरओ के रूप में माउंट करता है । इसका मतलब है कि एक विशेषाधिकार प्राप्त कंटेनर के पास सिस्टम पर उपकरणों तक पूर्ण पहुंच है । सिस_एडमिन आपको वह नहीं देता है ।

इसके लिए धन्यवाद । मैंने आपके बहुत सारे सामान का उपयोग करके एक मुद्दा बनाया: Allow setns() in container, or add flag to allow it specifically · Issue #496 · docker/for-linux · GitHub मुझे लगता है कि इसे ठीक करना चाहिए

मुझे लगभग 2 साल बहुत देर हो चुकी है, लेकिन यदि आप अभी भी रुचि रखते हैं तो उपरोक्त टिकट में एक बेहतर और सुरक्षित समाधान है ।

यदि मूल पोस्टर उत्तर को अपडेट नहीं करता है (वह एसओ पर बिल्कुल भी सक्रिय नहीं लगता है), तो मुझे बताएं कि क्या आप एक अलग स्वीकार करने के लिए उपलब्ध होंगे । मैंने इस पर घंटों बर्बाद किए, मैं केवल कल्पना कर सकता हूं कि हम अन्य लोगों को कितने घंटे बचाएंगे ।