ডকার চিত্র - প্রকার। স্লিম বনাম স্লিম-স্ট্রেচ বনাম স্ট্রেচ বনাম আলপাইন


110

আমি একটি জাভা অ্যাপ্লিকেশন তৈরি করতে একটি ডকার ইমেজ বাছাই করতে চাইছি এবং উপলভ্য ওপেনজেডিকে চিত্রগুলির বৈকল্পিকগুলি খুঁজছি। আমি এখানে খুঁজছি https://github.com/docker-library/openjdk/tree/master/8/jdk দেখছি এবং আল্পাইন, পাতলা এবং উইন্ডো দেখতে পাচ্ছি। এগুলির মধ্যে পার্থক্যগুলি কী এবং প্রতিটি বৈকল্পিক কী দেয়?



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

উত্তর:


106

প্রতি ডকার লাইব্রেরি ডক্স (নীচে উদ্ধৃতি এবং লিঙ্কগুলি), এখানে একটি সংক্ষিপ্তসার রয়েছে:

  • openjdk:<version>

ডিফাক্টো চিত্র। অনিশ্চিত হলে এটি ব্যবহার করুন।

  • openjdk:<version>-buster, openjdk:<version>-stretchএবংopenjdk:<version>-jessie

buster, jessieবা stretchএর রিলিজের জন্য স্যুট কোড নাম ডেবিয়ান এবং ইঙ্গিত যা মুক্তি ইমেজ উপর ভিত্তি করে।

  • openjdk:<version>-alpine

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

  • openjdk:<version>(12 এর পরে), openjdk:<version>-oracleএবংopenjdk:<version>-oraclelinux7

openjdk:12ডিফল্ট চিত্রের সাথে শুরু করে -oracleএবং -oraclelinux7ভেরিয়েন্টগুলি অফিশিয়াল ওরাকল লিনাক্স 7 চিত্রের উপর ভিত্তি করে । ডিফল্ট চিত্রের ওপেনজেডিকে বাইনারিগুলির পাশাপাশি -oracle-oraclelinux7রূপগুলি ও રેકল দ্বারা নির্মিত এবং ওপেনজেডিকে সম্প্রদায় থেকে উত্সাহিত হয় ।

  • openjdk:<version>-slim

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

  • openjdk:<version>-windowsservercore

এই চিত্রটি উইন্ডোজ সার্ভার কোর ( microsoft/windowsservercore) এর উপর ভিত্তি করে ।



পূর্ণ দস্তাবেজ ( এখানে নীচে প্রদর্শিত সংস্করণ , সর্বশেষ সংস্করণ এখানে ):

চিত্রের ভেরিয়েন্টস

openjdkইমেজ অনেক স্বাদে একটি নির্দিষ্ট ব্যবহারের ক্ষেত্রে জন্য ডিজাইন করা প্রতিটি আসা।

openjdk:<version>

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

এই ট্যাগগুলির মধ্যে কয়েকটিতে জেসি বা প্রসারিতের মতো নাম থাকতে পারে। এগুলো রিলিজের জন্য স্যুট কোড নাম ডেবিয়ান এবং ইঙ্গিত যা ইমেজ উপর ভিত্তি করে তৈরি ছেড়ে দিন।

openjdk:<version>-alpine

এই চিত্রটি জনপ্রিয় আলপাইন লিনাক্স প্রকল্পের উপর ভিত্তি করে তৈরি হয়েছে , যা alpineঅফিশিয়াল ছবিতে উপলব্ধ । আলপাইন লিনাক্স বেশিরভাগ ডিস্ট্রিবিউশন বেস ইমেজগুলির তুলনায় অনেক ছোট (M 5MB) এবং এটি সাধারণভাবে অনেক স্লিমার চিত্রগুলির দিকে নিয়ে যায়।

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

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

openjdk:<version>-windowsservercore

