ক্রোম ডকারের অধীনে: CAP_SYS_ADMIN বনাম সুবিধাভোগী? [বন্ধ]


11

আমি আমার পরীক্ষার পরিবেশে ডকারের ভিতরে ক্রোমড্রাইভার + ক্রোম চালাচ্ছি।

সর্বশেষ কোরিস আপগ্রেড হওয়া পর্যন্ত সবকিছু ঠিকঠাক কাজ করছিল।

এই সংস্করণগুলি যে কাজ করে বলে মনে হচ্ছে:

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

এবং এটি একটি নতুন সংস্করণ যা ক্রোমকে করপালায় পরিণত করে:

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

পরিবর্তনের দিকে তাকালে মনে হয় ডকারটি 1.11.x থেকে 1.12.x এ আপগ্রেড করা হয়েছিল, যা ধারকটির setns()ভিতরে কল ভেঙেছিল । setns()একটি নেমস্পেস তৈরি করার জন্য ক্রোম ব্যবহার করে।

এটি উদাহরণস্বরূপ:

jsosic-coreos-test-20161207 ~ # docker --version
Docker 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 --version
Docker version 1.12.3, build 34a2ead

[root@13ab34c36c82 /]# /opt/google/chrome/chrome
Failed to move to new namespace: PID namespaces supported,
  Network namespace supported,
  but failed: errno = Operation not permitted
Aborted (core dumped)

আমি যা জানতে পেরেছি তা হ'ল আমি যদি কন্টেনারটি দুটি দিয়ে শুরু করি --cap-add=SYS_ADMINবা --privileged- ক্রোম প্রত্যাশা অনুযায়ী কাজ করে।

এই দুটি সুইচের মধ্যে পার্থক্য কী? কি ক্ষমতা দ্বারা সক্ষম করা হয় --privileged?

এবং, আমি setns()সুরক্ষার সাথে কোনও আপস না করে পাত্রে ভিতরে প্রবেশ করতে পারি ?


এর জন্য ধন্যবাদ. আমি একটি বিষয় তৈরী আপনার কাপড় অনেকটা ব্যবহার করছে: github.com/docker/for-linux/issues/496 আমার মনে হয় এটা সংশোধন করা হয়েছে পেতে কর্তব্য
Merc

আমি প্রায় ২ বছর অনেক দেরী করে ফেলেছি, তবে আপনি এখনও আগ্রহী থাকলে উপরের টিকিটে আরও ভাল এবং নিরাপদ সমাধান রয়েছে।
Merc

যদি মূল পোস্টার উত্তরটি আপডেট না করে (তিনি এসও তে সক্রিয় বলে মনে করেন না), আপনি যদি অন্য কোনও গ্রহণ করার জন্য উপলব্ধ থাকতেন তবে আমাকে জানান। আমি এটির জন্য ঘন্টা নষ্ট করেছি, আমি কেবলমাত্র অন্যান্য ঘন্টাগুলিকে কত ঘন্টা বাঁচাবো তা কল্পনা করতে পারি।
Merc

উত্তর:


7

AFAICS, ডকুমেন্টেশনটিতে সুইচটি ব্যবহার না করে একটি ধারকটির জন্য প্রয়োজনীয় ক্ষমতাগুলি দেওয়ার পরামর্শ দেওয়া হয়েছে --privileged। সুবিধাপ্রাপ্ত মোডে চালনা করা কন্টেইনারটিকে সমস্ত ক্ষমতা দেয় বলে মনে হচ্ছে (ডকসগুলি আপ টু ডেট রয়েছে তবে শর্ত থাকে যেগুলি প্রথম URL- এ তালিকাভুক্ত রয়েছে)।

সংক্ষেপে, আমি বলব যে স্যুইচটির --cap-add=SYS_ADMINতুলনায় ধারকটিতে সামান্য ক্ষুদ্র ক্ষুদ্র ক্ষুদ্র ক্ষুদ্র ক্ষুদ্র ক্ষুদ্র ক্ষুদ্র পাতাগুলি সরবরাহ করে --privileged। ইভেন্ট ডকার ডকুমেন্টেশনের উদাহরণ (প্রথম ইউআরএল) মনে হয় যেখানে প্রয়োজন SYS_ADMINবা কেবল NET_ADMINসক্ষমতা যুক্ত করা পছন্দ করে ।


ধন্যবাদ, exec_linux.goসাহায্য। আমি এটির মাধ্যমে গ্রেফতারের জন্য ডকার রেপোকে ক্লোনিং করার চেষ্টা করেছি কিন্তু যেহেতু এটি আমাকে কয়েক ঘন্টা সময় নিয়েছে আমি কেবল এটি সম্পর্কে ভুলে গিয়েছিলাম :)
জাকভ সোসিক

কেবল ক্রোম চালানোর জন্য এখানে আরও উন্নততর সমাধান রয়েছে: github.com/docker/for-linux/issues/496#issuecomment-441149510 আমার মনে হয় উত্তরটি আপডেট করা খুব উপকারী হবে যাতে লোকেরা যা বলে আমি তা ব্যাখ্যা করি যে খুব মন্তব্য। আপনি যদি রাজি হন তবে আমাকে জানান let
Merc

1

একটি পার্থক্য হ'ল - বেসরকারী মাউন্টগুলি / দেব এবং / আরএসডাব্লু হিসাবে sys, যেখানে SYS_ADMIN হিসাবে তাদেরকে আরও হিসাবে স্থাপন করে। এর অর্থ হ'ল কোনও সুবিধাভোগী ধারকটির সিস্টেমে ডিভাইসগুলিতে সম্পূর্ণ অ্যাক্সেস রয়েছে। SYS_ADMIN আপনাকে তা দেয় না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.