ভিতরে ডকার থেকে ডকার চালানো ঠিক আছে কি?


184

আমি একটি ডকারের ধারকের ভিতরে জেনকিন্স চালাচ্ছি। আমি ভাবছি জেনকিন্স কনটেইনারটিও ডকার হোস্ট হওয়ার পক্ষে ঠিক আছে কিনা? আমি যা ভাবছি তা হ'ল জেনকিন্সের অভ্যন্তরে (প্রতিটি ডাটাবেস, বার্তা ব্রোকার ইত্যাদির জন্য) প্রতিটি ইন্টিগ্রেশন টেস্ট বিল্ডের জন্য একটি নতুন ডকার ধারক শুরু করা। ইন্টিগ্রেশন পরীক্ষা শেষ হওয়ার পরে পাত্রে এইভাবে শাটডাউন করা উচিত। এইভাবে অন্য ডকারের ধারকটির ভিতরে থেকে ডকারের পাত্রে চালনা এড়ানোর কোনও কারণ আছে?


11
আর একটি সম্ভাবনা হ'ল হোস্ট থেকে পাত্রে ভলিউম হিসাবে ডকার সকেট মাউন্ট করা। এটি আপনাকে "ভাইবোন" পাত্রে তৈরি করতে দেয় এবং ক্যাশে পুনরায় ব্যবহার করতে সক্ষম হওয়ার সুবিধা রয়েছে।
অ্যাড্রিয়ান মৌআত

4
আমি খুঁজে পেয়েছি যে হোস্টের কাছ থেকে ডকার সকেট ব্যবহার করার সময় যে ক্ষেত্রে আমি বাহ্যিক ভলিউম মাউন্ট করতে চাই সেখানে হোস্টের সাথে সম্পর্কিত ভলিউম পাথ সেট করা আবশ্যক যেখানে ডকার ডিমন চালিত হয়। কনটেইনারটি যে পাত্রে শুরু হয় সেটির সাথে এটি নির্ধারণ করা প্রয়োজনীয়ভাবে কাজ করবে না যতক্ষণ না পথগুলি মিলে যায়।
জাকব রঞ্জ

উত্তর:


224

ডকারের ভিতরে ডকার চালানো (ওরফে ডাইন্ড ), সম্ভব হলে, যদি সম্ভব হয় তবে এড়ানো উচিত। (নীচে উত্স সরবরাহ করা হয়েছে)) পরিবর্তে, আপনি আপনার মূল পাত্রে ভাইবোন পাত্রে উত্পাদন এবং যোগাযোগের জন্য একটি উপায় সেট আপ করতে চান ।

জেরুম পেটাজনি - এমন বৈশিষ্ট্যটির লেখক যা ডকারকে একটি ডকারের ধারক ভিতরে চালানো সম্ভব করেছিল - বাস্তবে এটি না করার জন্য একটি ব্লগ পোস্ট লিখেছিল । তিনি যে ব্যবহারের ক্ষেত্রে বর্ণনা করেছেন সেটি সিআই ডকারের ধারকটির ওপির সঠিক ব্যবহারের সাথে মেলে যা অন্য ডকারের ধারকগুলির মধ্যে কাজ চালানো দরকার।

পেটাজনি দুটি কারণের কারণ দেখায় যে ডাইন্ড ঝামেলাজনক:

  1. এটি লিনাক্স সুরক্ষা মডিউলগুলির (এলএসএম) ভালভাবে সহযোগিতা করে না।
  2. এটি ফাইল সিস্টেমে একটি অমিল তৈরি করে যা পিতামাতার পাত্রে অন্তর্ভুক্ত ধারকগুলির জন্য সমস্যা তৈরি করে।

সেই ব্লগ পোস্ট থেকে তিনি নিম্নলিখিত বিকল্পগুলি বর্ণনা করেছেন,

[সহজ] সহজ উপায় হ'ল ডকার সকেটটিকে কেবলমাত্র আপনার সিআই কনটেইনারে -vপতাকার সাথে বেঁধে রেখে উন্মুক্ত করা ।

সহজ কথায়, আপনি যখন ডক-ইন-ডকারের সাথে একসাথে কিছু হ্যাক করার পরিবর্তে আপনার সিআই কন্টেইনার (জেনকিনস বা অন্য) শুরু করেন, তখন এটি দিয়ে শুরু করুন:

docker run -v /var/run/docker.sock:/var/run/docker.sock ...

এখন এই ধারকটির ডকার সকেটে অ্যাক্সেস থাকবে এবং তাই পাত্রে শুরু করতে সক্ষম হবে। "শিশু" পাত্রে শুরু করার পরিবর্তে এটি "ভাইবোন" পাত্রে শুরু করবে।


1
sudoএইভাবে না করার পরে ডকার কমান্ডগুলি কীভাবে চালানো যায় ? ধন্যবাদ
c4k

3
আপনি ব্যবহারকারী যোগ করতে হবে dockerগ্রুপ: sudo usermod -aG docker $USER। এর পরে আপনাকে পুনরায় ব্লগ করতে হবে।
predmijat 9

2
কোন মুদ্রার মধ্যে থেকে ব্লগ কিভাবে?
thiagowfx

