محمد علی امینی
محمد علی امینی
خواندن ۳ دقیقه·۳ سال پیش

خودآموز داکر: درس ۰۳ - دیدکلی

در این درسگفتار می‌آموزی:

  • داکر دارای چه مولفه‌هایی است و نقش هرکدام چیست؟
  • فرایند اجرای یه کانتینر در داکر چگونه است؟

توجه. چون علاقه زیادی به آسان کردن [آسانیدن] و باقاعده کردن زبان دارم، واژگان زیادی ساخته‌ام؛ که بدلیل ناشناخته بودن اشان تنها برای شناساندن ازشان استفاده کرده‌ام [استفاده‌ام]. ریشه‌ی بیشتر این واژگان آشکار است؛ و در ویکی‌واژه تعریفشان کرده‌ام [تعریفته‌ام اشان] یا خواهم کرد [تعریفینم اشان].
امیدوارم خوشایندت باشد.
سخنی با خواننده. قصد دارم [قصتادم] خودآموز داکر را از پایه برای برنامه‌نویسان تازه‌کاری که هیچ آشنایی با داکر ندارند بنویسم. ولی چون امکان دسته‌بندی [گروهیستن] مقاله‌ها در ویرگول وجود ندارد، عنوان مقاله‌های این مجموعه را همانند زیر می‌گذارم:
خودآموز داکر: درس <شماره درس> - <موضوع درس>
که «شماره درس» از ۰۱ شروع شده [شروعارده]. پس، بعنوان مثال، برای یافتن درسگفتار دوم کافیه عبارت «خودآموز داکر: درس ۰۲» را در ویرگول جستجو کنی [بجویی].

معماری داکر

معماری داکر از نوع مشتری-خدمتگزار (client-server) است؛ این به این معنی است که ما برای ساختن و اجراکردن [اجراییدن] یه کانتینر از طریق خط فرمان (با استفاده از client داکر) با غول داکر (Docker daemon) گفتگو می‌کنیم.

دیدکلی از داکر
دیدکلی از داکر
  • غول داکر (Docker daemon):وظیفه این پودمان (module) مدیریت شی‌های داکر (شامل ایمیج‌ها، کانتینرها، شبکه‌ها، و ...) است.
  • کارخواه داکر (Docker client): اصلی‌ترین روشی که کاربران داکر برای گفتگو با داکر استفاده می‌کنند استفاده از دستور docker در خط‌فرمان است. برای مثال، اجرای شل sh بشکل تعاملی در کانتینر alpine:
docker run -it alpine sh
  • ایمیج (Images): یه منبع ارجاع فقط خواندی که شامل دستورهایی برای ساختن کانتینر است. درواقع، دستورهایی که برای ساختن و اجراکردن [اجراییدن] یه کانتینر نیازه با یه نحو (syntax) ساده در یه فایل بنام Dockerfile تعریف میشوند [تعریفشد]. برای مثال:
# Dockerfile FROM alpine:3.14 RUN apk add --no-cache mysql-client ENTRYPOINT [&quotmysql&quot]
توجه. هر ایمیج دارای یه فایل داکر است؛ ولی فایل داکر همان ایمیج نیست!
  • کانتینر (Containers): نمونه (instance) اجراپذیر یه ایمیج. درواقع، برابر مفهوم کانتینر در مجازی‌سازی است. برای مثال، در زیر لیست پوشه‌های / (ریشه) با دستور ls -la در کانتینر alpine گرفته‌شده (سمت راست فهرست ماشین‌های مجازی درحال اجرا است، و سمت چپ فهرست پوشه‌های مسیر /):
اجرای کانتینر alpine بشکل تعاملی
اجرای کانتینر alpine بشکل تعاملی

رابطه ایمیج با کانتینر

هر کانتینر با استفاده [استفادن] از یه ایمیج ساخته می‌شود [ساختشد]؛ و هر ایمیج می‌تواند برپایه یه ایمیج دیگر باشد. محتوای یه ایمیج، برخلاف کانتینر (که نویسپذیر است)، پس از ساخته‌شدن دیگر تغییر نمی‌کند [ندگرشد] (یعنی، نویسناپذیر است).

