برنامه نویسی

فایل‌های کانتینر و داکرفایل: راهنمای جامع

Summarize this content to 400 words in Persian Lang

آ Dockerfile یا فایل ظرف یک سند مبتنی بر متن است که حاوی یک سری دستورالعمل برای ایجاد یک تصویر ظرف است. هر دستورالعمل موجود در فایل، یک لایه در بالای دستورالعمل قبلی ایجاد می کند و در نهایت یک تصویر ظرف کامل را تشکیل می دهد که می تواند بر روی هر سیستمی با نصب Docker اجرا شود.

فرمت های دستورالعمل: Shell و Exec Form

را RUN، CMD، و ENTRYPOINT دستورالعمل ها در Dockerfile یا Containerfile را می توان به دو شکل نوشت: Shell و Exec.

فرم اجرایی

از یک نحو آرایه JSON با دو نقل قول در اطراف هر عنصر استفاده می کند.
مثال: ENTRYPOINT [“/bin/bash”, “-c”, “echo hello”]

از مسائل مربوط به تجزیه رشته پوسته جلوگیری می کند.
بهترین استفاده برای ENTRYPOINT دستورالعمل ها، اغلب با CMD برای تنظیم آرگومان های پیش فرض

فرم پوسته

از یک نحو رشته ای ساده استفاده می کند که به طور خودکار توسط پوسته فرمان تفسیر می شود.
مثال: RUN apt-get update

بر سهولت استفاده و خوانایی تأکید دارد.

دستورالعمل های رایج Dockerfile

FROM

هدف: تصویر پایه را برای تصویر ظرف حاصل تنظیم می کند.

نحو: FROM :

مثال: FROM ubuntu:latest

توضیح: این دستورالعمل یک مرحله ساخت جدید را مقداردهی اولیه می کند و تصویر پایه را مشخص می کند. تمام دستورالعمل های بعدی بر اساس این پایه خواهد بود.

WORKDIR

دستور WORKDIR در Dockerfile دو هدف اصلی را دنبال می کند:

دایرکتوری را ایجاد کنید
دایرکتوری کاری را تنظیم کنید

ایجاد دایرکتوری:

اگر دایرکتوری مشخص شده توسط WORKDIR از قبل وجود نداشته باشد، ایجاد می شود.

دایرکتوری کاری را تنظیم کنید:

دایرکتوری کاری را برای هر دستورالعمل بعدی RUN، CMD، ENTRYPOINT، COPY و ADD تنظیم می کند.
تمام مسیرهای موجود در این دستورالعمل ها نسبت به WORKDIR خواهند بود مگر اینکه مسیرهای مطلق مشخص شده باشند.

هدف: دایرکتوری کاری را برای هر کدام تنظیم می کند RUN، CMD، ENTRYPOINT، COPY، و ADD دستورالعمل هایی که دنبال می شوند

نحو: WORKDIR /path/to/workdir

مثال: WORKDIR /app

توضیح: این دستورالعمل دایرکتوری کاری را روی آن تنظیم می کند /app. هر دستورالعمل بعدی در این دایرکتوری عمل خواهد کرد.

COPY

هدف: فایل ها یا دایرکتوری ها را از سیستم میزبان به سیستم فایل کانتینر کپی می کند.

نحو: COPY

مثال: COPY . /app

توضیح: این دستورالعمل همه فایل ها را از دایرکتوری فعلی روی هاست در کد کپی می کند /app دایرکتوری در کانتینر

RUN

ENTRYPOINT

هدف: دستوری را تعریف می کند که با شروع کانتینر اجرا می شود.

نحو:

فرم اجرایی: ENTRYPOINT [“”, “”, “”]

فرم پوسته: ENTRYPOINT

مثال: ENTRYPOINT [“/app/start.sh”]

توضیح: مجموعه این دستورالعمل /app/start.sh به عنوان دستور اصلی که هنگام راه اندازی کانتینر اجرا می شود.