এই চিত্রটি উইন্ডোজ সার্ভার কোর ( microsoft/windowsservercore) এর উপর ভিত্তি করে । যেমনটি, এটি কেবলমাত্র সেই চিত্রগুলিতে কাজ করে যা উইন্ডোজ 10 পেশাদার / এন্টারপ্রাইজ (বার্ষিকী সংস্করণ) বা উইন্ডোজ সার্ভার 2016 এর মতো করে image

উইন্ডোজে কীভাবে ডকার চালাবেন সে সম্পর্কে তথ্যের জন্য, দয়া করে মাইক্রোসফ্ট দ্বারা সরবরাহিত প্রাসঙ্গিক "কুইক স্টার্ট" গাইডটি দেখুন:

openjdk:<version>-slim

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


1

আপনার প্রয়োজন অনুসারে এমন একটি বেস ডকার চিত্র চয়ন করুন এবং দয়া করে মনে রাখবেন যে চিত্রের আকারটিও একটি গুরুত্বপূর্ণ দিক

চিত্রটি কীভাবে ধারক তৈরি করতে হবে তার নির্দেশাবলীর একটি সেট হিসাবে বিবেচনা করা যেতে পারে। ডকারে, একটি চিত্র অন্য চিত্র থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হতে পারে (বা ভিত্তিতে) বেসের উপরের অংশে অতিরিক্ত নির্দেশাবলী যুক্ত করে। প্রতিটি চিত্র একাধিক স্তর নিয়ে গঠিত, যা কার্যকরভাবে অপরিবর্তনীয়।

প্লেজ পড়ুন নিখুঁত জাভা ডকার বিল্ড ফ্লো নিবন্ধটি তৈরি করুন।

ডকার চিত্রের আকারটি আসলে খুব গুরুত্বপূর্ণ। আকারটি এর উপর প্রভাব ফেলে:

  • নেটওয়ার্ক ল্যাটেন্সি : ওয়েবে ডকার চিত্র স্থানান্তর করতে হবে
  • সঞ্চয়স্থান : কোথাও এই সমস্ত বিট সংরক্ষণ করতে হবে
  • পরিষেবা উপলভ্যতা এবং স্থিতিস্থাপকতা : কুকারনেটস, সোর্ম, যাযাবর, ডিসি / ওএস বা অন্যগুলির মতো ডকার শিডিয়ুলার ব্যবহার করার সময়সূচী হোস্টগুলির মধ্যে পাত্রে স্থানান্তর করতে পারে)
  • সুরক্ষা : আপনি কি সত্যিই বলতে চাইছেন, আপনার জাভা অ্যাপ্লিকেশনের জন্য তার সমস্ত সিভিই দুর্বলতা সহ libpng প্যাকেজটির সত্যই দরকার?
  • বিকাশ তত্পরতা : ছোট ডকার ইমেজ == দ্রুত বিল্ড সময় এবং দ্রুত স্থাপনার


জাভা অ্যাপ্লিকেশন চালানোর জন্য আপনার কমপক্ষে জেআরই প্রয়োজন। উদাহরণস্বরূপ, একটি বসন্ত প্রকল্পের জন্য আপনার চিত্রের উপর ভিত্তি করে তৈরি করা যেতে পারে slim Alpine Linux with OpenJDK JRE:

#simple dockerFile for java app:

#here we are using Base Alpine Linux based image with OpenJDK JRE only
#For Java 8, try this
FROM openjdk:8-jre-alpine

#For Java 11, try this
#FROM adoptopenjdk/openjdk11:alpine-jre

#copy application WAR/JAR (with libraries inside)
COPY target/spring-boot-*.war/jar yourName.war/jar
# specify default command
CMD ["/usr/bin/java", "-jar", "/yourName.war/jar"]

এছাড়াও আপনি docker history yourImageNameসমস্ত স্তর (এবং তাদের আকার) দেখতে ব্যবহার করতে পারেন যা আপনার চিত্র তৈরি করে।

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