درک تصاویر داکر: ساخت، مدیریت و بهینه سازی کانتینرها

Summarize this content to 400 words in Persian Lang
تصاویر داکر: بلوک های ساختمانی کانتینرها
تصاویر داکر واحدهای اساسی هستند که برای ایجاد کانتینرهای داکر استفاده می شوند. آنها الگوهای فقط خواندنی هستند که محیطی را که یک کانتینر در آن اجرا می شود، از جمله بسته های نرم افزاری، فایل های پیکربندی، و وابستگی های لازم برای اجرای یک برنامه را تعریف می کنند. تصاویر Docker نقشههای اولیه کانتینرهای شما هستند و درک نحوه عملکرد آنها برای استفاده مؤثر از Docker در محیطهای توسعه و تولید بسیار مهم است.
1. تصاویر داکر چیست؟
الف تصویر داکر یک بسته سبک وزن، مستقل و قابل اجرا است که شامل همه چیزهایی است که برای اجرای یک نرم افزار لازم است: کد، زمان اجرا، کتابخانه ها، متغیرهای محیطی و تنظیمات. از تصاویر داکر برای ایجاد کانتینرها استفاده می شود که نمونه های در حال اجرا این تصاویر هستند.
نکات کلیدی درباره Docker Images:
فقط خواندنی: تصاویر داکر تغییرناپذیر هستند (فقط خواندنی). پس از ایجاد، یک تصویر را نمی توان تغییر داد. هر تغییری که در حین کار کردن یک کانتینر ایجاد شود، روی تصویر اصلی تأثیر نمیگذارد.
معماری لایه ای: تصاویر داکر از یک سیستم فایل لایه ای استفاده می کنند. هر لایه نشان دهنده یک تغییر یا افزودن به سیستم فایل است (مانند افزودن یک کتابخانه یا اصلاح یک فایل). لایه ها روی هم چیده می شوند تا تصویر نهایی ایجاد شود.
قابل حمل: تصاویر داکر را می توان در محیط های مختلف (توسعه، مرحله بندی، تولید) و بین سیستم های مختلف به اشتراک گذاشت.
2. ساختار تصاویر داکر
تصاویر Docker از چندین لایه تشکیل شدهاند و هر لایه نشاندهنده دستورالعملی در Dockerfile است (که اسکریپت مورد استفاده برای ساخت تصاویر Docker است). این لایه ها روی هم قرار می گیرند و به داکر اجازه می دهند از نظر ذخیره سازی و سرعت کارآمد باشد.
اجزای تصاویر داکر:
تصویر پایه: تصویر پایه، معمولاً از یک ثبت عمومی مانند Docker Hub. به عنوان مثال، ubuntu یا alpine تصاویر اغلب به عنوان تصاویر پایه برای برنامه های کاربردی سفارشی استفاده می شوند.
لایه های اضافی: هر دستورالعمل در Dockerfile یک لایه جدید به تصویر اضافه می کند. به عنوان مثال:
RUN apt-get update یک لایه با لیست بسته به روز شده اضافه می کند.
COPY و ADD دستورالعمل ها فایل ها یا دایرکتوری ها را به تصویر اضافه کنید.
CMD و ENTRYPOINT دستوری را تعریف کنید که هنگام شروع کانتینر اجرا شود.
فراداده تصویر: فراداده اطلاعاتی درباره تصویر مانند تصویر پایه، نویسنده، دستورات و متغیرهای محیطی ارائه می دهد.
نتیجه یک ساختار چند لایه است که در آن داکر از لایههای رایج برای کاهش تکرار در بین تصاویر استفاده مجدد میکند. این رویکرد میزان فضای دیسک مورد نیاز برای ذخیره تصاویر را به میزان قابل توجهی کاهش می دهد.
3. ساخت تصاویر داکر
تصاویر داکر معمولاً از یک ساخته می شوند Dockerfile، یک فایل متنی که حاوی مجموعه ای از دستورالعمل ها است که داکر برای ایجاد تصویر استفاده می کند. Dockerfile به تشریح نحوه ساخت تصویر، از تنظیم تصویر پایه گرفته تا پیکربندی محیط و نصب وابستگی ها، می پردازد.
مثال پایه داکرفایل:
# Use an official Python runtime as a base image
FROM python:3.8-slim
# Set the working directory in the container
WORKDIR /app
# Copy the current directory contents into the container
COPY . /app
# Install any dependencies specified in requirements.txt
RUN pip install –no-cache-dir -r requirements.txt
# Specify the command to run on container startup
CMD [“python”, “app.py”]
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این Dockerfile ساده کارهای زیر را انجام می دهد:
FROM python: 3.8-slim: با یک تصویر رسمی پایتون به عنوان پایه شروع می شود.
WORKDIR / برنامه: دایرکتوری کاری را در داخل کانتینر تنظیم می کند.
کپی کنید. /برنامه: محتویات فهرست محلی را در کانتینر کپی می کند.
نصب پیپ را اجرا کنید: هر وابستگی فهرست شده در را نصب می کند requirements.txt.
CMD [“python”, “app.py”]: دستوری را برای اجرا در هنگام شروع کانتینر تعریف می کند (در این حالت اجرا می شود app.py).
ساختن تصویر:
پس از ایجاد Dockerfile، می توانید از دستور زیر برای ساخت تصویر استفاده کنید:
docker build -t my-python-app .
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این دستور یک تصویر به نام ایجاد می کند my-python-app بر اساس Dockerfile در فهرست فعلی (.).
4. لایه های تصویر داکر و ذخیره سازی
یکی از مهم ترین ویژگی های تصاویر داکر استفاده از لایه ها است. هر دستورالعمل در Dockerfile یک لایه ایجاد میکند و Docker این لایهها را ذخیره میکند تا ساختها سریعتر شوند. هنگامی که یک تصویر را بازسازی می کنید، داکر از لایه هایی که تغییر نکرده اند مجددا استفاده می کند، که روند ساخت را سرعت می بخشد.
ذخیره لایه Docker:
ذخیره سازی: داکر لایه ها را در طول فرآیند ساخت ذخیره می کند. اگر چیزی در دستورالعمل Dockerfile تغییر نکرده باشد، داکر از لایه کش به جای بازسازی مجدد آن استفاده می کند.
عدم اعتبار کش: اگر Dockerfile یا زمینه (فایل ها و دایرکتوری های کپی شده در تصویر) را تغییر دهید، Docker حافظه پنهان لایه های آسیب دیده را باطل می کند و آنها را دوباره می سازد.
بهترین روش ها برای ذخیره سازی لایه ها:
به حداقل رساندن تغییرات لایه: دستوراتی را که احتمال تغییر کمتری دارند گروه بندی کنید (مانند RUN apt-get update) در بالای Dockerfile برای استفاده از حافظه پنهان.
استفاده کنید .dockerignore: از کپی کردن فایل های غیر ضروری (مانند فایل های توسعه محلی، گزارش ها) در تصویر با استفاده از یک .dockerignore فایل این می تواند به کاهش زمان ساخت و اندازه تصویر کمک کند.
5. مدیریت تصاویر داکر
هنگامی که تصاویر Docker را ساختید، می توانید آنها را به روش های مختلفی مدیریت کنید.
لیست تصاویر داکر:
با دستور زیر می توانید تمام تصاویر موجود در سیستم محلی خود را لیست کنید:
docker images
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
با این کار لیستی از تمام تصاویر به همراه نام مخزن، برچسب ها، شناسه تصویر، تاریخ ایجاد و اندازه آنها نمایش داده می شود.
برچسب گذاری تصاویر داکر:
شما می توانید یک تصویر را برای ارائه نسخه ها یا نام های مختلف تگ کنید. به عنوان مثال:
docker tag my-python-app myrepo/my-python-app:v1
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این را برچسب گذاری می کند my-python-app تصویر با v1 نسخه و myrepo مخزن
انتقال تصاویر به داکر هاب:
هنگامی که تصویر خود را ساختید و آن را برچسب گذاری کردید، می توانید آن را به یک رجیستری Docker (مانند Docker Hub) فشار دهید تا دیگران بتوانند آن را بکشند.
docker push myrepo/my-python-app:v1
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
کشیدن تصاویر از داکر هاب:
می توانید تصاویر از پیش ساخته شده را از Docker Hub (یا سایر رجیستری ها) با docker pull دستور:
docker pull python:3.8-slim
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این دستور دانلود خواهد شد python:3.8-slim تصویر از Docker Hub به دستگاه محلی شما.
6. بهینه سازی تصاویر Docker
ایجاد تصاویر Docker کارآمد و بهینه برای به حداقل رساندن استفاده از منابع و بهبود عملکرد ضروری است.
نکاتی برای بهینه سازی تصاویر Docker:
از تصاویر پایگاه رسمی استفاده کنید: با تصاویر پایه سبک و رسمی مانند alpine یا slim برای اندازه های کوچکتر تصویر
به حداقل رساندن لایه ها: برای کاهش تعداد لایه ها، دستورات را در Dockerfile ترکیب کنید.
حذف فایل های غیر ضروری: استفاده کنید dockerignore برای حذف فایل های غیر ضروری از زمینه ساخت.
از ساخت های چند مرحله ای استفاده کنید: ساخت های چند مرحله ای به شما این امکان را می دهند که فرآیند ساخت را از تصویر زمان اجرا نهایی جدا کنید و اندازه تصویر نهایی را کاهش دهید.
نمونه ای از ساخت چند مرحله ای:
# Build stage
FROM node:14 AS build
WORKDIR /app
COPY . .
RUN npm install && npm run build
# Final stage
FROM node:14-slim
WORKDIR /app
COPY –from=build /app/dist /app
CMD [“node”, “server.js”]
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
7. نتیجه گیری
تصاویر Docker ستون فقرات برنامه های کاربردی کانتینری هستند. آنها یک روش قابل حمل و کارآمد برای بسته بندی برنامه ها و همه وابستگی های آنها در یک واحد اجرایی ارائه می دهند. درک نحوه ساخت، مدیریت و بهینه سازی تصاویر Docker برای استفاده موثر از Docker در محیط های توسعه و تولید ضروری است.
معماری لایهای Docker، مکانیزمهای کش و خدمات رجیستری ایجاد و توزیع محیطهای قابل استفاده مجدد و سازگار در ماشینهای مختلف را آسان میکند و پیچیدگی استقرار را کاهش میدهد و تکرار سریع را امکانپذیر میسازد.
تصاویر داکر: بلوک های ساختمانی کانتینرها
تصاویر داکر واحدهای اساسی هستند که برای ایجاد کانتینرهای داکر استفاده می شوند. آنها الگوهای فقط خواندنی هستند که محیطی را که یک کانتینر در آن اجرا می شود، از جمله بسته های نرم افزاری، فایل های پیکربندی، و وابستگی های لازم برای اجرای یک برنامه را تعریف می کنند. تصاویر Docker نقشههای اولیه کانتینرهای شما هستند و درک نحوه عملکرد آنها برای استفاده مؤثر از Docker در محیطهای توسعه و تولید بسیار مهم است.
1. تصاویر داکر چیست؟
الف تصویر داکر یک بسته سبک وزن، مستقل و قابل اجرا است که شامل همه چیزهایی است که برای اجرای یک نرم افزار لازم است: کد، زمان اجرا، کتابخانه ها، متغیرهای محیطی و تنظیمات. از تصاویر داکر برای ایجاد کانتینرها استفاده می شود که نمونه های در حال اجرا این تصاویر هستند.
نکات کلیدی درباره Docker Images:
- فقط خواندنی: تصاویر داکر تغییرناپذیر هستند (فقط خواندنی). پس از ایجاد، یک تصویر را نمی توان تغییر داد. هر تغییری که در حین کار کردن یک کانتینر ایجاد شود، روی تصویر اصلی تأثیر نمیگذارد.
- معماری لایه ای: تصاویر داکر از یک سیستم فایل لایه ای استفاده می کنند. هر لایه نشان دهنده یک تغییر یا افزودن به سیستم فایل است (مانند افزودن یک کتابخانه یا اصلاح یک فایل). لایه ها روی هم چیده می شوند تا تصویر نهایی ایجاد شود.
- قابل حمل: تصاویر داکر را می توان در محیط های مختلف (توسعه، مرحله بندی، تولید) و بین سیستم های مختلف به اشتراک گذاشت.
2. ساختار تصاویر داکر
تصاویر Docker از چندین لایه تشکیل شدهاند و هر لایه نشاندهنده دستورالعملی در Dockerfile است (که اسکریپت مورد استفاده برای ساخت تصاویر Docker است). این لایه ها روی هم قرار می گیرند و به داکر اجازه می دهند از نظر ذخیره سازی و سرعت کارآمد باشد.
اجزای تصاویر داکر:
-
تصویر پایه: تصویر پایه، معمولاً از یک ثبت عمومی مانند Docker Hub. به عنوان مثال،
ubuntu
یاalpine
تصاویر اغلب به عنوان تصاویر پایه برای برنامه های کاربردی سفارشی استفاده می شوند. -
لایه های اضافی: هر دستورالعمل در Dockerfile یک لایه جدید به تصویر اضافه می کند. به عنوان مثال:
-
RUN apt-get update
یک لایه با لیست بسته به روز شده اضافه می کند. -
COPY
وADD
دستورالعمل ها فایل ها یا دایرکتوری ها را به تصویر اضافه کنید. -
CMD
وENTRYPOINT
دستوری را تعریف کنید که هنگام شروع کانتینر اجرا شود.
-
-
فراداده تصویر: فراداده اطلاعاتی درباره تصویر مانند تصویر پایه، نویسنده، دستورات و متغیرهای محیطی ارائه می دهد.
نتیجه یک ساختار چند لایه است که در آن داکر از لایههای رایج برای کاهش تکرار در بین تصاویر استفاده مجدد میکند. این رویکرد میزان فضای دیسک مورد نیاز برای ذخیره تصاویر را به میزان قابل توجهی کاهش می دهد.
3. ساخت تصاویر داکر
تصاویر داکر معمولاً از یک ساخته می شوند Dockerfile، یک فایل متنی که حاوی مجموعه ای از دستورالعمل ها است که داکر برای ایجاد تصویر استفاده می کند. Dockerfile به تشریح نحوه ساخت تصویر، از تنظیم تصویر پایه گرفته تا پیکربندی محیط و نصب وابستگی ها، می پردازد.
مثال پایه داکرفایل:
# Use an official Python runtime as a base image
FROM python:3.8-slim
# Set the working directory in the container
WORKDIR /app
# Copy the current directory contents into the container
COPY . /app
# Install any dependencies specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Specify the command to run on container startup
CMD ["python", "app.py"]
این Dockerfile ساده کارهای زیر را انجام می دهد:
- FROM python: 3.8-slim: با یک تصویر رسمی پایتون به عنوان پایه شروع می شود.
- WORKDIR / برنامه: دایرکتوری کاری را در داخل کانتینر تنظیم می کند.
- کپی کنید. /برنامه: محتویات فهرست محلی را در کانتینر کپی می کند.
-
نصب پیپ را اجرا کنید: هر وابستگی فهرست شده در را نصب می کند
requirements.txt
. -
CMD [“python”, “app.py”]: دستوری را برای اجرا در هنگام شروع کانتینر تعریف می کند (در این حالت اجرا می شود
app.py
).
ساختن تصویر:
پس از ایجاد Dockerfile، می توانید از دستور زیر برای ساخت تصویر استفاده کنید:
docker build -t my-python-app .
این دستور یک تصویر به نام ایجاد می کند my-python-app
بر اساس Dockerfile در فهرست فعلی (.
).
4. لایه های تصویر داکر و ذخیره سازی
یکی از مهم ترین ویژگی های تصاویر داکر استفاده از لایه ها است. هر دستورالعمل در Dockerfile یک لایه ایجاد میکند و Docker این لایهها را ذخیره میکند تا ساختها سریعتر شوند. هنگامی که یک تصویر را بازسازی می کنید، داکر از لایه هایی که تغییر نکرده اند مجددا استفاده می کند، که روند ساخت را سرعت می بخشد.
ذخیره لایه Docker:
- ذخیره سازی: داکر لایه ها را در طول فرآیند ساخت ذخیره می کند. اگر چیزی در دستورالعمل Dockerfile تغییر نکرده باشد، داکر از لایه کش به جای بازسازی مجدد آن استفاده می کند.
- عدم اعتبار کش: اگر Dockerfile یا زمینه (فایل ها و دایرکتوری های کپی شده در تصویر) را تغییر دهید، Docker حافظه پنهان لایه های آسیب دیده را باطل می کند و آنها را دوباره می سازد.
بهترین روش ها برای ذخیره سازی لایه ها:
-
به حداقل رساندن تغییرات لایه: دستوراتی را که احتمال تغییر کمتری دارند گروه بندی کنید (مانند
RUN apt-get update
) در بالای Dockerfile برای استفاده از حافظه پنهان. -
استفاده کنید
.dockerignore
: از کپی کردن فایل های غیر ضروری (مانند فایل های توسعه محلی، گزارش ها) در تصویر با استفاده از یک.dockerignore
فایل این می تواند به کاهش زمان ساخت و اندازه تصویر کمک کند.
5. مدیریت تصاویر داکر
هنگامی که تصاویر Docker را ساختید، می توانید آنها را به روش های مختلفی مدیریت کنید.
لیست تصاویر داکر:
با دستور زیر می توانید تمام تصاویر موجود در سیستم محلی خود را لیست کنید:
docker images
با این کار لیستی از تمام تصاویر به همراه نام مخزن، برچسب ها، شناسه تصویر، تاریخ ایجاد و اندازه آنها نمایش داده می شود.
برچسب گذاری تصاویر داکر:
شما می توانید یک تصویر را برای ارائه نسخه ها یا نام های مختلف تگ کنید. به عنوان مثال:
docker tag my-python-app myrepo/my-python-app:v1
این را برچسب گذاری می کند my-python-app
تصویر با v1
نسخه و myrepo
مخزن
انتقال تصاویر به داکر هاب:
هنگامی که تصویر خود را ساختید و آن را برچسب گذاری کردید، می توانید آن را به یک رجیستری Docker (مانند Docker Hub) فشار دهید تا دیگران بتوانند آن را بکشند.
docker push myrepo/my-python-app:v1
کشیدن تصاویر از داکر هاب:
می توانید تصاویر از پیش ساخته شده را از Docker Hub (یا سایر رجیستری ها) با docker pull
دستور:
docker pull python:3.8-slim
این دستور دانلود خواهد شد python:3.8-slim
تصویر از Docker Hub به دستگاه محلی شما.
6. بهینه سازی تصاویر Docker
ایجاد تصاویر Docker کارآمد و بهینه برای به حداقل رساندن استفاده از منابع و بهبود عملکرد ضروری است.
نکاتی برای بهینه سازی تصاویر Docker:
-
از تصاویر پایگاه رسمی استفاده کنید: با تصاویر پایه سبک و رسمی مانند
alpine
یاslim
برای اندازه های کوچکتر تصویر - به حداقل رساندن لایه ها: برای کاهش تعداد لایه ها، دستورات را در Dockerfile ترکیب کنید.
-
حذف فایل های غیر ضروری: استفاده کنید
dockerignore
برای حذف فایل های غیر ضروری از زمینه ساخت. - از ساخت های چند مرحله ای استفاده کنید: ساخت های چند مرحله ای به شما این امکان را می دهند که فرآیند ساخت را از تصویر زمان اجرا نهایی جدا کنید و اندازه تصویر نهایی را کاهش دهید.
نمونه ای از ساخت چند مرحله ای:
# Build stage
FROM node:14 AS build
WORKDIR /app
COPY . .
RUN npm install && npm run build
# Final stage
FROM node:14-slim
WORKDIR /app
COPY --from=build /app/dist /app
CMD ["node", "server.js"]
7. نتیجه گیری
تصاویر Docker ستون فقرات برنامه های کاربردی کانتینری هستند. آنها یک روش قابل حمل و کارآمد برای بسته بندی برنامه ها و همه وابستگی های آنها در یک واحد اجرایی ارائه می دهند. درک نحوه ساخت، مدیریت و بهینه سازی تصاویر Docker برای استفاده موثر از Docker در محیط های توسعه و تولید ضروری است.
معماری لایهای Docker، مکانیزمهای کش و خدمات رجیستری ایجاد و توزیع محیطهای قابل استفاده مجدد و سازگار در ماشینهای مختلف را آسان میکند و پیچیدگی استقرار را کاهش میدهد و تکرار سریع را امکانپذیر میسازد.