مقالات
سرویس-داکر

فایل داکر ایمیج چیست و چه کاربردی دارد؟

داکر ایمیج یک فایل اصلی و غیرقابل‌تغییر شامل کدها، متعلقات و اطلاعات یک اپلیکیشن است که نقش مهمی در پلتفرم داکر و اجرای کانتینرها دارد.
اما به طور دقیق داکر ایمیج چیست و چه نقش مهمی در اجرای کانتینرها دارد؟ این فایل به واسطه ساختار خاصی که دارد، کمک زیادی به استفاده بهتر و تجربه کار بهتر در پلتفرم داکر کرده است. ما در این مقاله فایل داکر ایمیج را معرفی می‌کنیم و به بررسی ویژگی‌ها و کاربردهای آن می‌پردازیم. اگر به دنبال کسب اطلاعات بیشتر درباره داکر ایمیج هستید، به شما پیشنهاد می‌کنیم ادامه این مقاله را از دست ندهید.

معرفی داکر ایمیج

داکر ایمیج (Docker Image) فایلی برای اجرای کدهای نوشته شده کانتینر است. به عبارتی محتویات و دستورات درون این فایل، به اجرای مرحله Build یا ساخت کانتینر کمک می‌کند. از طرفی دستورات قرار گرفته در فایل ایمیج می‌تواند باعث شروع روند استفاده از کانتینر داکر شود. اگر با فایل‌های اسنپ شات (Snap Shot) در ماشین‌های مجازی (Virtual Machines) آشنایی داشته باشید، داکر ایمیج کاربردی شبیه به فایل‌های اسنپ شات دارد.
داکر پلتفرمی برای ساخت، اجرا و مدیریت برنامه‌ها در هر کانتینر است. داکر ایمیج نیز شامل کدها، متعلقات و ابزار موردنیاز برای اجرای یک اپلیکیشن است. زمانی که کاربر یک فایل ایمیج را اجرا می‌کند، کدها، محتویات و متعلقاتی که در کانتینر مربوط به آن ایمیج قرار دارند، اجرا می‌شوند.
فایل داکر ایمیج شامل لایه‌های متفاوتی از هم است؛ هرکدام از این لایه‌ها به نوعی از لایه قبلی سرچشمه می‌گیرند، با‌ این‌ حال با لایه قبلی خود متفاوت هستند. این مجموعه لایه‌های متفاوت که به صورت دومینو‌ وار به یکدیگر متصل هستند، ساختار اصلی مکانیزم کار داکر ایمیج هستند. از طرفی داکر ایمیج، یک فایل Read-Only است، یعنی نمی‌توان هنگام استفاده برای کانتینر محتویات درون آن را تغییر داد. اما زمانی که یک کانتینر ساخته شد، لایه‌ای در بالای فایل داکر ایمیج ظاهر می‌شود. شما از طریق این لایه می‌توانید تغییرات دستوری مدنظر در داکر ایمیج را اعمال کنید. فایل ایمیج Read-Only را می‌توان بین کانتینرهای مختلف به اشتراک گذاشت.

کاربردهای فایل داکر ایمیج

می‌توان گفت یک داکر ایمیج همه چیز برای اجرای یک اپلیکیشن بسته‌بندی‌شده در کانتینر را دارد. فایل‌هایی مانند کدهای مربوط، کتابخانه اطلاعات اپلیکیشن و تمامی متعلقات دیگر برنامه که در کانتینر قرار گرفته‌اند، می‌توانند به وسیله دستورالعمل‌های موجود در فایل Image اجرایی شوند. درواقع شما با استفاده از دستور Run در پلتفرم داکر، می‌توانید یک کانتینر جدید را از طریق فایل ایمیج بسازید و اجرایی کنید.
فایل‌های ایمیج به عنوان فایل‌هایی با قابلیت استفاده دوباره شناخته می‌شوند؛ یعنی شما می‌توانید آن‌ها را دوباره برای کانتینرهای دیگری نیز استفاده کنید. این مسئله به عنوان یکی از اصلی‌ترین مزایای پلتفرم داکر و فایل‌ داکر ایمیج نیز شناخته می‌شود؛ چرا که در بسیاری از مواقع نیاز است تا از یک ایمیج تکراری برای استفاده در کانتینرهای مختلف استفاده کرد. به همین دلیل این ویژگی کمک زیادی در صرفه‌جویی زمان می‌کند.