CMD

هدف: پیش فرض هایی را برای یک کانتینر در حال اجرا ارائه می دهد. این آرگومان‌ها می‌توانند توسط آرگومان‌های ارائه‌شده توسط کاربر هنگام اجرای کانتینر لغو شوند.

نحو:

فرم اجرایی: CMD [“”, “”]

فرم پوسته: CMD

مثال: CMD [“–help”]

توضیح: این دستورالعمل آرگومان های پیش فرض را برای ENTRYPOINT فرمان

USER

هدف: کاربر را برای استفاده در هنگام اجرای تصویر و برای هر موردی مشخص می کند RUN، CMD، و ENTRYPOINT دستورالعمل هایی که دنبال می شوند

نحو: USER

مثال: USER appuser

توضیح: این دستورالعمل کاربر فعال را به تغییر می دهد appuser، که با اجتناب از اجرای به عنوان کاربر اصلی امنیت را افزایش می دهد.

LABEL

هدف: متادیتا را به صورت جفت کلید-مقدار به تصویر اضافه می کند.

نحو: LABEL =

مثال: LABEL version=”1.0″ description=”My app”

توضیح: این دستورالعمل ابرداده ای را ارائه می دهد که می تواند به شناسایی و مدیریت تصویر کمک کند.

EXPOSE

هدف: به Docker اطلاع می دهد که کانتینر در زمان اجرا به پورت های شبکه مشخص شده گوش می دهد.

نحو: EXPOSE

مثال: EXPOSE 8080

توضیح: این دستورالعمل برای اهداف مستندسازی استفاده می شود. در واقع پورت را منتشر نمی کند.

ENV

هدف: متغیرهای محیط را تنظیم می کند.

نحو: ENV =

مثال: ENV PATH=”/app/bin:$PATH”

توضیح: این دستورالعمل متغیر محیطی را تنظیم می کند PATH شامل شدن /app/bin.

ARG

هدف: متغیری را تعریف می کند که کاربران می توانند در زمان ساخت به سازنده با آن ارسال کنند docker build فرمان

نحو: ARG [=]

مثال: ARG VERSION=1.0

توضیح: این دستورالعمل یک متغیر زمان ساخت را تعریف می کند VERSION با مقدار پیش فرض 1.0.

VOLUME

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

نحو: VOLUME [“/path/to/dir”]

مثال: VOLUME /data

توضیح: این دستورالعمل تعریف می کند /data به عنوان مکانی برای ذخیره داده های پایدار.

مثال عملی

در اینجا یک مثال Dockerfile ساده برای نشان دادن این دستورالعمل ها وجود دارد:

# Use the official Ubuntu base image
FROM ubuntu:20.04

# Set the working directory
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Install curl
RUN apt-get update && apt-get install -y curl

# Set environment variables
ENV PATH=”/app/bin:$PATH”

# Define a build argument
ARG VERSION=1.0

# Add metadata
LABEL version=$VERSION description=”My Ubuntu-based app”

# Expose port 8080
EXPOSE 8080

# Define the default command to run
CMD [“–help”]

# Set the entrypoint
ENTRYPOINT [“/bin/bash”, “-c”]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این Dockerfile یک کانتینر ساده مبتنی بر اوبونتو با یک فهرست کار راه‌اندازی می‌کند، فایل‌های برنامه را کپی می‌کند، بسته‌های لازم را نصب می‌کند، متغیرهای محیطی را تنظیم می‌کند و آرگومان‌ها را می‌سازد، متادیتا را اضافه می‌کند، یک پورت را در معرض دید قرار می‌دهد، و هر دو را تعریف می‌کند. ENTRYPOINT و CMD.

