TGViewer
Software Philosophy Software Philosophy @softwarephilosophy · 3.48K subscribers
Post #2239 2.72K
کش در دستور docker build

دستور docker build برای ساخت ایمیج‌های داکر استفاده می‌شود. این دستور به صورت لایه‌ای عمل می‌کند و هر لایه یک تغییر در ایمیج را ایجاد می‌کند. این لایه‌ها به صورت مجزا ذخیره می‌شوند و در صورت نیاز می‌توان از آن‌ها مجدد استفاده کرد.

برای اینکه دستور docker build سریع‌تر عمل کند، از قابلیت کش استفاده می‌شود. این قابلیت باعث می‌شود که لایه‌هایی که قبلاً ساخته شده‌اند، مجدداً ایجاد نشوند و تنها لایه‌هایی که تغییر کرده‌اند، مجدداً ساخته شوند.

نحوه کار کش در دستور docker build
دستور docker build ابتدا فایل Dockerfile را بررسی می‌کند و لایه‌های مورد نیاز برای ساخت ایمیج را تعیین می‌کند. سپس برای هر لایه، یک کانتینر موقت ایجاد می‌کند و تغییرات مورد نظر را در آن اعمال می‌کند. در نهایت، محتویات کانتینر موقت را به عنوان یک لایه جدید در ایمیج ذخیره می‌کند.

اگر لایه‌ای قبلاً ساخته شده باشد، دستور docker build آن لایه را از کش می‌خواند و مجدداً آن را نمی‌سازد. تنها در صورتی که تغییراتی در فایل‌های لایه ایجاد شده باشد، دستور docker build آن لایه را مجدداً می‌سازد.

نحوه فعال کردن کش در دستور docker build
کش به صورت پیش‌فرض در دستور docker build فعال است. اما می‌توانید با استفاده از گزینه --no-cache آن را غیرفعال کنید.
برای فعال کردن کش در دستور docker build می‌توانید از گزینه --cache-from استفاده کنید. این گزینه به شما اجازه می‌دهد که مشخص کنید که از کدام ایمیج‌ها برای کش استفاده شود.

نحوه پاک کردن کش در دستور docker build
برای پاک کردن کش در دستور docker build می‌توانید از گزینه --cache-clean استفاده کنید. این گزینه باعث می‌شود که تمام لایه‌های کش شده پاک شوند.

مثال
فرض کنید که فایل Dockerfile زیر را دارید:

FROM ubuntu:latest 
RUN apt-get update && apt-get install -y nginx EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]

این فایل Dockerfile یک ایمیج داکر از nginx ایجاد می‌کند.
برای ساخت این ایمیج، دستور زیر را اجرا کنید:

docker build -t my-nginx .

این دستور ابتدا فایل Dockerfile را بررسی می‌کند و متوجه می‌شود که این ایمیج از دو لایه تشکیل شده است:
لایه اول ایمیج ubuntu:latest را به عنوان پایه استفاده می‌کند.
لایه دوم بسته nginx را نصب می‌کند و پورت 80 را برای استفاده باز می‌کند.

دستور docker build ابتدا لایه اول را می‌سازد. این لایه از قبل ساخته شده است، بنابراین دستور docker build آن را از کش می‌خواند.

سپس دستور docker build لایه دوم را می‌سازد. این لایه قبلاً ساخته نشده است، بنابراین دستور docker build آن را مجدداً می‌سازد.

در نهایت، دستور docker build ایمیج my-nginx را با استفاده از دو لایه ساخته شده ایجاد می‌کند.

اگر تغییراتی در فایل Dockerfile ایجاد کنید و دوباره دستور docker build را اجرا کنید، دستور docker build تنها لایه‌هایی را که تغییر کرده‌اند مجدداً می‌سازد. به عنوان مثال، اگر بسته nginx را به نسخه جدیدی به‌روزرسانی کنید، دستور docker build تنها لایه دوم را مجدداً می‌سازد.

_______

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنت‌ها به اشتراک بگذارید.

#هوتن_همتی (لینکدین)

کانال تلگرام:
@SoftwarePhilosophy

_______
  • 👍 13
  • ❤ 1
  • 🔥 1
  • 👏 1
More from @softwarephilosophy
  1. Sep 27, 2026نگو JEV بگو System One! دنیل کانمن (Daniel Kahneman) توی کتاب معروفش «تفکر، سریع و کند» (T…
  2. Sep 23, 2026بازنویسی کل GitHub Copilot Runtime با Rust 🔶 حدود ۱۲۰،۰۰۰ دلار هزینه توکن و سه هفته وقت ی…
  3. Sep 15, 2026ورک‌شاپ «AI Agents in C# (MAF)» در این ورک‌شاپ به بررسی امکانات جدید برنامه‌نویسی با کتابخ…
  4. Sep 12, 2026کد مدریت شده (Managed Code) در دات‌نت یعنی چی؟ ▫️به زبان ساده: کد مدریت شده (Managed Code)…
  5. Sep 5, 2026آشنایی با Attributeها در سی‌شارپ در سی شارپ، Attributeها برای اضافه کردن metadata یا اطلاع…
  6. Aug 25, 2026اگر در دات نت Agent، MCP Server یا ابزارهای مبتنی بر هوش مصنوعی توسعه میدهی، این پروژه میت…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →