🛥️ مقدمه ای بر داکر: مفاهیم اصلی و مبانی برای مبتدیان

Docker مانند یک جعبه ابزار جادویی برای توسعه دهندگان است. این به آنها امکان می دهد برنامه های خود را در جعبه های کوچک و قابل حمل به نام کانتینر بسازند، ارسال کنند و مدیریت کنند. کانتینرها مانند اتاقهای مجازی هستند، اما نسبت به ماشینهای مجازی سنتی (VM) سریعتر و کارآمدتر هستند. به لطف داکر، کانتینرها بسیار محبوب شده اند و اکنون بخشی ضروری از توسعه نرم افزار مدرن هستند.
داکر چیست؟
Docker یک پلت فرم منبع باز است که استقرار برنامه های کاربردی در داخل کانتینرها را خودکار می کند. کانتینرها محیط های ایزوله ای هستند که شامل همه چیز مورد نیاز برای اجرای یک برنامه، از جمله کد، زمان اجرا، کتابخانه ها و ابزارهای سیستم هستند. Docker ابزارهایی برای ساخت، مدیریت و توزیع این کانتینرها در اختیار توسعه دهندگان قرار می دهد.
طرح کانتینر باز (OCI) چیست؟
را طرح کانتینر باز (OCI) یک ساختار حکومت باز است که در سال 2015 توسط بنیاد لینوکس ایجاد شد. هدف آن ایجاد استانداردهای صنعتی برای زمان اجرا کانتینر و مشخصات تصویر، تضمین قابلیت همکاری در سراسر اکوسیستم کانتینر است.
Docker در ابتدا زمان اجرا و فرمت های تصویری خود را توسعه داد. با این حال، ظهور کانتینرها و نیاز به استانداردسازی گسترده تر، Docker را بر آن داشت تا در فناوری زمان اجرا کانتینر خود مشارکت کند. اجرا کنید، به OCI. امروزه، اکوسیستم داکر به استانداردهای OCI پایبند است و کانتینرهای داکر را با سایر زمانها و ابزارهای سازگار با OCI سازگار میکند.
با هماهنگی با استانداردهای OCI، داکر تضمین میکند که کانتینرها و تصاویرش میتوانند در پلتفرمها و ابزارهای مختلف اجرا شوند و یک اکوسیستم کانتینری بازتر و مشارکتیتر را تقویت کنند.
چرا ظروف مفید هستند؟
- قابل حمل بودن: کانتینرها میتوانند روی هر سیستمی اجرا شوند که از زمانهای اجرا منطبق با OCI پشتیبانی میکند و اطمینان حاصل میکند که برنامهها به طور مداوم در محیطها رفتار میکنند.
- کارایی: کانتینرها هسته سیستم میزبان را به اشتراک می گذارند و در مقایسه با VM ها سبک وزن و سریع شروع می شوند.
- مقیاس پذیری: کانتینرها را می توان به راحتی برای تحمل بارهای مختلف کوچک یا بزرگ کرد.
- سازگاری: کانتینرها با کپسوله کردن تمام وابستگیها و پیکربندیها، مشکل «روی دستگاه من کار میکند» را کاهش میدهند.
کانتینرها در مقابل ماشین های مجازی در مقابل فلز لخت
فلز لخت:
- به طور مستقیم بر روی سخت افزار فیزیکی بدون هیچ گونه مجازی سازی اجرا می شود.
- حداکثر کارایی و دسترسی مستقیم به منابع سخت افزاری را ارائه می دهد.
- بهترین گزینه برای بارهای کاری با کارایی بالا و برنامه هایی که نیاز به کنترل کامل بر سخت افزار دارند.
ماشین های مجازی (VM):
- شامل یک سیستم عامل کامل، که آنها را سنگین تر می کند.
- به منابع بیشتری نیاز دارید و شروع به زمان بیشتری می برد.
- مناسب برای اجرای چندین محیط سیستم عامل بر روی یک ماشین فیزیکی.
ظروف:
- هسته سیستم عامل میزبان را به اشتراک بگذارید تا سبک وزن شوند.
- از حافظه کمتری استفاده کنید و سریع شروع کنید.
- ایده آل برای میکروسرویس ها و استقرار سریع.
جنبه | ظروف | ماشین های مجازی | فلز لخت |
---|---|---|---|
بهره وری منابع | بالا | متوسط | بالاترین |
زمان راه اندازی | ثانیه ها | دقیقه | N/A |
*انزوا * | در سطح فرآیند | سطح کامل سیستم عامل | انزوای فیزیکی کامل |
قابل حمل بودن | بسیار بالا | متوسط | پایین |
عملکرد | نزدیک به بومی | متوسط | بومی |
*موارد استفاده * | میکروسرویس ها، خطوط لوله CI/CD | برنامه های کاربردی قدیمی، تست سیستم عامل | محاسبات با کارایی بالا |
اصطلاحات داکر
- Dockerfile: یک فایل متنی با دستورالعمل ساخت تصویر داکر.
- تصویر: یک الگوی فقط خواندنی که برای ایجاد کانتینرها استفاده می شود. تصاویر از یک Dockerfile ساخته می شوند و از مشخصات تصویر OCI پیروی می کنند.
- ظرف: یک نمونه قابل اجرا از یک تصویر. کانتینرها را می توان راه اندازی کرد، متوقف کرد و حذف کرد.
- رجیستری: مخزنی برای تصاویر داکر. Docker Hub یک ثبت عمومی محبوب است و سایر ثبت های مطابق با OCI عبارتند از Harbor و Quay.
برگه تقلب خط فرمان Docker
0. دستورات پایه داکر
-
docker --version
: نسخه Docker را بررسی کنید. -
docker help
: نمایش دستورات و گزینه های Docker. -
docker info
: نمایش اطلاعات کل سیستم در مورد Docker.
1. تصاویر
-
docker images
: لیست تمام تصاویر محلی. -
docker pull <image>
: یک تصویر از داکر هاب دانلود کنید. -
docker build -t <image_name> .
: یک تصویر از یک Dockerfile در فهرست فعلی بسازید. -
docker rmi <image>
: یک تصویر را حذف کنید. -
docker tag <source_image> <new_image>
: یک تصویر را با یک نام جدید تگ کنید.
2. ظروف
-
docker run <image>
: یک ظرف از یک تصویر را اجرا کنید. -
docker run -it <image>
: یک ظرف را در حالت تعاملی اجرا کنید. -
docker run -d <image>
: یک ظرف را در حالت جدا شده اجرا کنید. -
docker ps
: کانتینرهای در حال اجرا را فهرست کنید. -
docker ps -a
: فهرست همه کانتینرها (از جمله کانتینرهای متوقف شده). -
docker stop <container>
: یک ظرف در حال اجرا را متوقف کنید. -
docker start <container>
: یک ظرف متوقف شده را راه اندازی کنید. -
docker restart <container>
: یک ظرف را دوباره راه اندازی کنید. -
docker rm <container>
: یک ظرف متوقف شده را بردارید. -
docker exec -it <container> <command>
: یک دستور را در داخل یک کانتینر در حال اجرا اجرا کنید.
3. مدیریت کانتینر
-
docker logs <container>
: مشاهده سیاهههای مربوط به یک ظرف. -
docker top <container>
: نمایش فرآیندهای در حال اجرا در یک ظرف. -
docker stats <container>
: نمایش یک جریان زنده از آمار استفاده از منابع. -
docker inspect <container>
: جزئیات یک ظرف یا تصویر را مشاهده کنید. -
docker rename <old_name> <new_name>
: نام یک ظرف را تغییر دهید.
4. شبکه سازی
-
docker network ls
: لیست تمام شبکه های Docker. -
docker network create <network_name>
: یک شبکه جدید ایجاد کنید. -
docker network connect <network> <container>
: یک کانتینر را به یک شبکه وصل کنید. -
docker network disconnect <network> <container>
: یک ظرف را از شبکه جدا کنید. -
docker network inspect <network>
: جزئیات یک شبکه را مشاهده کنید.
5. حجم ها
-
docker volume ls
: فهرست تمام جلدها. -
docker volume create <volume_name>
: یک حجم ایجاد کنید. -
docker volume inspect <volume>
: نمایش اطلاعات دقیق در مورد یک جلد. -
docker volume rm <volume>
: یک حجم را بردارید.
مثال: ایجاد یک داکر کانتینر ساده
بیایید یک ظرف Docker ساده ایجاد کنیم که یک اسکریپت پایتون را اجرا کند.
-
یک اسکریپت پایتون ایجاد کنید: کد زیر را در فایلی با نام ذخیره کنید
app.py
:
print("Hello, Docker!")
-
یک Dockerfile ایجاد کنید: فایلی به نام ایجاد کنید
Dockerfile
با محتوای زیر:
FROM python:3.9-slim
COPY app.py /app.py
CMD ["python", "/app.py"]
- تصویر داکر را بسازید:
docker build -t python-app .
- Docker Container را اجرا کنید:
docker run python-app
این خروجی خواهد داشت:
Hello, Docker!
نتیجه گیری
Docker ساخت، استقرار و اجرای برنامهها را با استفاده از کانتینرها آسان میکند. با پیروی از استانداردهای OCI، Docker اطمینان حاصل می کند که همه چیز در دنیای کانتینر به طور یکپارچه با هم کار می کند. کانتینرها بسیار کارآمد، قابل حمل و مقیاس پذیر هستند، به همین دلیل است که در قلب توسعه نرم افزار مدرن قرار دارند. اگر Docker و نحوه عملکرد آن با OCI را می شناسید، می توانید از این فناوری برای سرعت بخشیدن به گردش کار خود و اطمینان از کارکرد برنامه های شما بر روی هر پلتفرمی استفاده کنید.
هفته آینده به معماری داکر می پردازم، پس با ما همراه باشید.