কোনও ডেব প্যাকেজটি ব্যবহার করার কোনও ত্রুটি রয়েছে যেমন এটি কোনও অ্যাপ্লিকেশন মোতায়েনের ধারক?


15

আমার দল বর্তমানে সিদ্ধান্ত নেওয়ার চেষ্টা করছে যে আমাদের নোডেজ অ্যাপ্লিকেশনটিকে ডোকারের মতো কোনও ধারক স্থানে চালানোর পরিবর্তে দেব প্যাকেজ হিসাবে স্থাপন করা উচিত কিনা।

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

দেখে মনে হচ্ছে "মূল পাত্রে যেমন ডিপ-প্যাকেজগুলি" ছোট পরিষেবাগুলির যেখানে অনেকগুলি বন্দর বিরোধের উদ্বেগ নেই এবং যেখানে সমস্ত ভারসাম্যতা ভার্চুয়াল পরিবেশের মধ্যে বজায় রয়েছে তার জন্য প্রচুর অর্থবোধ করে।

তবে আমার অন্ত্রে আমাকে বলে দিচ্ছে যে যদি ডেব প্যাকেজগুলি ভাল ফিট হত তবে এটি আরও সাধারণ হবে এবং ডকার আরও বেশি ভাষা নির্দিষ্ট সমাধান হিসাবে বিজ্ঞাপন দেওয়া হবে। ডকারের মতো একটি সম্পূর্ণ সিস্টেম ব্যবহার না করে আমাদের পরিষেবা মোতায়েন করার জন্য ডিবে প্যাকেজগুলির মতো কিছু ব্যবহার করার কোনও ত্রুটি রয়েছে কি?


1
এগুলি পারস্পরিক একচেটিয়া নয়, আপনি কোনও ডকার পাত্রে আপনার ডেব প্যাকেজ স্থাপন করতে পারেন। সম্ভবত আপনি মাইক্রোসার্ভেসেস বনাম ভার্চুয়াল মেশিন সম্পর্কে জিজ্ঞাসা করা উচিত?
ক্রিস

হুম, এটি কোনও বিশেষভাবে ডকার পাত্রে পরিবর্তে কোনও ডেব-প্যাকেজ ব্যবহার করার বিষয়ে নয়। আমি প্রশ্নে ব্লগ থেকে আরও তথ্য যুক্ত করব।
এভিআই

3
"আমরা অনুভব করেছি যে কার্নেলটিকে কেবল শিপ কোডে দ্রুত আপগ্রেড করা একটি ওভারকিল সমাধান k" এটি আমার কাছে কেবল ভুল মনে হচ্ছে। দ্রুত শিপিং কোডের চেয়ে গুরুত্বপূর্ণ আর কী হতে পারে?
আসফ লাভি

উত্তর:


16

প্রথমত, যখন ডকারকে কখনও কখনও অ্যাডহক প্যাকেজিং সিস্টেম হিসাবে দেখা হয় এবং ব্যবহৃত হয় , এটি আসলে একটি সম্পূর্ণ আলাদা সমস্যা সমাধান করে: ডকার প্রোগ্রাম চালানোর বিষয়ে । Docker সিস্টেম বর্ণনা করতে পারবেন সেবা, যে হতে পারে ছোটো ইচ্ছা এবং নিয়ন্ত্রণ করার জন্য ঝাঁকে ঝাঁকে পাত্রে। ডেবিয়ান প্যাকেজগুলি প্রোগ্রাম ইনস্টল করার জন্য এবং তারা সফ্টওয়্যার সংস্করণগুলির মধ্যে নির্ভরতা পরিচালনা করতে সক্ষম হয় । ডকশ্রমিক অবশ্যই একটি বংশোদ্ভূত প্যাকেজিং সিস্টেম হিসাবে যোগ্যতা অর্জন করবেন না: প্রতিটি "প্যাকেজ" কেবলমাত্র একটি নির্ভরতা থাকতে পারে, সিস্টেমটির কোনও "রিকার্সিভ বিল্ড" বিকল্প নেই এবং জটিল সংস্করণের সীমাবদ্ধতাগুলি সমর্থন করে না!

