داکر (Docker) پلتفرمی برای توسعه، استقرار و اجرای برنامهها در داخل کانتینرهاست. داکر اساساً مترادف با کانتینرسازی است. اگر در حال حاضر یک توسعهدهنده نرمافزار یا دانشمند داده هستید، Docker در آینده شماست.
کانتینرها برای بهبود امنیت، تکرارپذیری و مقیاسپذیری در توسعهٔ نرم افزار و علم داده بسیار مفید هستند. ظهور آنها یکی از مهمترین روندهای تکنولوژی امروز است. این مقاله به شما کمک میکند تا چشمانداز مفهومی داکر را درک کنید (و در طول مسیر پیتزا درست کنید.)!
فهرست مطالب
داکر چیست؟ استعارههایی برای فهم بهتر داکر
مفاهیم اصلی داکر
آشپزی با داکر! دستورالعمل کار با داکر در قالب آشپزی
ابتدا، میخواهیم برای فهم بهتر داکر از استعاره کمک بگیریم. استعاره به معنی نماد انتزاعی از چیز دیگر است. استعارهها به ما کمک میکنند چیزهای جدید را درک کنیم. به عنوان مثال، استعاره یک ظرف فیزیکی به ما کمک میکند تا به سرعت ماهیت یک ظرف مجازی را درک کنیم.
استعارههایی برای فهم بهتر داکر
داکر، ظرف است.
یک ظرف داکر مانند یک ظرف پلاستیکی:
چیزها را نگه میدارد: درواقع ظرف از مواد داخل خود نگهداری میکند.
قابل حمل است: میتوان از آن در دستگاه شما، دستگاه همکارتان یا سرورهای یک ارائه دهنده ابر (مانند AWS) استفاده کرد. چیزی شبیه به جعبهٔ لقمههای دوران کودکی که با خودتان از خانه به مدرسه میبردید.
رابطهای واضح برای دسترسی دارد: ظرف فیزیکی ما دارای درپوشی برای باز کردن، گذاشتن و بیرون آوردن اشیا است. به طور مشابه، یک کانتینر داکر دارای مکانیسمهای مختلفی برای ارتباط با دنیای خارج است. دارای پورتهایی است که میتوان آنها را برای تعامل از طریق مرورگر باز کرد. میتوانید آن را برای تعامل با دادهها از طریق خط فرمان پیکربندی کنید.
میتوان آن را از یک مکان دور تهیه کرد: میتوانید در صورت نیاز یک ظرف پلاستیکی خالی دیگر از آمازون یا دیجی کالا تهیه کنید. آمازون ظروف پلاستیکی خود را از تولیدکنندگانی میگیرد که هزاران نفر آنها را از یک قالب جدا میکنند. کانتینر Docker، یک رجیستری خارج از سایت تصویری را که مانند یک قالب است برای کانتینر شما نگه میدارد. سپس هنگامی که به یک ظرف نیاز دارید، میتوانید از روی تصویر آن را بسازید.
برخلاف یک کانتینر مجازی داکر، یک ظرف پلاستیکی جدید از آمازون برای شما هزینه دارد و یک کپی از غذای شما همراه آن نخواهد بود.
داکر، نمونهها را زنده میکند.
راه دومی که میتوانید در مورد کانتینر داکر فکر کنید، این است که داکر به نمونهها جان میبخشد. داکر فقط کد نیست. این کدی است که چیزی را زنده کردهاست. مانند سایر موجودات زنده، این نمونه در نهایت میمیرد. به این معنی که ظرف خاموش میشود.
کانتینر داکر، یک طرح اولیه است که زنده شدهاست.
داکر، نرمافزار است.
علاوه بر استعاره کانتینر و استعاره نمونه زنده، میتوانید کانتینر داکر را به عنوان یک برنامهٔ نرمافزاری در نظر بگیرید. داکر نرمافزار است. در ابتداییترین سطح خود مجموعهای از دستورالعملهاست که بیتهای دیگر را دستکاری میکند.
در حالی که یک کانتینر داکر در حال اجرا است، معمولاً برنامههایی در داخل آن در حال اجرا است. برنامههای موجود در یک کانتینر اقداماتی را انجام میدهند تا برنامهٔ شما کاری انجام دهد.
برای مثال، ممکن است کد موجود در ظرف Docker، محتوایی را که در حال حاضر در این صفحه وب میخوانید برای شما ارسال کرده باشد. یا ممکن است فرمان صوتی شما را به آمازون الکسا ببرد و آن را به دستورالعملهایی رمزگشایی کند که برنامه دیگری در ظرف دیگری از آن استفاده میکند.
با داکر میتوانید چندین کانتینر را به طور همزمان روی یک ماشین میزبان اجرا کنید. میتوان مانند سایر برنامههای نرمافزاری، کانتینرهای Docker را اجرا، بازرسی، متوقف و حذف کرد.
مفاهیم اصلی داکر
ماشینهای مجازی
ماشینهای مجازی، پیشساز کانتینرهای داکر هستند. درواقع ماشینهای مجازی، یک برنامهٔ کاربردی و وابستگیهای آن را ایزوله میکنند. با این حال، کانتینرهای Docker نسبت به ماشینهای مجازی برتری دارند چون منابع کمتری مصرف میکنند، بسیار قابل حمل هستند و چرخش سریعتری دارند.
تصویر داکر
تصویر چیست؟ معنای اصطلاح تصویر در زمینهٔ Docker با یک تصویر فیزیکی مطابقت ندارد.
تصاویر داکر بیشتر شبیه طرحهای اولیه، برش کوکیها یا قالبها هستند. تصاویر الگوی اصلی تغییرناپذیری هستند که برای ساخت ظروف کاملاً مشابه استفاده میشود.
یک تصویر حاوی Dockerfile، کتابخانهها و کدهایی است که برنامهٔ شما برای اجرا نیاز دارد و همگی با هم جمع شدهاند.
داکر فایل (Dockerfile)
Dockerfile فایلی است با دستورالعملهایی برای اینکه Docker چگونه باید تصویر شما را بسازد.
داکر فایل به تصویر پایهای اشاره دارد که برای ساخت لایهٔ اولیهٔ تصویر استفاده میشود. تصاویر پایهٔ رسمی محبوب شامل پایتون، اوبونتو و آلپاین است.
طبق دستورالعملهای موجود در Dockerfile، میتوان لایههای اضافی را در بالای لایههای تصویر پایه قرار داد. به عنوان مثال، یک Dockerfile برای یک برنامهٔ یادگیری ماشینی میتواند به Docker بگوید NumPy، Pandas و Scikit-learn را در یک لایهٔ میانی اضافه کند.
در نهایت، یک لایهٔ نازک و قابل نوشتن بر اساس کد Dockerfile روی لایههای دیگر قرار میگیرد. (شما میدانید که یک لایهٔ نازک اندازه کوچکی دارد زیرا به طور شهودی استعارهٔ نازک را درک میکنید)
کانتینر داکر (Container)
یک تصویر Docker به همراه دستور docker run image_name، یک محفظه را از یک تصویر ایجاد و راهاندازی میکند.
رجیستری کانتینر
اگر میخواهید افراد دیگر بتوانند از تصویر شما کانتینر بسازند، تصویر را به یک رجیستری کانتینر ارسال میکنید. Docker Hub بزرگترین رجیستری و پیشفرض است.
برای اینکه بیشتر متوجه اجزا و مفاهیم داکر شوید، یک دستور پخت آشپزی با مفاهیم داکر آوردهایم.
آشپزی با داکر! دستورالعمل کار با داکر در قالب آشپزی
تصور کنید کار کردن با داکر مثل درست کردن پیتزاست.
دستور غذا مانند Dockerfile است. به شما میگوید برای رسیدن به هدف نهایی خود چه کاری انجام دهید.
مواد تشکیل دهنده، لایهها هستند. برای این پیتزا نیاز به پوسته، سس و پنیر دارید.
به دستور غذا و مواد ترکیب شده به عنوان یک کیت یکپارچه برای تهیهٔ پیتزا فکر کنید. این تصویر داکر است.
دستورالعمل (Dockerfile) به ما میگوید که قرار است چه کاری انجام دهیم.
پوسته از پیش ساخته شده و تغییرناپذیر است، مانند یک تصویر اصلی اوبونتو. این لایهٔ پایینی است و قبل از همه ساخته میشود.
سپس مقداری پنیر اضافه کنید. افزودن این لایهٔ دوم به پیتزا مانند نصب یک کتابخانه خارجی است – برای مثال NumPy.
سپس روی پنیر مقداری ریحان بپاشید. ریحان مانند کد موجود در فایلی است که برای اجرای برنامه خود نوشتهاید.
فری که پیتزا را داخل آن میگذارید تا آماده شود، مانند سکوی داکر است. فر را در خانه خود نصب کنید تا بتوانید با آن چیزهایی درست کنید. به طور مشابه، Docker را روی رایانه خود نصب کنید تا بتوانید ظروف را بپزید.
فر خود را با چرخاندن یک دستگیره روشن کنید. دستور docker run image_name مانند دستگیره شما است. (محفظه شما را ایجاد و راهاندازی میکند.)
پیتزای پخته شده مانند ظرف داکر است.
خوردن پیتزا مثل استفاده از اپلیکیشن شماست.
مانند درست کردن پیتزا، ساختن یک اپلیکیشن در ظرف داکر کمی کار میبرد، اما در پایان شما چیزی عالی دارید. لذت ببرید.