জাভা 11 বেস ডকার চিত্রটি এত বড় কেন? (Openjdk: 11-JRE-পাতলা)


145

জাভা 11 হ'ল সর্বশেষতম এলটিএস সংস্করণ হিসাবে ঘোষণা করা হয়েছে। সুতরাং, আমরা এই জাভা সংস্করণের উপর ভিত্তি করে নতুন পরিষেবা শুরু করার চেষ্টা করছি।

তবে জাভা 11 এর জন্য বেস ডকার চিত্রটি জাভা 8 এর সমতুল্য থেকে অনেক বড়:

(আমি প্রতিটি অফিসিয়াল ওপেনজেডিকে এবং প্রতিটি জাভা সংস্করণের জন্য সর্বাধিক লাইটওয়েট চিত্র বিবেচনা করছি ))

গভীর খনন নিম্নলিখিত "জিনিস" অনাবৃত:

  • openjdk:11-jre-slimইমেজ বেস ইমেজ ব্যবহার debian:sid-slim। এটি 2 টি সমস্যা নিয়ে আসে:

    • এটি এর চেয়ে 60 এমবি বড় larger alpine:3.8

    • ডেবিয়ানsid সংস্করণ অস্থিতিশীল হয়

  • openjdk-11-jre-headlessপ্যাকেজ ইমেজ মধ্যে ইনস্টল করা হয় 3 বার বৃহত্তর তুলনায় openjdk8-jre(অভ্যন্তরীণ Docker ধারক চলমান):

    • openjdk:8-jre-alpine:

      / # du -hs /usr/lib/jvm/java-1.8-openjdk/jre/lib/
      57.5M   /usr/lib/jvm/java-1.8-openjdk/jre/lib/
    • openjdk:11-jre-slim:

      # du -sh /usr/lib/jvm/java-11-openjdk-amd64/lib/
      179M    /usr/lib/jvm/java-11-openjdk-amd64/lib/

      আরও গভীরে গিয়ে আমি আবিষ্কার করেছিলাম এই ভারীকরণের "মূল" - এটি জেডিকে-র modulesফাইল:

      # ls -lhG /usr/lib/jvm/java-11-openjdk-amd64/lib/modules
      135M    /usr/lib/jvm/java-11-openjdk-amd64/lib/modules

সুতরাং, এখন যে প্রশ্নগুলি এসেছে:

  • alpineজাভা ১১ টি স্লিম চিত্রের জন্য কেন বেস ইমেজ হিসাবে আর ব্যবহার করা হচ্ছে না?

  • এলটিএস জাভা চিত্রগুলির জন্য কেন অস্থির সিড সংস্করণ ব্যবহার করা হচ্ছে?

  • ওপেনজেডকে ১১ এর জন্য স্লিম / হেডলেস / জেআরই প্যাকেজটি কেন একই জাতীয় ওপেনডিজিডি 8 প্যাকেজের তুলনায় এত বড়?

    • এই মডিউল ফাইলটি কী যা ওপেনজেডকে 11-এ 135 এমবি নিয়ে আসে?

ইউপিডি : এই চ্যালেঞ্জগুলির সমাধান হিসাবে কেউ এই উত্তরটি ব্যবহার করতে পারে: জাকার ১১ অ্যাপ্লিকেশনটি ডকার চিত্র হিসাবে


1
ঠিক আছে জাভা এর নতুন সংস্করণগুলির জন্য (জেডিকে 9+) মডিউলাইজ করা হয়েছে , যা 11 বনাম 8
জাকারি ক্রেগ


13
কোনও জেআরই 11 নেই, সুতরাং আপনার কাছে যা আছে তা সম্পূর্ণ জেডিকে। আপনি কমপ্যাক্ট পরিবেশ তৈরি করতে পারেন, এমনকি জেআরই 8 এর চেয়েও পাতলা, তবে এটির জন্য একটি প্রকৃত মডুলার অ্যাপ্লিকেশন প্রয়োজন, যাতে নির্ভরতাগুলি জানা যায়।
হোলার

1
উপরে বর্ণিতভাবে অতিরিক্ত হিসাবে, আকার বৃদ্ধির কারণ হিসাবে আপনি যে সমস্ত মডিউলগুলি খুঁজে পান সেগুলি আপনার অ্যাপ্লিকেশনগুলির জন্য আসলে প্রয়োজনীয় নয়। তবে কোনটি আপনি একটি মডুলার অ্যাপ্লিকেশন তৈরির দিকে এগিয়ে যাবেন তা সন্ধান করার জন্য। আপনি সেই জন্য jlink (জাভা 9 তে প্রবর্তিত) সম্পর্কে আরও জানতে পারেন ।
নামান

1
এটি অনলাইনে পড়ার জন্য আরও ভাল সময় আর কী হতে পারে - twitter.com/LogicTheoryIO/status/1064503559071371265
নামান

উত্তর:


172

alpineজাভা ১১ টি স্লিম চিত্রের জন্য কেন বেস ইমেজ হিসাবে আর ব্যবহার করা হচ্ছে না?

এটি কারণ, দুঃখের বিষয়, বর্তমানে আলপাইনটির জন্য কোনও সরকারী স্থিতিশীল ওপেনজেডিকে 11 বিল্ড নেই।

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

ওপেনজেডকে ১১ পৃষ্ঠায় বর্তমান অবস্থা সংক্ষিপ্তসারিত হয়েছে :