একটি সম্ভাব্য উত্তরটি হ'ল, যদি আপনি আপনার অ্যাপ্লিকেশনটির জন্য কোনও ডেবিয়ান প্যাকেজ লিখতে রাজি হন তবে আপনি এটিও ব্যবহার করতে পারেন নিজের অ্যাপ্লিকেশন মোতায়েন ডকারও । এটি একটি কনফিগারেশন স্ক্রিপ্ট অর্জন করা যেতে পারে apt_setup.shযা মত দেখাবে

apt-key add - <<EOF
-----BEGIN PGP PUBLIC KEY BLOCK-----
<YOUR RELEASE OFFICER PGP KEY GOES HERE>
EOF

cat >> /etc/apt/sources.list <<EOF
deb https://my.organisation.org/repo debian-jessie main
apt-get update -y
apt-get upgrade -y
EOF

এবং ক Dockerfile লাইন বরাবর

ADD apt_setup.sh /root
RUN sh -ex /root/apt_setup.sh && rm /root/apt_setup.sh
RUN apt-get install -y my-node-js-package

(আপনার নির্দিষ্ট পরিস্থিতিতে, এটি apt_setup.shআরও জটিল হবে, যুক্ত করে নোডোসোর্স রিপোজিটরি এবং কিছু সহায়ক প্যাকেজ যেমন অ্যাপট -ট্রান্সপোর্ট-https ))

সুতরাং ডেবিয়ান প্যাকেজগুলি ব্যবহার করা সত্যিই সম্ভব একসাথে এবং ডকার ... তবে

আমার অন্ত্র […] আমাকে বলছে যে যদি ডেব প্যাকেজগুলি ভাল ফিট হত তবে এটি আরও সাধারণ হবে

এটি একটি সঠিক বাধা যা আমাদের নিজেদের জিজ্ঞাসা করতে পরিচালিত করে যে ডকার কেন অ্যাডহক প্যাকেজিং সিস্টেম হিসাবে জনপ্রিয় হিসাবে প্রমাণিত হয়েছে , যদিও এটির উদ্দেশ্য হ'ল না। (উপরে দেখুন.)

প্রদত্ত বিতরণ থেকে "অফিসিয়াল" প্যাকেজিং সিস্টেমটি অন্য অনেকের মধ্যে কিছু কম্পিউটারের পরিবেশে সফ্টওয়্যার ইনস্টল করার কেবল একটি সম্ভাবনা। অনেক অন্যান্য উত্স পাওয়া যায়, যেমন সম্প্রদায়-নির্দিষ্ট প্যাকেজ ম্যানেজার মত npm বা opam, মত বন্দর গাছ pkgsrc এবং প্লেইন সোর্স কোড বন্টন। এই দৃষ্টিকোণ থেকে, অ্যাডহক প্যাকেজিং সিস্টেম হিসাবে ডকারের সাফল্য বোঝা সহজ :

  • ডকশ্রমিক স্পেসিফিকেশনগুলি শেল স্ক্রিপ্ট থেকে খুব কাছাকাছি থাকে এবং এটি যে কোনও উত্স থেকে আসে, আমরা শেলটি ব্যবহার করে সফ্টওয়্যার ইনস্টল করি।

  • ডক-শ্রমিক রয়েছে শিল্পকর্ম এটা উৎপন্ন করে হোস্টিং এর জন্য "বিল্ট-ইন" (পরিশোধ) পরিষেবা ডকশ্রমিক হাব

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

উপসংহার

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


6

হ্যাঁ, ত্রুটি আছে।

একটি .deb প্যাকেজ সহ আপনি একই হোস্টে একই অ্যাপ্লিকেশনটির দুটি সংস্করণ রাখতে পারবেন না। আপনাকে বিতরণ উপলভ্য প্যাকেজগুলির উপর নির্ভর করতে হবে, যদি আপনার অ্যাপ উদাহরণস্বরূপ নোডেজগুলিতে নির্ভর করে তবে হয় আপনি বিতরণ সংস্করণটির সাথে আটকে থাকবেন বা আপনাকে নিজের ইনস্টল করতে হবে।