تفاوت داکر ایمیج و داکر کانتینر و ارتباط آن‌ها

کانتینرها مانند ظرف‌های ایزوله و امنی هستند که اپلیکیشن و متعلقات مربوط به آن در این کانتینرها قرار می‌گیرند. با استفاده از کانتینر می‌توان محتویات و متعلقات مربوط به یک اپلیکیشن را در پلتفرم داکر، بین سیستم‌های مختلف به اشتراک گذاشت.
با این حال داکر ایمیج مانند یک اسنپ شات یا تصویر لحظه‌ای از یک کانتینر است. به عبارتی محتویات درون این فایل می‌توانند در هر جایی کانتینری را به وجود آورند و آن را اجرا کنند؛ بنابراین نتیجه می‌گیریم که کانتینرها به فایل‌های ایمیج وابسته هستند و هر کانتینر برای به وجود آمدن نیاز به یک فایل ایمیج دارد.

ساختار داکر ایمیج چگونه است؟

  • تا اینجا داکر ایمیج را معرفی کردیم و متوجه شدیم این فایل یکی از مهم‌ترین رکن‌های ساخت کانتینر در پلتفرم داکر است. اما این فایل از چه بخش‌هایی تشکیل می‌شود؟
    یک فایل داکر ایمیج از لایه‌های گوناگونی تشکیل می‌شود که هرکدام از این لایه‌ها بخشی از اطلاعات موردنیاز برای پیکربندی و ساخت کانتینر را حمل می‌کنند. در ادامه قسمت‌های اصلی داکر ایمیج را معرفی کرده‌ایم.
    ایمیج اصلی یا Base Image: این قسمت لایه اول فایل داکر است و به کمک آن می‌توان به وسیله دستور Build در داکر، یک کانتینر جدید ساخت.
  • ایمیج جایگزین یا Parent Image: پرنت ایمیج یا Parent Image در سرویس داکر به عنوان جایگزینی برای Base Image شناخته می‌شود. با استفاده از این قسمت نیز می‌توانید لایه اول داکر ایمیج را بسازید.
  • لایه‌ها یا Layers: لایه‌ها بخش‌های بعدی در ساختار فایل داکر ایمیج هستند که به Base Image اضافه می‌شوند. هرکدام از این لایه‌ها شامل دستورات و کدنویسی‌های متفاوتی هستند که به اجرای کامل کانتینر کمک می‌کنند. هرکدام از این لایه‌ها از طریق مسیر /var/lib/docker/aufs/diff یا دستور تاریخچه داکر قابل مشاهده هستند.
  • لایه کانتینر یا Container Layer: با توجه به این که داکر ایمیج فایل غیرقابل‌تغییری دارد، نیاز به لایه‌ای برای اضافه‌کردن دستورات احتمالی به کانتینر است. به همین دلیل داکر ایمیج تنها یک کانتینر جدید را نمی‌سازد، بلکه لایه دیگری به نام Container Layer در کنار آن ایجاد می‌کند که به کمک آن بتوانید دستورات جدید مدنظر خود را در کانتینر اعمال کنید.
  • داکر آشکار یا Docker Manifest: داکر آشکار یکی دیگر از بخش‌های داکر است که به صورت اختیاری می‌توان آن را به داکر ایمیج اضافه کرد. این قسمت از فرمت JSON (JavaScript Object Notation) برای تعریف هر ایمیج استفاده می‌کند.

کلام آخر

در این مقاله داکر ایمیج (Docker Image) را معرفی و بررسی کردیم. همان‌طور که در مقاله خواندیم، دانستیم که این فایل، یکی از ارکان اصلی در ساخت کانتینر در پلتفرم داکر است. داکر ایمیج به عنوان یک فایل غیرقابل‌تغییر شناخته می‌شود که از آن برای ساخت کانتینرهای مختلف می‌توان استفاده کرد. همچنین فایل داکر ایمیج لایه‌های مختلفی دارد که هرکدام از آن‌ها با کدهای متفاوتی نوشته شده‌اند و نقش متفاوتی در ایجاد یک داکر ایمیج دارند.
داکر ایمیج به عنوان یک فایل مادر برای ایجاد کانتینرها شناخته می‌شود؛ بنابراین برای آشنایی کامل با پلتفرم داکر و استفاده از هاست ابری داکر، باید با این فایل آشنایی داشته باشید. امیدواریم از خواندن این مقاله نهایت استفاده را برده باشید.