ডকার কি এবং কেন: ডেভ অপস - ৪

containerdev-ops

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


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


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

 FROM anapsix/alpine-java
 MAINTAINER Maruf Hassan
 ARG JAR_FILE
 ADD target/${JAR_FILE} app.jar
 ENV JAVA_OPTS="-Dspring.profiles.active=dev"
 ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar


এখানে, 

- alpine-java কে বেজ ইমেজ হিসাবে ব্যবহার করা হয়েছে 

- আমার টার্গেট ফোল্ডারের ভিতরের একটা jar ফাইল কপি করে ডকার এর হোমে app.jar নাম রাখা হয়েছে 

- JAVA_OPTS একটা ভ্যালু সেট করা হয়েছে 

- সর্বশেষে app.jar ফাইলটাকে চালানো হয়েছে


ধন্যবাদ।