ডকার চিত্র এবং একটি ধারক মধ্যে পার্থক্য কি?


921

ডকার ব্যবহার করার সময়, আমরা একটি বেস চিত্র দিয়ে শুরু করি। আমরা এটি বুট করি, পরিবর্তনগুলি তৈরি করি এবং সেই পরিবর্তনগুলি অন্য চিত্র তৈরির স্তরগুলিতে সংরক্ষণ করা হয়।

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

পাত্রে কী?

উত্তর:


1238

কোনও চিত্রের উদাহরণটিকে একটি ধারক বলা হয়। আপনার একটি চিত্র রয়েছে যা আপনি বর্ণনা করার সাথে সাথে লেয়ারগুলির একটি সেট। আপনি যদি এই চিত্রটি শুরু করেন, আপনার কাছে এই চিত্রের একটি চলমান ধারক রয়েছে। আপনার কাছে একই চিত্রের প্রচুর চলমান পাত্র থাকতে পারে।

আপনি আপনার সমস্ত চিত্র দেখতে পাচ্ছেন docker imagesযেখানে আপনি আপনার চলমান পাত্রে docker psএটি দেখতে পারেন (এবং আপনি সমস্ত পাত্রে এটি দেখতে পারেন docker ps -a)।

সুতরাং একটি চিত্রের চলমান উদাহরণটি একটি ধারক।


106
সুতরাং, একটি চিত্র এবং একটি থামানো ধারক মধ্যে পার্থক্য কি?
ভিক্টর ডম্ব্রভস্কি

341
চিত্রটি হ'ল রেসিপি, ধারকটি হ'ল কেক ;-) আপনি প্রদত্ত রেসিপি দিয়ে নিজের পছন্দ মতো কেক
জুলিয়েন

142
@ উইকটারডম্ব্রভস্কি একটি থামানো ধারক হ'ল ফ্রিজে থাকা একটি কেক।
জ্যাকব ফোর্ড

44
@ জুলিয়েন যদি চিত্রটির রেসিপি হয় তবে ডকফাইফিলের কী হবে? :)
জনি উইলার

71
@ জোনিওয়িলার অ্যানালগিসির সীমাবদ্ধতা রয়েছে তবে আমরা দেখতে পাচ্ছি ডকফেরফাইল উপাদানগুলির জন্য আপনার কেনাকাটা তালিকা ;-)। অন্যথায় ডকফাইফিলকে রেসিপি, চিত্রটির ছাঁচ, ধারকটি এখনও মুখরোচক কেক হিসাবে ডেকে বলুন
জুলিয়েন

585

অটোমেটিং ডকার মোতায়েন সম্পর্কিত আমার নিবন্ধ থেকে :

ডকার ইমেজ বনাম পাত্রে

ডকারল্যান্ডে ইমেজ রয়েছে এবং ধারক রয়েছে । দুটি ঘনিষ্ঠভাবে সম্পর্কিত, তবে স্বতন্ত্র। আমার জন্য, এই দ্বৈতত্ত্বকে উপলব্ধি করা ডকারকে অত্যন্ত স্পষ্ট করে জানিয়েছে।

একটি চিত্র কি?

একটি চিত্র একটি জড়, অপরিবর্তনীয়, ফাইল যা মূলত একটি ধারকটির একটি স্ন্যাপশট। চিত্রগুলি দিয়ে তৈরি করা হয় বিল্ড কমান্ড এবং রান দিয়ে শুরু করার সাথে সাথে তারা একটি ধারক তৈরি করবে । চিত্রগুলি একটি ডকার রেজিস্ট্রি যেমন রেজিস্ট্রি । Hub.docker.com এ সংরক্ষণ করা হয় । যেহেতু তারা বেশ বড় হয়ে উঠতে পারে, তাই চিত্রগুলি অন্যান্য চিত্রের স্তরগুলির সমন্বয়ে তৈরি করা হয়েছে, যাতে নেটওয়ার্কের মাধ্যমে চিত্র স্থানান্তর করার সময় ন্যূনতম পরিমাণে ডেটা প্রেরণ করা যায়।

স্থানীয় চিত্রগুলি চালিয়ে তালিকাভুক্ত করা যেতে পারে docker images:

REPOSITORY                TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu                    13.10               5e019ab7bf6d        2 months ago        180 MB
ubuntu                    14.04               99ec81b80c55        2 months ago        266 MB
ubuntu                    latest              99ec81b80c55        2 months ago        266 MB
ubuntu                    trusty              99ec81b80c55        2 months ago        266 MB
<none>                    <none>              4ab0d9120985        3 months ago        486.5 MB

