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

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
.