এখন যখন আপনি একই হোস্টে একাধিক অ্যাপ্লিকেশনগুলি হোস্ট করতে চান, তখন তারা খুব দ্রুত কোনও প্রাচীর আঘাত করবে যখন তারা একই জিনিসটির উপর নির্ভর করবে (আসুন এখানে নোডেজ রাখি) দুটি ভিন্ন সংস্করণে।

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


আহ, কেউই বিতরণের রুবি, নোড, পাইথন ইত্যাদি ব্যবহার করার পরামর্শ দেয় না You আপনি সেগুলির প্যাকেজও তৈরি করেন এবং সেগুলি / অপ্টে রেখে দেন। আপনার প্যাকেজগুলি এগুলির উপর নির্ভর করবে। আপনার অ্যাপ্লিকেশনটির একাধিক সংস্করণ আপনি ডাব প্যাকেজগুলির সাথে ইনস্টল করতে পারেন, ডিবিয়ান নিজেই এর অনেকগুলি উদাহরণ রয়েছে। আসলে এটি একাধিক সংস্করণ পরিচালনা করার সেরা উপায়। এই উত্তর সম্পূর্ণ ভুল।
ডাব্লাট্র্যাপ

1
@ ফিগ্রট্র্যাপ ঠিক আছে অফিসিয়াল ইলাস্টিক.কম রেপো ব্যবহার করার চেষ্টা করুন এবং একই সাথে ইলাস্টিক্স সার্চ বনাম 2.3 এবং ভি। 5.6 ইনস্টল করুন। আপনি যা বর্ণনা করছেন তা হ'ল দুটি সঠিক প্যাকেজ ইনস্টল করা এবং আপনি যদি সঠিক .deb প্যাকেজগুলি করেন তবে ভারী টুইটগুলি। স্ট্যাকের গভীরতায় কোথাও গভীরভাবে libc এর দুটি ভিন্ন সংস্করণ প্রয়োজন হলে এটি নির্মাণের নির্ভরতা এবং রক্ষণাবেক্ষণের ক্ষেত্রে একটি দুঃস্বপ্ন।
তেনসইবাই

5

অ্যাপ্লিকেশনগুলি ইনস্টল করার জন্য একটি ডেবিয়ান (বা রেডহ্যাট) প্যাকেজটি সঠিকভাবে করা গেলে একটি ভাল অনুশীলন ছিল been প্যাকেজগুলি অ্যাপ্লিকেশন মোতায়েনের উদ্দেশ্যে ব্যবহৃত হয় যা প্রায়শই পরিবর্তিত হয়। ডেবিয়ান প্যাকেজগুলিতে কিছু ওভারহেড জড়িত থাকে যেমন সংস্করণ পরিচালনা, নির্ভরতা পরিচালনা, প্রাক-ইনস্টল পূর্ববর্তী স্ক্রিপ্টগুলি ইত্যাদি ...

অনেক ক্ষেত্রে কিছু পুরানো সংস্করণ থেকে নতুন সংস্করণে আপগ্রেড করার জন্য স্ক্রিপ্টগুলির যত্ন সহকারে লেখার প্রয়োজন, সংস্করণে বিশদ বিবরণে মনোযোগ ইত্যাদি etc. কারণ বিদ্যমান অবস্থায় পরিবর্তন করা শক্ত। কোনও কিছুই পরিবর্তন না করে বর্তমান রাষ্ট্রকে পুরোপুরি নতুন রাষ্ট্রের সাথে প্রতিস্থাপন করা আরও সহজ হবে।

একবার আপনি প্রতিটি স্থাপনায় আপনার কনফিগারেশন বা নির্ভরতা বা অ্যাপ্লিকেশনটিকে পুরোপুরি প্রতিস্থাপন করার সিদ্ধান্ত নেন কারণ এটি সহজ এবং কম ত্রুটির প্রবণ। বেশিরভাগ সংস্থা সম্পূর্ণ নতুন ভিএম বা ক্লাউড উদাহরণে স্যুইচ করে (অভ্যস্ত) used যার অর্থ প্যাকেজটি ইনস্টল করা একটি "ক্লিন" সার্ভারে করা হবে, এবং সার্ভারে ফাইলগুলি এবং কনফিগারেশনকে রূপান্তর করা এখন আর কোনও সমস্যা নয়।