কিছু বিষয় লক্ষণীয়:

  1. চিত্র আইডি একটি চিত্রের জন্য সত্য সনাক্তকারী প্রথম 12 টি অক্ষর। আপনি প্রদত্ত চিত্রের অনেকগুলি ট্যাগ তৈরি করতে পারেন, তবে তাদের আইডিগুলি সমস্ত একই (উপরের মত) হবে।
  2. ভার্চুয়াল সাইজ হয় ভার্চুয়াল কারণ এটি সব স্বতন্ত্র অন্তর্নিহিত স্তর মাপ আপ যোগ হচ্ছে। এর অর্থ এই যে কলামের সমস্ত মানের সংখ্যার এই চিত্রগুলির দ্বারা ব্যবহৃত ডিস্ক জায়গার চেয়ে সম্ভবত অনেক বড়।
  3. REPOSITORY কলামের মান কমান্ডের -tপতাকা docker buildথেকে বা docker tagবিদ্যমান চিত্র- থেকে আসে । আপনি নামটি ব্যবহার করে ইমেজগুলিতে ট্যাগ করতে নির্দ্বিধায় যা আপনার কাছে বোধগম্য, তবে জেনে থাকুন যে ডকার ট্যাগটিকে একটি docker pushবা রেজিস্ট্রি অবস্থান হিসাবে ব্যবহার করবেdocker pull
  4. একটি ট্যাগ সম্পূর্ণ ফর্ম হয় [REGISTRYHOST/][USERNAME/]NAME[:TAG]। জন্য ubuntuউপরে REGISTRYHOST হতে অনুমিত হয় registry.hub.docker.com। সুতরাং আপনি যদি my-applicationকোনও রেজিস্ট্রিতে ডেকে আপনার চিত্রটি সংরক্ষণ করার পরিকল্পনা করেন তবে আপনার docker.example.comসেই চিত্রটি ট্যাগ করা উচিতdocker.example.com/my-application
  5. TAG কলামটি কেবলমাত্র [: TAG] এর অংশ সম্পূর্ণ ট্যাগের । এটি দুর্ভাগ্যজনক পরিভাষা।
  6. দ্য latestট্যাগ, ঐন্দ্রজালিক নয় এটা শুধু ডিফল্ট ট্যাগ যখন আপনি একটি ট্যাগ নির্দিষ্ট না করে।
  7. আপনার আইটেম আইডির সাহায্যে অচিহ্নযুক্ত চিত্র থাকতে পারে। এগুলি <none>TAG এবং REPOSITORY পাবে। তাদের সম্পর্কে ভুলে যাওয়া সহজ।

চিত্রগুলির উপর আরও তথ্য ডকার ডকুমেন্টেশন এবং শব্দকোষ থেকে উপলব্ধ

একটি পাত্রে কি?

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

এর সাথে স্থানীয় চলমান পাত্রে দেখুন docker ps:

CONTAINER ID        IMAGE                               COMMAND                CREATED             STATUS              PORTS                    NAMES
f2ff1af05450        samalba/docker-registry:latest      /bin/sh -c 'exec doc   4 months ago        Up 12 weeks         0.0.0.0:5000->5000/tcp   docker-registry

এখানে আমি ডকার রেজিস্ট্রিটির একটি ডকারাইজড সংস্করণ চালাচ্ছি, যাতে আমার ছবিগুলি সংরক্ষণ করার জন্য আমার একটি ব্যক্তিগত জায়গা থাকে। আবার কিছু বিষয় লক্ষণীয়:

  1. চিত্র আইডির মতো, কনটেনার আইডি হ'ল ধারকটির সত্যিকারের শনাক্তকারী। এটির একই ফর্ম রয়েছে তবে এটি ভিন্ন ধরণের অবজেক্টকে চিহ্নিত করে।
  2. docker psকেবল চালিত পাত্রে আউটপুট । আপনি সমস্ত পাত্রে ( চলমান বা থামানো ) দেখতে পারেন docker ps -a
  3. --nameপতাকাগুলির মাধ্যমে একটি সূচিত ধারক সনাক্ত করতে NAMES ব্যবহার করা যেতে পারে ।

কীভাবে চিত্র এবং পাত্রে বিল্ডআপ এড়ানো যায়

ডকারের সাথে আমার প্রথম হতাশাগুলি ছিল অবিরত চিত্রগুলি এবং থামানো পাত্রে আপাতদৃষ্টিতে ধ্রুবক গঠন । কয়েক মুহুর্তে এই বিল্ডআপটি সর্বাধিক হার্ড ড্রাইভগুলির ফলে আমার ল্যাপটপটি ধীর করে দেয় বা আমার স্বয়ংক্রিয় বিল্ড পাইপলাইন বন্ধ করে দেয়। "সর্বত্র পাত্রে" সম্পর্কে কথা বলুন!

docker rmiসাম্প্রতিক dangling=trueক্যোয়ারির সাথে একত্রিত হয়ে আমরা সমস্ত অবরুদ্ধ চিত্রগুলি সরাতে পারি :