آ Dockerfile یا فایل ظرف یک سند مبتنی بر متن است که حاوی یک سری دستورالعمل برای ایجاد یک تصویر ظرف است. هر دستورالعمل موجود در فایل، یک لایه در بالای دستورالعمل قبلی ایجاد می کند و در نهایت یک تصویر ظرف کامل را تشکیل می دهد که می تواند بر روی هر سیستمی با نصب Docker اجرا شود.

فرمت های دستورالعمل: Shell و Exec Form

را RUN، CMD، و ENTRYPOINT دستورالعمل ها در Dockerfile یا Containerfile را می توان به دو شکل نوشت: Shell و Exec.

فرم اجرایی

  • از یک نحو آرایه JSON با دو نقل قول در اطراف هر عنصر استفاده می کند.
  • مثال: ENTRYPOINT ["/bin/bash", "-c", "echo hello"]
  • از مسائل مربوط به تجزیه رشته پوسته جلوگیری می کند.
  • بهترین استفاده برای ENTRYPOINT دستورالعمل ها، اغلب با CMD برای تنظیم آرگومان های پیش فرض

فرم پوسته

  • از یک نحو رشته ای ساده استفاده می کند که به طور خودکار توسط پوسته فرمان تفسیر می شود.
  • مثال: RUN apt-get update
  • بر سهولت استفاده و خوانایی تأکید دارد.

دستورالعمل های رایج Dockerfile

FROM

  • هدف: تصویر پایه را برای تصویر ظرف حاصل تنظیم می کند.
  • نحو: FROM :
  • مثال: FROM ubuntu:latest
  • توضیح: این دستورالعمل یک مرحله ساخت جدید را مقداردهی اولیه می کند و تصویر پایه را مشخص می کند. تمام دستورالعمل های بعدی بر اساس این پایه خواهد بود.

WORKDIR

  • دستور WORKDIR در Dockerfile دو هدف اصلی را دنبال می کند:
    • دایرکتوری را ایجاد کنید
    • دایرکتوری کاری را تنظیم کنید
  • ایجاد دایرکتوری:
    • اگر دایرکتوری مشخص شده توسط WORKDIR از قبل وجود نداشته باشد، ایجاد می شود.
  • دایرکتوری کاری را تنظیم کنید:
    • دایرکتوری کاری را برای هر دستورالعمل بعدی RUN، CMD، ENTRYPOINT، COPY و ADD تنظیم می کند.
    • تمام مسیرهای موجود در این دستورالعمل ها نسبت به WORKDIR خواهند بود مگر اینکه مسیرهای مطلق مشخص شده باشند.
  • هدف: دایرکتوری کاری را برای هر کدام تنظیم می کند RUN، CMD، ENTRYPOINT، COPY، و ADD دستورالعمل هایی که دنبال می شوند

  • نحو: WORKDIR /path/to/workdir

  • مثال: WORKDIR /app

  • توضیح: این دستورالعمل دایرکتوری کاری را روی آن تنظیم می کند /app. هر دستورالعمل بعدی در این دایرکتوری عمل خواهد کرد.

COPY

  • هدف: فایل ها یا دایرکتوری ها را از سیستم میزبان به سیستم فایل کانتینر کپی می کند.
  • نحو: COPY
  • مثال: COPY . /app
  • توضیح: این دستورالعمل همه فایل ها را از دایرکتوری فعلی روی هاست در کد کپی می کند /app دایرکتوری در کانتینر

RUN

ENTRYPOINT

  • هدف: دستوری را تعریف می کند که با شروع کانتینر اجرا می شود.
  • نحو:

    • فرم اجرایی: ENTRYPOINT ["", "", ""]
    • فرم پوسته: ENTRYPOINT
  • مثال: ENTRYPOINT ["/app/start.sh"]

  • توضیح: مجموعه این دستورالعمل /app/start.sh به عنوان دستور اصلی که هنگام راه اندازی کانتینر اجرا می شود.