رابطه ایمیج با کانتینر
رابطه ایمیج با کانتینر
نکته. یه ایمیج/کانتینر برپایه یه ایمیج است؛ یعنی، همه فایل‌های ایمیج پایه در ایمیج برپایه (فرزند) دیده می‌شود، و تنها تغییرات در ایمیج‌های برپایه انبار می‌شوند. بعبارتی، اگر یکی از فایل‌های ایمیج پایه در ایمیج برپایه تغییر کرده‌باشد، تنها همان فایل تغییریافته در ایمیج برپایه انبار شده؛ نه در ایمیج پایه! و در ایمیج/کانتینرهای برپایه‌اش، آن فایل تغییریافته دیده نمی‌شود؛ بعبارتی فایل هه در آن لایه روسوارده (override) می‌شود.

فرایند اجرای کانتینر [اجرایش کانتینر]

برای فهمیدن بهتر کارکرد داکر بهتره گام‌هایی که داکر هنگام اجراکردن [اجراییدن] یه کانتینر طی می‌کند را مرور کنیم. با اجراییدن دستور زیر:

docker run -it alpine sh
  1. اگر ایمیج alpine در بین ایمیج‌های محلی وجود نداشته باشد، داکر از مخزن ثبت‌شده (پیشفرض https://hub.docker.com) بارگیری اش می‌کند.
  2. داکر بشکل خودکار یه کانتینر جدید می‌سازد؛ همانند استفاده [استفادن] دستی از دستور docker container create.
  3. داکر در لایه آخر ساخت کانتینر، یه فایل‌سیستم خواندنی-نوشتی به کانتینر هه اختصاص می‌دهد؛ تا ذخیره‌ی فایل‌های تغییریافته [دگریده] در کانتینر هه امکانپذیر شود.
  4. داکر یه رابط شبکه (network interface) برای متصل کردن [وصلیدن] کانتینر هه به شبکه‌ی پیشفرض ایجاد می‌کند (هرچند خودمان بطور صریح تنظیم نکرده باشیم).
  5. پس از بالاآمدن کانتینر هه، داکر دستور sh را درونش اجرا می‌کند [می‌اجراید]. درمورد دستور ما، چون داکر بشکل تعاملی اجرا شده (تگ it-) کانتینر هه به پایانه‌امان (terminal) وصل می‌شود؛ که این بهمان امکان استفاده [استفادن] از صفحه‌کلید و نمایشگرمان بعنوان ورودی/خروجی کانتینر هه را می‌دهد.
  6. پس از بستن پایانه‌امان (یا اجرای دستور exit) کانتینر متوقف می‌شود؛ ولی حذف نمی‌شود، و بعدا هم می‌توان دوباره شروعش کرد [شروعید اش] (شبیه خاموش شدن رایانه!).
اجرای یه کانتینر بشکل تعاملی
اجرای یه کانتینر بشکل تعاملی

چکیده. معماری داکر مشتری-خدمتگزاری است. با استفاده [استفادن] از یه پایانه درخواست‌هایمان را برای مدیریت کانتینرهایمان بهش می‌دهیم. کانتینرها از روی ایمیج‌ها ساخته می‌شوند. ایمیج‌ها پس از ساخته‌شدن تغییر نمی‌کنند. و فایل‌های درون کانتینرها تا هنگامیکه حذفشان نکرده‌ام در رایانه‌امان حفظ می‌شوند.

خب، تا اینجا با مفهوم‌های پایه‌ای داکر و فرایند ساخت کانتینر در داکر آشنا شدیم. از درسگفتار بعد کار با کارخواه (client) داکر را شروع می‌کنم [می‌شروعم].

توسعه‌دهنده سایت با چارچوب جنگو
شاید از این پست‌ها خوشتان بیاید