docker images -q --filter "dangling=true" | xargs docker rmi

ডকার বিদ্যমান পাত্রে থাকা চিত্রগুলির পিছনে থাকা চিত্রগুলি সরাতে সক্ষম হবে না, তাই আপনাকে docker rmপ্রথমে থেমে থাকা পাত্রে সরিয়ে ফেলতে হতে পারে :

docker rm `docker ps --no-trunc -aq`

এগুলি ডকারের সাথে পরিচিত ব্যথা পয়েন্ট এবং ভবিষ্যতে প্রকাশে এটি সম্বোধন করা যেতে পারে। যাইহোক, চিত্র এবং ধারকগুলির স্পষ্ট বোঝার সাথে এই পরিস্থিতিগুলি কয়েকটি অভ্যাসের মাধ্যমে এড়ানো যেতে পারে:

  1. সর্বদা একটি অকেজো, থামানো ধারক দিয়ে অপসারণ করুন docker rm [CONTAINER_ID]
  2. অকেজো, থামানো ধারকযুক্ত পেছনের চিত্রটি সর্বদা সরিয়ে ফেলুন docker rmi [IMAGE_ID]

5
ভাল পার্থক্য বিটি ইমেজ এবং ধারক। আমার মতো নতুনদের জন্য অনেক সাহায্য করে।
গিবস

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

আসলে এটি সত্য নয়: "ডকার টেনে আনুন: একটি চিত্রের সর্বশেষ ট্যাগটি আপনার স্থানীয় চিত্রের তালিকায় কমপক্ষে দুটি চিত্র যুক্ত করবে: সর্বশেষতম ট্যাগ সহ একটি এবং সর্বশেষ চিত্রের প্রতিটি মূল ট্যাগের জন্য, উদাহরণস্বরূপ 14.04 এবং উপরে ট্রিস্টি। " এটি সর্বশেষতম ট্যাগ সহ কেবল একটি চিত্র যুক্ত করবে। 14.04 পরে টানা কোনও অপশন হতে পারে যদি চিত্রের আইডি একই হয় তবে এটির জন্য এখনও আলাদা টানা দরকার।
অ্যাড্রিয়ান মোউত

4
ডকারের আরও নতুন সংস্করণগুলিতে, আপনি docker image pruneঝুঁকির চিত্রগুলি পরিষ্কার করতে ব্যবহার করতে পারেন । অব্যবহৃত ডকার অবজেক্টগুলিকে
ছাঁটাই করুন

3
আমি কেবল সমস্ত কিছু docker system pruneপরিষ্কার করতে ব্যবহার করি
রামি আলাউশ

137

সহজ কথায়।

চিত্র -

ফাইল সিস্টেম এবং কনফিগারেশন (কেবল পঠনযোগ্য) অ্যাপ্লিকেশন যা পাত্রে তৈরি করতে ব্যবহৃত হয়। আরও বিশদ

ধারক -

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


অন্যান্য গুরুত্বপূর্ণ শর্তাদি লক্ষ্য করুন:


ডকার ডেমন -

হোস্টে চলমান ব্যাকগ্রাউন্ড পরিষেবাটি বিল্ডিং পরিচালনা করে, ডকার পাত্রে চালিত এবং বিতরণ করে।

ডকার ক্লায়েন্ট -

কমান্ড লাইন সরঞ্জাম যা ব্যবহারকারীকে ডকার ডেমনের সাথে ইন্টারঅ্যাক্ট করতে দেয়।

ডকার স্টোর -

অন্যান্য জিনিসগুলির মধ্যে স্টোর হ'ল ডকারের চিত্রগুলির একটি রেজিস্ট্রি। আপনি রেজিস্ট্রিটিকে সমস্ত উপলভ্য ডকার চিত্রের ডিরেক্টরি হিসাবে ভাবতে পারেন।

এই ব্লগ পোস্টের একটি ছবি এক হাজার শব্দের মূল্যবান।

এখানে চিত্র বিবরণ লিখুন

(গভীরভাবে জন্য পড়া দয়া এই ।)

সারসংক্ষেপ:

  • ডকার হাব থেকে চিত্রটি টানুন বা একটি ডকফাইফাইল থেকে বিল্ড করুন => একটি ডকার চিত্র দেয় (সম্পাদনযোগ্য নয়)।
  • চিত্রটি চালান ( docker run image_name:tag_name) => একটি চলমান চিত্র দেয় যেমন পাত্রে (সম্পাদনযোগ্য)

1
ধন্যবাদ। চিত্রটির উত্স কী? এটা কি ডকারের অফিসিয়াল ডকুমেন্টস থেকে?