CMD

  • هدف: پیش فرض هایی را برای یک کانتینر در حال اجرا ارائه می دهد. این آرگومان‌ها می‌توانند توسط آرگومان‌های ارائه‌شده توسط کاربر هنگام اجرای کانتینر لغو شوند.
  • نحو:

    • فرم اجرایی: CMD ["", ""]
    • فرم پوسته: CMD
  • مثال: CMD ["--help"]

  • توضیح: این دستورالعمل آرگومان های پیش فرض را برای ENTRYPOINT فرمان

USER

  • هدف: کاربر را برای استفاده در هنگام اجرای تصویر و برای هر موردی مشخص می کند RUN، CMD، و ENTRYPOINT دستورالعمل هایی که دنبال می شوند
  • نحو: USER
  • مثال: USER appuser
  • توضیح: این دستورالعمل کاربر فعال را به تغییر می دهد appuser، که با اجتناب از اجرای به عنوان کاربر اصلی امنیت را افزایش می دهد.

LABEL

  • هدف: متادیتا را به صورت جفت کلید-مقدار به تصویر اضافه می کند.
  • نحو: LABEL =
  • مثال: LABEL version="1.0" description="My app"
  • توضیح: این دستورالعمل ابرداده ای را ارائه می دهد که می تواند به شناسایی و مدیریت تصویر کمک کند.

EXPOSE

  • هدف: به Docker اطلاع می دهد که کانتینر در زمان اجرا به پورت های شبکه مشخص شده گوش می دهد.
  • نحو: EXPOSE
  • مثال: EXPOSE 8080
  • توضیح: این دستورالعمل برای اهداف مستندسازی استفاده می شود. در واقع پورت را منتشر نمی کند.

ENV

  • هدف: متغیرهای محیط را تنظیم می کند.
  • نحو: ENV =
  • مثال: ENV PATH="/app/bin:$PATH"
  • توضیح: این دستورالعمل متغیر محیطی را تنظیم می کند PATH شامل شدن /app/bin.

ARG

  • هدف: متغیری را تعریف می کند که کاربران می توانند در زمان ساخت به سازنده با آن ارسال کنند docker build فرمان
  • نحو: ARG [=]
  • مثال: ARG VERSION=1.0
  • توضیح: این دستورالعمل یک متغیر زمان ساخت را تعریف می کند VERSION با مقدار پیش فرض 1.0.

VOLUME

  • هدف: یک نقطه اتصال با مسیر مشخص شده ایجاد می کند و آن را به عنوان نگهدارنده حجم های نصب شده خارجی از میزبان بومی یا سایر کانتینرها علامت گذاری می کند.
  • نحو: VOLUME ["/path/to/dir"]
  • مثال: VOLUME /data
  • توضیح: این دستورالعمل تعریف می کند /data به عنوان مکانی برای ذخیره داده های پایدار.

مثال عملی

در اینجا یک مثال Dockerfile ساده برای نشان دادن این دستورالعمل ها وجود دارد:

# Use the official Ubuntu base image
FROM ubuntu:20.04

# Set the working directory
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Install curl
RUN apt-get update && apt-get install -y curl

# Set environment variables
ENV PATH="/app/bin:$PATH"

# Define a build argument
ARG VERSION=1.0

# Add metadata
LABEL version=$VERSION description="My Ubuntu-based app"

# Expose port 8080
EXPOSE 8080

# Define the default command to run
CMD ["--help"]

# Set the entrypoint
ENTRYPOINT ["/bin/bash", "-c"]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این Dockerfile یک کانتینر ساده مبتنی بر اوبونتو با یک فهرست کار راه‌اندازی می‌کند، فایل‌های برنامه را کپی می‌کند، بسته‌های لازم را نصب می‌کند، متغیرهای محیطی را تنظیم می‌کند و آرگومان‌ها را می‌سازد، متادیتا را اضافه می‌کند، یک پورت را در معرض دید قرار می‌دهد، و هر دو را تعریف می‌کند. ENTRYPOINT و CMD.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا