আমি অনেক সময় বড় Docker ইমেজ ট্রাবলশুট করতে, বিল্ড কমপ্লিট হওয়ার জন্য অপেক্ষা করতে, এবং বর্জিত স্টোরেজ নিয়ে চিন্তা করতে কাটাতাম। মনে হতো যেন আমি কত নিশ্চিন্তে Dockerfile স্ট্রাকচার করি, ইমেজগুলো সবসময় প্রয়োজন থেকে বড় হয়ে যেত। সব পরিবর্তন হলো যখন আমি SlimToolkit (पूर्वে DockerSlim হিসেবে পরিচিত) আবিষ্কার করলাম।
এই টুল একটি Docker ইমেজ বিশ্লেষণ করে, চিনতে পারে রানটাইমে কী ফাইল এবং ডিপেন্ডেন্সি আসলে প্রয়োজন, এবং বাকি সব রিমুভ করে। এই গাইড ফলো করুন দেখতে SlimToolkit কীভাবে কাজ করে, এবং আমি যে ধাপগুলো ব্যবহার করলাম আমার Docker ইমেজ ছোট করার জন্য কিছুই ভাঙা ছাড়া।
SlimToolkit Docker ইমেজ অপ্টিমাইজেশন সহজ করে তোলে
SlimToolkit একটি ওপেন-সোর্স টুল যা অ্যাপ্লিকেশন কোড বা Dockerfile পরিবর্তন ছাড়া Docker ইমেজ সাইজ কমায়। এটি ম্যানুয়াল অপ্টিমাইজেশন স্টেপের প্রয়োজন দূর করে, যেমন প্যাকেজ ক্লিন করা বা বিল্ড স্টেজ রি-রাইট করা। বরং, SlimToolkit ইমেজ অপ্টিমাইজেশন অটোমেটিক্যালি হ্যান্ডেল করে এবং প্রক্রিয়াটি সিম্পল রাখে।
আপনি যখন একটি Docker ইমেজের ওপর SlimToolkit চালানেন, এটি একটি ডাইনামিক অ্যানালাইসিস করে কন্টেইনার কীভাবে চলে তা দেখে। এটি ট্র্যাক করে সত্যিকারের কোন ফাইল, লাইব্রেরি, এবং ডিপেন্ডেন্সি অ্যাপ্লিকেশন এক্সিকিউশনের সময় স্পর্শ করে। এই ডেটা ভিত্তিতে, এটি একটি নতুন, অপ্টিমাইজড ইমেজ তৈরি করে যেটি শুধু প্রয়োজনীয় কম্পোনেন্ট ধারণ করে। এটি আসল ইমেজ অপরিবর্তিত রাখে, প্রক্রিয়াটি সেফ এবং সহজে রিভার্সিবল করে।
SlimToolkit এক্সিস্টিং ইমেজের সাথে কাজ করে এবং Node.js, Python, Java, এবং Go সাপোর্ট করে, এডভান্সড Docker বা লিনাক্স জ্ঞান ছাড়া। এটি অধিকাংশ ওয়ার্কফ্লোতে স্মূথলি ইন্টিগ্রেট হয়, অনুপযোগী টুল এবং শেল রিমুভ করে কন্টেইনার সিকিউরিটি উন্নত করে। ছোট ইমেজ দ্রুত ডাউনলোড হয়, দ্রুত শুরু হয়, এবং কম রিসোর্স কনসিউম করে, যা CI/CD পাইপলাইনের জন্য বিশাল বিজয়।
Docker মাধ্যমে SlimToolkit ব্যবহার করা সবচেয়ে সহজ পদ্ধতি কারণ এটি কোনো লোকাল ইনস্টলেশন আপেক্ষা করে না। যতক্ষণ Docker ইনস্টল এবং চলছে, আপনি SlimToolkit সরাসরি ব্যবহার শুরু করতে পারেন।
প্রথমে, অফিসিয়াল SlimToolkit ইমেজ ডাউনলোড করুন নিচের docker কমান্ড ব্যবহার করে:
docker pull dslim/slim
SlimToolkit চালাতে Docker সকেট (/var/run/docker.sock) মাউন্ট করতে হয়। এটি কন্টেইনারকে পারমিশন দেয় আপনার লোকাল Docker ইঞ্জিনের সাথে যোগাযোগ করতে ইমেজ বিশ্লেষণ এবং অপ্টিমাইজ করার জন্য। নিশ্চিত করুন আপনি শুধু ট্রাস্টেড অফিসিয়াল ইমেজ ব্যবহার করছেন।
SlimToolkit দিয়ে Docker ইমেজ সাইজ কমান
অপ্টিমাইজেশন প্রক্রিয়া ডেমো করার জন্য, আমরা একটি স্ট্যান্ডার্ড Nginx ইমেজ স্লিম করব। প্রথমে, অফিসিয়াল, লেটেস্ট Nginx ইমেজ পুল করুন:
docker pull nginx:latest
Nginx-এর মতো স্ট্যান্ডার্ড অ্যাপ্লিকেশনের জন্য, আপনি বিল্ড কমান্ড সরাসরি চালাতে পারেন। SlimToolkit চেক করে কন্টেইনার আসলে কোন ফাইলগুলো ব্যবহার করে এবং অপ্রয়োজনীয়গুলো রিমুভ করে।
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim build --target nginx:latest --tag nginx-slim:latest
কিছু ল্যাঙ্গুয়েজ (যেমন Python বা Ruby)dependencies থাকতে পারে যা স্ট্যান্ডার্ড প্রোব সময় ট্রিগার হয় না। সেসব কেসে, একটি “ignore.txt” ফাইল তৈরি করুন SlimToolkit-কে বলে দিতে কোন ফোল্ডারগুলো রাখতে হবে, যেমন “/usr/local/lib/python3.11”। এটি SlimToolkit-কে এসেনশিয়াল রানটাইম ডিপেন্ডেন্সি রিমুভ করতে থেকে রোকবে।
আপনি কমান্ডটি একটি ভলিউম মাউন্ট দিয়ে চালাতে পারেন আপনার প্রিজারভেশন রুলস অন্তর্ভুক্ত করতে:
-v "$(pwd)":/target --preserve-path-file /target/ignore.txt
সাইজ পার্থক্য তুলনা: আসল বনাম স্লিমড ইমেজ
প্রক্রিয়া শেষ হলে, SlimToolkit অপ্টিমাইজড ইমেজটি লোকালি সেভ করে। আপনি আসল এবং স্লিমড ভার্সনের মাঝপথে সাইজ পার্থক্য এই কমান্ড দিয়ে তুলনা করতে পারেন:
docker images
আপনি সম্ভবত একটি ফার্ম রিডাকশন দেখবেন।
শেষে, আপনার নতুন অপ্টিমাইজড ইমেজ টেস্ট করুন নিশ্চিত করতে যে এটি প্রত্যাশা অনুযায়ী কাজ করছে:
docker run -it -p 8080:80 nginx-slim:latest
আপনার ব্রাউজার খুলুন এবং https://localhost:8080-এ যান। আপনি ডিফল্ট Nginx ওয়েলকাম পেজ দেখবেন, কিন্তু একটি উল্লেখযোগ্যভাবে ছোট কন্টেইনার ফুটপ্রিন্ট থেকে চলছে।
SlimToolkit কিছু কী কমান্ড প্রদান করে যা আপনাকে Docker ইমেজ বিশ্লেষণ এবং অপ্টিমাইজ করতে সাহায্য করে। এখানে সবচেয়ে উপযোগীগুলো:
| Command | Description |
|---|---|
| slim build | শুধু প্রয়োজনীয় ফাইল এবং ডিপেন্ডেন্সি রাখে Docker ইমেজ অপ্টিমাইজ করে, ইমেজ সাইজ কমায়। |
| slim xray | একটি Docker ইমেজ বিশ্লেষণ করে এবং সেটির ভিতরে কী আছে তা দেখায়, ফাইল, লেয়ার, এবং ডিপেন্ডেন্সিসহ। |
| slim lint | Dockerfile-এ এরর চেক করে বিল্ড ইস্যু প্রতিরোধ করতে। |
| slim debug | একটি স্লিমড Docker ইমেজ থেকে তৈরি চলমান কন্টেইনার ডিবাগ করতে দেয়। |
| slim profile | একটি Docker ইমেজ সম্পর্কে তথ্য সংগ্রহ করে এবং সাইজ এবং পারফরম্যান্স অ্যানালাইসিসের জন্য JSON রিপোর্ট আউটপুট করে। |
| slim merge | দুই Docker ইমেজকে একটি একক ইমেজে মার্জ করে। |
আপনি সকল উপলব্ধ SlimToolkit কমান্ড এবং তাদের ব্যবহার এই কমান্ড দিয়ে চেক করতে পারেন।
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim slim help
মনে রাখার লিমিটেশন
SlimToolkit Docker ইমেজ সাইজ কমাতে সাহায্য করে, কিন্তু আপনাকে কিছু ড্রব্যাক বিবেচনা করতে হবে:
- বড় ইমেজ স্লিম করতে বেশি সময় লাগতে পারে, তাই পরিকল্পনা অনুযায়ী করুন।
- যেহেতু টুলটি ডাইনামিক অ্যানালাইসিস ব্যবহার করে, যদি বিল্ড প্রক্রিয়া সময় একটি নির্দিষ্ট কোড পাথ এক্সিকিউট না হয়, SlimToolkit মনে করতে পারে একটি ডিপেন্ডেন্সি অনুপযোগী এবং সেটি ডিলিট করে দিতে পারে। সর্বদা আপনার স্লিমড ইমেজ ভালোভাবে টেস্ট করুন।
- এটি স্পেস বাঁচাতে bash বা curl-এর মতো টুলস প্রায়শই রিমুভ করে। আপনার প্রোডাকশন কন্টেইনারের ভিতরে ট্রাবলশুটিং এর জন্য এগুলো প্রয়োজন হলে, আপনাকে স্পষ্টভাবে SlimToolkit-কে বলতে হবে সেগুলো রাখতে।
সমাপন
SlimToolkit আপনার ওয়ার্কফ্লোতে যোগ করলে ডিপ্লয়মেন্ট গতিবান হয়, কনসিস্টেন্ট পারফরম্যান্স নিশ্চিত হয়, এবং কন্টেইনার ব্লোট মিনিমাইজ হয়। এটি আপনাকে ক্লিনার এবং আরও প্রফেশনাল Docker ইমেজ বিল্ড করতে সাহায্য করে আপনার আসল বিল্ড অপরিবর্তিত রেখে। অতিরিক্তভাবে, সেরা Docker ক্লিনিং প্র্যাকটিস আডপ্ট করা কার্যকর, ভালো-অর্গানাইজড কন্টেইনার সময়ের সাথে সাথে মেইনটেইন করতে সাহায্য করে।