পোস্ট করা ছবিটি দুর্দান্ত । আমার একটি উদ্বেগ রয়েছে: আপনি বলছেন "কিছু নিবন্ধটি পড়ার সময় এটি খুঁজে পেয়েছি" - এটি যদি আপনার চিত্র নয় তবে নৈতিকভাবে গুরুত্বপূর্ণ [এবং আইনগতভাবে প্রয়োজনীয়] যেখানে dueণ দেওয়া উচিত ("অ্যাট্রিবিউশন"): মূল চিত্র লেখক হলেন WHO? মূলত কোন ইউআরএলে পাওয়া গেছে?
টুলমেকারস্টেভ

@ টুলমেকারস্টেভ টিপটির জন্য ধন্যবাদ, আমি মনে রাখব এবং উত্সটি পাওয়ার সাথে সাথে উত্তরটি আপডেট করব।
ইমরান আহমেদ

126

চলমান চিত্র হিসাবে কোনও ধারকটিকে ভাবতে সহজ হলেও, এটি বেশ নয় সঠিক।

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


আমি কীভাবে কোনও চিত্র না চালিয়ে পাত্রে পরিণত করব?
জানুস ট্রয়লসন

12
@JanusTroelsen ব্যবহারের docker create
অ্যাড্রিয়ান মৌআত

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

4
ঠিক আছে, কিছু পড়া এবং এই থ্রেডে উত্তর পেয়েছে। "ধারকটি মোছার পরে, লিখনযোগ্য স্তরটিও মুছে ফেলা হয় The অন্তর্নিহিত চিত্রটি অপরিবর্তিত রয়েছে" "
ডিচাকস

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

89

হয়তো পুরো ওয়ার্কফ্লো ব্যাখ্যা করে সাহায্য করতে পারে।

ডকফাইফাইল দিয়ে সবকিছু শুরু হয় । ডকফেরফাইল ইমেজের উত্স কোড।

একবার ডকফাইফাইল তৈরি হয়ে গেলে, আপনি ধারকটির চিত্র তৈরি করতে এটি তৈরি করেন । চিত্রটি হ'ল "উত্স কোড" এর "সংকলিত সংস্করণ" যা ডকফাইফাইল।

আপনার ধারকটির চিত্রটি একবার হয়ে গেলে আপনার রেজিস্ট্রি ব্যবহার করে এটি পুনরায় বিতরণ করা উচিত । নিবন্ধটি একটি গিট সংগ্রহস্থলের মতো - আপনি চিত্রগুলি ধাক্কা এবং টানতে পারেন।

এরপরে, আপনি পাত্রে চালানোর জন্য চিত্রটি ব্যবহার করতে পারেন । একটি চলমান ধারক ভার্চুয়াল মেশিনের (তবে হাইপারভাইজার ব্যতীত ) অনেক ক্ষেত্রে একই রকম ।


44

কর্মধারা

এখানে বিভিন্ন-সমাপ্ত কার্যপ্রবাহটি বিভিন্ন কমান্ড এবং তাদের সম্পর্কিত ইনপুট এবং আউটপুট দেখায়। এটি একটি চিত্র এবং একটি ধারক মধ্যে সম্পর্ক স্পষ্ট করা উচিত।

+------------+  docker build   +--------------+  docker run -dt   +-----------+  docker exec -it   +------+
| Dockerfile | --------------> |    Image     | --------------->  | Container | -----------------> | Bash |
+------------+                 +--------------+                   +-----------+                    +------+
                                 ^
                                 | docker pull
                                 |
                               +--------------+
                               |   Registry   |
                               +--------------+

আপনি চালাতে পারেন এমন চিত্রগুলির তালিকা করতে, চালনা করুন:

docker image ls

ধারকগুলি কার্যকর করতে পারে এমন পাত্রে তালিকাবদ্ধ করতে:

docker ps

1
: একটি আরো ব্যাপক কর্মপ্রবাহ ডায়াগ্রাম জন্য, এই দেখুন stackoverflow.com/a/46528745/714112
শ্রীধর Sarnobat

1
তবে সেই এএসসিআইআই আর্টে প্রয়োজনীয় স্ক্রোলিং একটি সমস্যা।
পিটার মর্টেনসেন

ইউনিকোড পরিবর্তে সুন্দর চেহারা বাক্স পেতে ব্যবহার করা যেতে পারে। একটি অনলাইন সরঞ্জাম জাভাস্ক্রিপ্ট বক্স অঙ্কন ডেমো
পিটার মর্টেনসেন

40

আমি এখানে সমস্ত প্রশ্ন পড়া সত্ত্বেও চিত্র এবং স্তর ধারণাটি বুঝতে পারি না এবং শেষ পর্যন্ত ডকারের (ডু!) এই দুর্দান্ত ডকুমেন্টেশনকে হোঁচট খেয়ে ফেলেছিলাম।