এই বিকাশকারীরা যারা প্যাকেজ তৈরি করেছিলেন এবং মিউটেশনে ভ্রান্ততা এবং জটিলতা বুঝতে পারেন নি ফলস্বরূপ বেশ অসুবিধার মুখোমুখি হয়েছিল।

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

ধারকরা সমস্ত অ্যাপ্লিকেশন কোড, এবং নির্ভরতা এবং কনফিগারেশন কোনও চিত্রে বান্ডিল করার একটি উপায় প্রবর্তন করে। এই চিত্রটিতে একাধিক বৈশিষ্ট্য রয়েছে যা এটি traditionalতিহ্যবাহী অপারেটিং সিস্টেম প্যাকেজগুলির চেয়ে অনেক ভাল করে তোলে। উদাহরণস্বরূপ, এটিতে এমন ট্যাগ রয়েছে যা সংস্করণ সক্ষম করে, তবে এটিতে স্তরও রয়েছে যা স্পেসে সংরক্ষণ করতে সক্ষম করে। এটি একটি রেজিস্ট্রি ব্যবহার করে সার্ভারগুলিতে এবং বিকাশের পরিবেশগুলিতে এই চিত্রগুলি পাঠানোর সহজ উপায়টিকে মঞ্জুরি দেয়। এবং এই চিত্রগুলি কোনও পরিবেশ এবং যে কোনও সার্ভারে প্রায় একইভাবে ধারক হিসাবে চালানো যেতে পারে। এর মধ্যে বিকাশকারীর ল্যাপটপের পাশাপাশি উত্পাদন পরিবেশ অন্তর্ভুক্ত রয়েছে। আবার, ভিএমএস এবং / অথবা সফ্টওয়্যারটির প্যাকেজ-ভিত্তিক সংস্করণগুলির সাথে আরও কিছু করা কঠিন। বিকাশকারীর ল্যাপটপে একই চিত্র পরীক্ষা করা, এবং একই বিট এবং বাইট উত্পাদনে থাকা অনেকগুলি সরিয়ে দেয় "


এখনও অবধি আমি এটি "আমার মেশিনে কাজ করে" এর পরিবর্তে "আমার মেশিনে কাজ করে", তবে ডকারে উদ্ভট আচরণ করে "finding
ম্যাট মরন

1

ডকারের চিত্র প্যাকেজিং টুকরো সম্পর্কে বিশেষভাবে কথা বলছি, কন্টেইনার রানটাইমটিতে কিছু ছোটখাটো বিট নেই। সবচেয়ে বড়টি হ'ল একটি ডকার চিত্রটি ক্রুটের মতো, যার অর্থ আপনি ভাগ করে নেওয়া সিস্টেম স্টেটের উপর নির্ভর করে দুর্ঘটনাক্রমে বাধা পেয়েছেন যেহেতু কোনও সিস্টেম প্যাকেজ আপনার গতিশীল লিঙ্কগুলি বেছে নিতে পারে না এমন সময় ব্যবহারের প্রতিটি ফাইল অবশ্যই চিত্রটিতে অন্তর্ভুক্ত থাকতে হবে আশা করুন বা অন্যথায় অন্যান্য প্যাকেজগুলির সাথে আরও জড়িত হন। এটি জটিল সি নির্ভরতা আপনার অজান্তেই লোড হওয়ার সাথে সামনে আসে, উদাহরণস্বরূপ ওপেনএসএসএল। অতিরিক্তভাবে ডেবি প্যাকেজগুলি ব্যবহার করে ডকারের স্টোরেজ সিস্টেমটি বলে না এমন ভাগ করা বিটগুলি ডি-সদৃশ করবেন না। কারও কারও পক্ষে এটি ভাল জিনিস হতে পারে I / O পারফরম্যান্স এবং কম চলন্ত টুকরো, তবে অন্যদের জন্য এটি সমস্যা হতে পারে।

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