এই পৃষ্ঠায় পূর্বে উপলব্ধ আলপাইন লিনাক্স বিল্ডটি জেডিকে 11 জিএ হিসাবে সরানো হয়েছিল। এটি উত্পাদন-প্রস্তুত নয় কারণ এটি জিএ বিল্ড হিসাবে বিবেচিত হওয়ার জন্য পর্যাপ্তরূপে পরীক্ষা করা হয়নি। দয়া করে তাড়াতাড়ি অ্যাক্সেস JDK 12 এর আলপাইন লিনাক্স বিল্ডটি ব্যবহার করুন।

আলপাইনগুলির একমাত্র স্থিতিশীল ওপেনজেডিকে সংস্করণগুলি বর্তমানে আইসডটিয়া প্রকল্প দ্বারা সরবরাহিত 7 এবং 8 are

তবে - আপনি যদি অফিসিয়াল ওপেনজেডিকে বাদে অন্য কিছু বিবেচনা করতে ইচ্ছুক হন তবে আজুলের জুলু ওপেনজেডিকে একটি আকর্ষণীয় বিকল্প প্রস্তাব করা হয়েছে:

  • এটি আলপাাইন মসলে জাভা 11 সমর্থন করে (লেখার সময় হিসাবে 11.0.2 সংস্করণ);
  • এটি একটি শংসিত ওপেনজেডিকে বিল্ড, ওপেনজেডকে টিসিকে কমপ্লায়েন্স স্যুট ব্যবহার করে যাচাই করা হয়েছে;
  • এটি বিনামূল্যে, ওপেন সোর্স এবং ডকার রেডি ( ডকারহব )।

সহায়তার উপলভ্যতা এবং রোডম্যাপের জন্য দেখুন আজুল সমর্থন রোডম্যাপ

আপডেট, 3/6/19: গতকাল হিসাবে, openjdk11আলপাইন সংগ্রহস্থলগুলিতে উপলব্ধ! এটি আলপাইন ব্যবহার করে ধরে নেওয়া যেতে পারে:

apk --no-cache add openjdk11

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

এলটিএস জাভা চিত্রগুলির জন্য কেন অস্থির সিড সংস্করণ ব্যবহার করা হচ্ছে?

এটি একটি ন্যায্য প্রশ্ন / অনুরোধ। একটি স্থিতিশীল দেবিয়ান রিলিজের জন্য জাভা 11 সরবরাহের জন্য আসলে একটি উন্মুক্ত টিকিট রয়েছে:
https://github.com/docker-library/openjdk/issues/237

আপডেট, 26/12/18: সমস্যাটি সমাধান হয়েছে, এবং এখন ওপেনজেডকে 11 স্লিম চিত্রটি stretch-backportsওপেনজেডকে 11-এর ভিত্তিতে তৈরি করা হয়েছে যা সম্প্রতি উপলব্ধ করা হয়েছিল ( পিআর লিঙ্ক )।

ওপেনজেডকে ১১ এর জন্য স্লিম / হেডলেস / জেআরই প্যাকেজটি কেন একই জাতীয় ওপেনডিজিডি 8 প্যাকেজের তুলনায় এত বড়? এই মডিউল ফাইলটি কী যা ওপেনজেডকে 11-এ 135 এমবি নিয়ে আসে?

জাভা 9 মডিউল সিস্টেমটি প্রবর্তন করেছে, যা জার ফাইলগুলির তুলনায় গ্রুপিং প্যাকেজ এবং সংস্থানগুলির জন্য একটি নতুন এবং উন্নত পদ্ধতি। ওরাকল থেকে প্রাপ্ত এই নিবন্ধটি এই বৈশিষ্ট্যটির একটি খুব বিশদ পরিচয় দেয়:
https://www.oracle.com/corolve/features/unders سمج-

modulesফাইল JRE সঙ্গে জাহাজে সকল মডিউল থোকায়। মডিউলগুলির সম্পূর্ণ তালিকাটি মুদ্রিত হতে পারে java --list-modulesmodulesপ্রকৃতপক্ষে একটি খুব বড় ফাইল, এবং মন্তব্য হিসাবে এটিতে সমস্ত স্ট্যান্ডার্ড মডিউল রয়েছে এবং এটি তাই বেশ প্রস্ফুটিত।

তবে একটি বিষয় লক্ষণীয় তা হ'ল এটি প্রতিস্থাপন করে rt.jarএবং tools.jarযা অন্যান্য বিষয়গুলির মধ্যে অবহেলিত হয়ে যায়, তাই modulesপ্রি -9 ওপেনজেডিকে তৈরির সাথে তুলনা করার সময় আকারের হিসাব করার সময়, আকারগুলি rt.jarএবং tools.jarবিয়োগ করা উচিত (তারা কিছু মিলিয়ে 80 এমবি গ্রহণ করতে হবে) ।


9

07.2019 https://adoptopenjdk.net/ এর জাভা 11-এর জন্য সরকারী আলপাইন সমর্থন রয়েছে:

যাইহোক, মডিউলগুলি ( jmods , jlink) এখনও বিবেচনা করা হবে যখন কেউ ন্যূনতম অ্যাপ্লিকেশন একত্রিত করে।

দ্রষ্টব্য : স্লিম চিত্রগুলিতে কিছু মডিউল থাকে না (যেমন java.sql) - সেগুলি স্পষ্টভাবে বাদ দেওয়া হয় ( https://github.com/AdoptOpenJDK/openjdk-docker/blob/21b8393b9c23f94d6921a56cce27b026537c6ca2/11/jdk/avaine/slim-s2323 )


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