উদাহরণটি আসলে পুরো ধারণাটি বোঝার মূল চাবিকাঠি। এটি একটি দীর্ঘ পোস্ট, তাই আমি স্বচ্ছতা পেতে যে মূল পয়েন্টগুলি সত্যই উপলব্ধি করা দরকার তা সংক্ষিপ্ত করছি।

  • চিত্র : একটি ডকার চিত্র কেবল পঠনযোগ্য স্তরগুলির একটি সিরিজ থেকে তৈরি

  • স্তর : প্রতিটি স্তর চিত্রের ডকফেরফিলের একটি নির্দেশকে উপস্থাপন করে।

Example: নীচে ডকফাইফিলটিতে চারটি কমান্ড রয়েছে, যার প্রতিটি একটি স্তর তৈরি করে।

উবুন্টু থেকে: 15.04

কপি / অ্যাপ

RUN make / app

সিএমডি পাইথন / অ্যাপ / অ্যাপ.পি

গুরুত্বপূর্ণভাবে , প্রতিটি স্তর তার আগে স্তর থেকে কেবলমাত্র পার্থক্যের একটি সেট।

  • কনটেইনার । আপনি যখন একটি নতুন ধারক তৈরি করেন, আপনি অন্তর্নিহিত স্তরগুলির উপরে একটি নতুন লিখনযোগ্য স্তর যুক্ত করেন । এই স্তরটিকে প্রায়শই "ধারক স্তর" বলা হয়। চলমান ধারকগুলিতে করা সমস্ত পরিবর্তন যেমন নতুন ফাইল লেখা, বিদ্যমান ফাইলগুলি সংশোধন করা এবং ফাইলগুলি মুছে ফেলার জন্য এই পাতলা লিখনযোগ্য ধারক স্তরটিতে লেখা হয় ।

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

আকার-অন-ডিস্ক দৃষ্টিকোণ থেকে চিত্রগুলি ধারক কনটেইনারগুলি বোঝা

চলমান ধারকটির আনুমানিক আকার দেখতে, আপনি docker ps -sকমান্ডটি ব্যবহার করতে পারেন । আপনি পান sizeএবং virtual sizeদুটি ফলাফল হিসাবে:

  • আকার: প্রতিটি পাত্রে লিখনযোগ্য স্তর জন্য ব্যবহৃত হয় এমন পরিমাণের পরিমাণ (ডিস্কে)

  • ভার্চুয়াল আকার: ধারক দ্বারা ব্যবহৃত কেবল পঠিত চিত্র ডেটার জন্য ব্যবহৃত ডেটার পরিমাণ। একাধিক পাত্রে কিছু বা সমস্ত পঠনযোগ্য চিত্র ডেটা ভাগ করতে পারে। সুতরাং এগুলি যুক্ত হয় না। অর্থাৎ আপনি চিত্র দ্বারা ডিস্কে কত আকার ব্যবহার করা হয় তা গণনা করতে সমস্ত ভার্চুয়াল আকার যুক্ত করতে পারবেন না

আর একটি গুরুত্বপূর্ণ ধারণা হ'ল অনুলিপি-র কৌশল

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

আমি আশা করি এটি আমার মতো অন্য কাউকে সহায়তা করে।


1
এই মন্তব্যের জন্য ধন্যবাদ, এটি আকার এবং ভার্চুয়াল আকারের মধ্যে পার্থক্যের বিষয়টি নিশ্চিত করে এবং একাধিক পাত্রে এটি একই পঠনযোগ্য ডেটা ভাগ করে নেওয়ার পক্ষে খুব বিরক্ত হয় এবং এটি একটি লাভ ওএস ডিস্কের স্থান।
ব্যবহারকারী 1842947

34

ডকফেরাইল → (বিল্ড) → চিত্র → (রান) → ধারক

  • ডকফাইফাইল : ডকার নির্দেশাবলীর একটি সেট রয়েছে যা আপনার অপারেটিং সিস্টেমটিকে আপনার পছন্দ মতো ব্যবস্থা করে এবং আপনার সমস্ত সফ্টওয়্যার ইনস্টল / কনফিগার করে।

  • চিত্র : সংকলিত ডকফাইফাইল। আপনার যখনই কোনও ধারক চালানোর দরকার হয় ততবারই ডকস্পাইল পুনর্নির্মাণ থেকে আপনার সময় বাঁচায়। এবং এটি আপনার বিধানের কোডটি আড়াল করার একটি উপায়।

  • ধারক : ভার্চুয়াল অপারেটিং সিস্টেম নিজেই। আপনি এটিতে প্রেরণ করতে পারেন এবং আপনার যে কোনও কমান্ড চান তা চালাতে পারেন, যেন এটি বাস্তব পরিবেশ। আপনি একই চিত্র থেকে 1000+ ধারক চালাতে পারেন।