1
@ আলেকজান্ডারমিলস এটি একই কারণ /var/run/docker.sockআপনার ম্যাকস মেশিনে ম্যাকের জন্য ডকার চালানোর সময় আপনার ডকার সকেটটিও অবস্থিত ।
ব্রুস সান

1
জানালা সম্পর্কে কি? আমার নেই/var/run/docker.sock
আবদুলহফিদ

54

আমি ডকারের ভিতরে কীভাবে ডকারের ধারক চালাতে পারি তার আগে আমি একই প্রশ্নের উত্তর দিয়েছি ।

ডকারের ভিতরে ডকার চালানো অবশ্যই সম্ভব। প্রধান জিনিসটি হ'ল আপনি অতিরিক্ত সুবিধাসহ runবাইরের ধারক (শুরু করে ) এবং তারপরে সেই ধারকটিতে ডকার ইনস্টল করুন।--privileged=true

আরও তথ্যের জন্য এই ব্লগ পোস্টটি দেখুন: ডকার-ইন-ডকার

এর জন্য একটি সম্ভাব্য ব্যবহারের কেস এই এন্ট্রিটিতে বর্ণিত হয়েছে । জেনকিনস ডকারের ধারক মধ্যে কীভাবে ডকার পাত্রে তৈরি করা যায় তা ব্লগ বর্ণনা করে।

যাইহোক, ডকারের ভিতরে ডকার এটি এই ধরণের সমস্যাগুলি সমাধান করার জন্য প্রস্তাবিত পদ্ধতি নয়। পরিবর্তে, প্রস্তাবিত পদ্ধতির এই পোস্টে বর্ণিত হিসাবে "ভাইবোন" পাত্রে তৈরি করা হয়

সুতরাং, ডকারের ভিতরে ডকার চালানো অনেকেই এই ধরণের সমস্যার জন্য ভাল ধরণের সমাধান হিসাবে বিবেচনা করেছিলেন। এখন, প্রবণতাটি এর পরিবর্তে "ভাইবোন" পাত্রে ব্যবহার করার রয়েছে। আরও তথ্যের জন্য এই পৃষ্ঠায় @predmijat এর উত্তর দেখুন ।


ডকারে ডকার এড়ানো সম্পর্কে নীচের মন্তব্যটি দেখুন।
ড্যান পোলতাউস্কি

6

ডকার-ইন-ডকার (ডিনডি) চালানো ঠিক আছে এবং প্রকৃতপক্ষে ডকারের (সংস্থা) এর জন্য এটির একটি অফিসিয়াল ডিন্ড চিত্র রয়েছে

সতর্কবাণীটি হ'ল এটির জন্য একটি সুবিধাযুক্ত ধারক প্রয়োজন, যা আপনার সুরক্ষা প্রয়োজনের উপর নির্ভর করে একটি কার্যকর বিকল্প হতে পারে না।

ভাইবোন কনটেইনার ব্যবহার করে ডকার চালানোর বিকল্প সমাধান (ওরফে ডকার-আউট-অফ-ডকার বা ডুডি) কোনও বিশেষায়িত ধারক প্রয়োজন হয় না, তবে কয়েকটি ঘাটতি রয়েছে যা আপনি কনটেইনারটি একটি প্রসঙ্গের মধ্য থেকেই চালু করছেন তা থেকে উদ্ভূত হয় is এটি যেভাবে চলছে তার থেকে আলাদা (যেমন, আপনি ধারকটির মধ্যে থেকে ধারকটি চালু করুন, তবু এটি হোস্টের স্তরে চলছে, ধারকটির ভিতরে নয়)।

আমি একটি ব্লগ বনাম DooD DinD অনুকূল / কনস বর্ণনা লিখেছিলেন এখানে

এটি বলার পরে, নেস্টিবক্স (একটি সূচনা আমি সবেমাত্র প্রতিষ্ঠিত করেছি) এমন একটি সমাধানে কাজ করছে যা সত্যিকারের ডকার-ইন-ডকারকে নিরাপদে চালিত করে (সুবিধাযুক্ত পাত্রে ব্যবহার না করে)। আপনি এটি www.nestybox.com এ দেখতে পারেন ।


0

হ্যাঁ, আমরা ডকারে ডকার চালাতে পারি, আমাদের ইউনিক্স সকেট "/var/run/docker.sock" সংযুক্ত করতে হবে যার উপরে ডকার ডিমন "-v / var / রান ব্যবহার করে পিতা-মাতা ডকারের কাছে ভলিউম হিসাবে ডিফল্টরূপে শোনেন /docker.sock:/var/run/docker.sock "। কখনও কখনও, ডকার ডেমন সকেটের জন্য অনুমতি সংক্রান্ত সমস্যা দেখা দিতে পারে যার জন্য আপনি "sudo chmod 757 /var/run/docker.sock" লিখতে পারেন।

এবং এটি সুবিধাবদ্ধ মোডে ডকার চালানো প্রয়োজন, সুতরাং আদেশগুলি হবে:

sudo chmod 757 /var/run/docker.sock

ডকার রান --privileged = সত্য-ভি /var/run/docker.sock:/var/run/docker.sock -it ...

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