أنا تشغيل كروميدريفر + كروم داخل عامل الميناء في بيئة الاختبار بلدي.
كل شيء كان يعمل بشكل جيد حتى أحدث ترقية كوريوس.
هذه هي الإصدارات التي يبدو أنها تعمل:
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.س إلى 1.12.س ، الذي كسر setns()
استدعاء داخل الحاوية. setns()
يستخدم من قبل كروم لإنشاء مساحات الأسماء.
هذا هو مثال المخرجات:
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()
داخل الحاوية دون المساس بالأمن?