দুর্দান্ত উপমা। আমি যদি আপনাকে 1000 টি থাম্বস দিতে পারতাম।
রিচ লাইসাকোভস্কি পিএইচডি

16

সরলভাবে বলা হয়েছে, কোনও চিত্র যদি শ্রেণি হয় , তবে একটি ধারক একটি শ্রেণীর উদাহরণ, রানটাইম অবজেক্ট


13

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

সাধারণ বিধিনিষেধগুলি হ'ল প্রক্রিয়া-বিচ্ছিন্নতা সম্পর্কিত, সুরক্ষা সম্পর্কিত (যেমন সেলইনাক্স সুরক্ষা ব্যবহার করা ) এবং সিস্টেম-সংস্থান সম্পর্কিত (মেমরি, ডিস্ক, সিপিইউ এবং নেটওয়ার্কিং)।

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

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

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

অন্যান্য অ্যাপ্লিকেশন, Docker মত, হোস্ট অপারেটিং সিস্টেম যখন এটি চলমান যা গণ্ডি একটি প্রক্রিয়া প্রয়োগ করতে বলতে পারেন, অন্তর্ভুক্ত LXC , libvirt দ্বারা , এবং systemd হল । ডোকার এই অ্যাপ্লিকেশনগুলি অপ্রত্যক্ষভাবে লিনাক্স ওএসের সাথে ইন্টারেক্ট করার জন্য ব্যবহার করতেন, তবে এখন ডকার তার নিজস্ব লাইব্রেরি " লিবকন্টেইনার " ব্যবহার করে লিনাক্সের সাথে সরাসরি ইন্টারেক্ট করে " ।

সুতরাং কনটেইনারগুলি কেবলমাত্র একটি নিষিদ্ধ মোডে চলমান প্রক্রিয়াগুলি রয়েছে, ক্রুট যেমন ব্যবহার করত similar

আইএমও, ডকারকে অন্য কোনও ধারক প্রযুক্তি থেকে আলাদা করে রাখার এটি হ'ল এটির সংগ্রহস্থল (ডকার হাব) এবং তাদের পরিচালনার সরঞ্জাম যা পাত্রে কাজ করা অত্যন্ত সহজ করে তোলে।

দেখুন Docker (সফ্টওয়্যার)


12

ডকারের মূল ধারণাটি হ'ল "মেশিনগুলি" তৈরি করা সহজ যা এই ক্ষেত্রে পাত্রে বিবেচনা করা যেতে পারে। কনটেইনারটি পুনঃব্যবহারযোগ্যতাতে সহায়তা করে, আপনাকে সহজেই পাত্রে তৈরি করতে এবং ফেলতে দেয়।

চিত্রগুলি প্রতিটি পয়েন্টে সময়ে প্রতিটি পাত্রে অবস্থান চিত্রিত করে। সুতরাং মূল কর্মপ্রবাহটি হ'ল:

  1. একটি ইমেজ তৈরি করুন
  2. একটি ধারক শুরু করুন
  3. ধারক পরিবর্তন করুন
  4. একটি চিত্র হিসাবে ধারকটি সংরক্ষণ করুন

8

যতগুলি উত্তর এটি নির্দেশ করে: আপনি একটি চিত্র পেতে ডকফায়াইল তৈরি করেন এবং একটি ধারক পেতে আপনি চিত্র চালান

যাইহোক, নিম্নলিখিত পদক্ষেপগুলি আমাকে ডকার চিত্র এবং ধারক কী তা সম্পর্কে আরও ভাল অনুভব করতে সহায়তা করেছে:

1) ডকফায়াইল তৈরি করুন:

docker build -t my_image dir_with_dockerfile

2) .tarফাইলটি ইমেজ সংরক্ষণ করুন

docker save -o my_file.tar my_image_id

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

3) একটি ধারক ভিতরে একবার দেখতে, আপনি এটি করতে পারেন:

sudo docker run -it my_image bash

এবং আপনি দেখতে পারেন এটি অনেকটা কোনও ওএসের মতো।


6

চিত্রটি ওওপিতে একটি শ্রেণীর সংজ্ঞার সমতুল্য এবং স্তরগুলি সেই শ্রেণীর বিভিন্ন পদ্ধতি এবং বৈশিষ্ট্য।

ধারক হ'ল চিত্রটির প্রকৃত ইনস্ট্যান্টেশন যেমন ঠিক কোনও বস্তু কীভাবে ইনস্ট্যান্টেশন বা শ্রেণীর উদাহরণ।


4

আমি মনে করি শুরুতে ব্যাখ্যা করা ভাল better

ধরুন আপনি কমান্ডটি চালাচ্ছেন docker run hello-world। কি ঘটেছে?

এটি ডকার সিএলআইকে কল করে যা ডকার কমান্ডগুলি গ্রহণ করতে এবং ডকার সার্ভার কমান্ডগুলিতে কল রূপান্তর করতে দায়বদ্ধ । যত তাড়াতাড়ি Docker সার্ভার একটি চালানোর জন্য একটি কমান্ড পায় ইমেজ , এটা চেক আবহাওয়া চিত্র ক্যাশে একটি ঝুলিতে ইমেজ যেমন একটি নামের সঙ্গে।

মনে করুন হ্যালো-ওয়ার্ল্ডের অস্তিত্ব নেই। ডকার সার্ভার ডকার হাবের কাছে যায় (ডকার হাব কেবলমাত্র চিত্রগুলির একটি নিখরচায় ভান্ডার) এবং জিজ্ঞাসা করে, ওহে হাব, আপনার কি কোনও চিত্র বলা হয়েছে hello-world? হাবের প্রতিক্রিয়া - হ্যাঁ, আমি করি। তাহলে আমাকে এটি দিন, দয়া করে। এবং ডাউনলোড প্রক্রিয়া শুরু হয়। যত তাড়াতাড়ি Docker ইমেজ ডাউনলোড হয়ে গেলেই Docker সার্ভার রাখে এটা চিত্র ক্যাশে

সুতরাং ডকারের চিত্র এবং ডকারের ধারকগুলি কী তা বোঝানোর আগে, আসুন আপনার কম্পিউটারে অপারেশন সিস্টেম এবং এটি কীভাবে সফ্টওয়্যার চালায় সে সম্পর্কে একটি ভূমিকা দিয়ে শুরু করি।

আপনি যখন চালান, উদাহরণস্বরূপ, আপনার কম্পিউটারে ক্রোম, এটি অপারেটিং সিস্টেমকে কল করে, অপারেটিং সিস্টেম নিজেই কার্নেলকে কল করে এবং জিজ্ঞাসা করে, আরে আমি এই প্রোগ্রামটি চালাতে চাই। কার্নেলটি আপনার হার্ড ডিস্ক থেকে ফাইলগুলি পরিচালনা করতে পরিচালনা করে।

এখন কল্পনা করুন যে আপনার দুটি ক্রোম এবং নোড.জেএস রয়েছে programs ক্রোমটির চালনার জন্য পাইথন সংস্করণ 2 এবং নোড.জেস চালাতে পাইথন সংস্করণ 3 প্রয়োজন। আপনি যদি কেবলমাত্র আপনার কম্পিউটারে পাইথন ভি 2 ইনস্টল করেছেন তবে কেবলমাত্র Chrome চালিত হবে।

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

সুতরাং, যখন আমরা কোনও চিত্র সম্পর্কে কথা বলি আমরা আসলে একটি ফাইল সিস্টেম স্ন্যাপশট সম্পর্কে কথা বলি। একটি চিত্র একটি শারীরিক ফাইল যা নির্দিষ্ট ধারক তৈরি করার জন্য দিকনির্দেশ এবং মেটাডেটা ধারণ করেধারক নিজেই একটি একটি দৃষ্টান্ত হল ইমেজ ; এটা namespacing যা শুধুমাত্র এই জন্য উপলব্ধ ব্যবহার হার্ড ড্রাইভ isolates ধারক । সুতরাং একটি ধারক একটি প্রক্রিয়া বা প্রক্রিয়াগুলির সেট যা এতে নির্ধারিত বিভিন্ন সংস্থানকে গোষ্ঠী করে।


3

একটি ডকার চিত্র অ্যাপ্লিকেশনটি চালানোর জন্য প্রয়োজনীয় অ্যাপ্লিকেশন এবং পরিবেশের প্যাক আপ করে এবং একটি ধারক চিত্রটির একটি চলমান উদাহরণ instance

চিত্রগুলি ডোকারের প্যাকিং অংশ, "উত্স কোড" বা "প্রোগ্রাম" এর সাথে সাদৃশ্য। পাত্রে হ'ল ডকারের কার্য সম্পাদনের অংশ, এটি একটি "প্রক্রিয়া" এর সাথে সমতুল্য।

প্রশ্নে, কেবলমাত্র "প্রোগ্রাম" অংশটি উল্লেখ করা হয় এবং এটিই চিত্র। ডকারের "চলমান" অংশটি ধারক। যখন কোনও ধারক চালিত হয় এবং পরিবর্তনগুলি করা হয়, তখন মনে হয় প্রক্রিয়াটি তার নিজস্ব উত্স কোডে পরিবর্তন করে এবং এটি নতুন চিত্র হিসাবে সংরক্ষণ করে।


3

প্রোগ্রামিং দিক হিসাবে,

চিত্রটি সোর্স কোড।

যখন সোর্স কোড কম্পাইল এবং বিল্ড হয়, এটি একটি অ্যাপ্লিকেশন বলা হয়।

"চিত্রের জন্য যখন কোনও উদাহরণ তৈরি করা হয়" এর অনুরূপ, একে " ধারক " বলা হয় ।


1
ডকফেরফাইল সোর্স কোডের মতো। সোর্স কোড সংকলিত / বিল্ট করার পরে চিত্র এক্সিকিউটেবল ফাইলের মতো। একটি ধারক একটি প্রয়োগের মতো যা এক্সিকিউটেবল ফাইল থেকে চলমান।
ejlp12

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

3

একটি ইমেজ একটি এর "স্ন্যাপশট" হয় ধারক । আপনি কোনও ধারক (নতুন "স্ন্যাপশট") থেকে চিত্র তৈরি করতে পারেন এবং আপনি কোনও চিত্র থেকে নতুন পাত্রে শুরু করতে পারেন ("স্ন্যাপশট" তাত্ক্ষণিক করে)।

উদাহরণস্বরূপ, আপনি একটি বেস চিত্র থেকে একটি নতুন ধারক ইনস্ট্যান্ট করতে পারেন, ধারকটিতে কিছু কমান্ড চালাতে পারেন এবং তারপরে এটি একটি নতুন চিত্র হিসাবে স্ন্যাপশট করতে পারেন। তারপরে আপনি এই নতুন চিত্র থেকে 100 টি ধারক চালাতে পারেন।

অন্যান্য বিষয় বিবেচনা করুন:

  • একটি চিত্র স্তরগুলি দিয়ে তৈরি করা হয়, এবং স্তরগুলি স্ন্যাপশট "ডিফফস" হয় (সুতরাং আপনি যখন কোনও চিত্রকে ধাক্কা দেবেন তখন আপনাকে কেবল রেজিস্ট্রিতে "ডিফ" পাঠাতে হবে)।
  • একটি ডকফেরফাইল একটি বেস চিত্রের উপরে কিছু কমান্ড সংজ্ঞায়িত করে, যা নতুন স্তর তৈরি করে ("ডিফেন্স") যার ফলে একটি নতুন চিত্র ("স্ন্যাপশট") আসে।
  • চিত্র ট্যাগগুলি কেবল ট্যাগ নয়। তারা হ'ল চিত্রের "পুরো নাম" ("ভান্ডার: ট্যাগ")। একই চিত্রটির একাধিক নাম থাকলে এটি করার সময় এটি একাধিকবার দেখায় docker images

এই উত্তর এটি পিছিয়ে আছে। একটি ধারক একটি চিত্রের উদাহরণ বা কোনও চিত্রের নির্বাহযোগ্য স্ন্যাপশট shot উদাহরণটি পিতামাতার বর্গের থেকে চিত্রটি সরাসরি কার্যকর করা হয় না। দৃষ্টান্ত (ধারক) হ'ল পিতামাতার সন্তান (উদাহরণ তৈরির জন্য রেসিপি বা টেমপ্লেট
ich

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

3

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


1

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

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

IContainer newDotNetApp = ImageFactory.DotNetImageFactory.CreateNew(appOptions);
newDotNetApp.ChangeDescription("I am making changes on this instance");
newDotNetApp.Run();

1

সংক্ষেপে:

কনটেইনারটি কার্নেলের একটি বিভাগ (ভার্চুয়াল) যা একটি সাধারণ ওএস ভাগ করে এবং একটি চিত্র (ডকার চিত্র) চালায়।

একটি ধারক একটি স্ব-টেকসই অ্যাপ্লিকেশন যা কোড চালানোর জন্য এক সাথে প্যাকেজ এবং সমস্ত প্রয়োজনীয় নির্ভরতা থাকবে depend


1

একটি ডকার ধারক একটি চিত্রের উদাহরণ চালাচ্ছে। আপনি কোনও প্রোগ্রামের সাথে একটি চিত্র এবং একটি প্রক্রিয়া সহ একটি ধারক সম্পর্কিত করতে পারেন :)


1

কোনও চিত্র কোনও শ্রেণীর কাছে কোনও বস্তুর ধারক হিসাবে থাকে।

একটি ধারক একটি চিত্রের উদাহরণ হিসাবে কোনও বস্তু একটি শ্রেণীর উদাহরণ।


1

ডকফাইফাইল আপনার বাশ স্ক্রিপ্টের মতো যা একটি টারবাল (ডকার চিত্র) উত্পাদন করে।

ডকারের ধারকগুলি টারবলের নিষ্ক্রিয় সংস্করণের মতো। বিভিন্ন ফোল্ডারে (পাত্রে) আপনার পছন্দ মতো কপি থাকতে পারে।

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