داکر چیست؟ کانتینرها برای غیربرنامهنویسان توضیح داده میشوند
داکر ابزاری است که یک برنامه را همراه با همه چیزهایی که برای اجرا لازم دارد — نسخه درست زبان، کتابخانهها، ابزارهای سیستم و تنظیمات — در یک واحد استاندارد به نام کانتینر بستهبندی میکند. کانتینر روی لپتاپ توسعهدهنده، سرور آزمایشی یا میزبان ابری به یک شکل اجرا میشود، و به مشکل کلاسیک «ولی روی کامپیوتر من کار میکرد» پایان میدهد. دستور ساخت یک کانتینر یک فایل متنی کوتاه به نام Dockerfile است.
چرا داکر وقتی با هوش مصنوعی میسازید مهم است
اگر برنامه شما یک بکاند دارد — یک API با Python، Node، C# یا Java — باید روی جایی اجرا شود که دقیقاً نرمافزار درست روی آن نصب باشد. داکر رایجترین راه برای تکرارپذیر کردن این کار است.
- استقرار بکاندها. بسیاری از میزبانها، از جمله Mythex، بکاندها را با ساختن یک کانتینر از روی یک Dockerfile مستقر میکنند. در Mythex، درخواست «یک Web API با C#» یا «یک بکاند Java» به شما برنامه بهعلاوه یک Dockerfile میدهد، و با انتشار، ایمیج ساخته و مستقر میشود (بکاندهای API).
- ترک یک پلتفرم. اگر برنامهای که با هوش مصنوعی ساختهاید را خروجی بگیرید، یک Dockerfile اجرای آن روی میزبان دیگر را بسیار آسانتر میکند. ببینید چطور برنامه ساختهشده با هوش مصنوعی را خروجی بگیرید و روی سرور خودتان میزبانی کنید.
- کار با توسعهدهندگان. توسعهدهندهای که به پروژه شما میپیوندد میتواند کل برنامه را با یک یا دو دستور راه بیندازد، بهجای اینکه یک روز را صرف نصب چیزها کند.
یک تشبیه روزمره: کانتینرهای حملونقل
پیش از کانتینرهای استاندارد حملونقل، بار تکتک و دستی بارگیری میشد — کیسه، بشکه، جعبه — و هر بندری آن را جور دیگری مدیریت میکرد. کانتینر فولادی استاندارد این را عوض کرد: یک بار بستهبندیاش کنید، و هر کشتی، جرثقیل، قطار یا کامیونی بدون توجه به محتوایش آن را جابهجا میکند.
داکر همین کار را برای نرمافزار میکند:
- Dockerfile فهرست بستهبندی و دستورالعمل است.
- ایمیج کانتینر بسته و مهرومومشده است.
- کانتینر در حال اجرا همان جعبهای است که روی کشتی به کار افتاده — اینجا، روی یک سرور.
- Docker Engine جرثقیل و کشتی است: نرمافزاری روی سرور که میداند هر کانتینری را اجرا کند.
داکر چطور کار میکند
| بخش | چیست |
|---|---|
| Dockerfile | یک فایل متنی با دستورالعمل گامبهگام برای ساختن ایمیج. |
| ایمیج (Image) | یک بسته فقطخواندنی: پایه سیستمعامل، محیط اجرا، کتابخانهها و کد شما. |
| کانتینر (Container) | یک نمونه در حال اجرا از یک ایمیج، جدا از برنامههای دیگر روی همان ماشین. |
| رجیستری (Registry) | جایی برای ذخیره و اشتراک ایمیجها، مثل Docker Hub یا رجیستری یک ارائهدهنده ابری. |
| Docker Engine | سرویس پسزمینهای که ایمیجها را میسازد و کانتینرها را اجرا میکند. رایگان و متنباز. |
| Docker Desktop | برنامهای برای Mac، Windows و Linux که موتور را همراه با رابط گرافیکی ارائه میدهد. |
کانتینرها در برابر ماشینهای مجازی: یک ماشین مجازی وانمود میکند یک کامپیوتر جداگانه با سیستمعامل خودش است، پس سنگین است و راهاندازیاش کند. یک کانتینر هسته سیستمعامل میزبان را به اشتراک میگذارد و فقط برنامه و فایلهایش را جدا میکند، پس معمولاً در چند ثانیه بالا میآید و حافظه بسیار کمتری مصرف میکند. میتوان چندین کانتینر را کنار هم روی یک سرور اجرا کرد.
یک مثال کامل: یک API کوچک Python
فرض کنید سازنده برنامه با هوش مصنوعی شما یک بکاند FastAPI با Python برای یک برنامه رزرو ساخته است. Dockerfile ممکن است این شکل را داشته باشد:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
خط به خط:
| خط | کاری که انجام میدهد |
|---|---|
FROM python:3.12-slim | از یک ایمیج رسمی شروع میکند که از قبل Python 3.12 را دارد. |
WORKDIR /app | داخل پوشه /app کانتینر کار میکند. |
COPY requirements.txt . و RUN pip install ... | فهرست کتابخانهها را کپی و نصب میکند. |
COPY . . | کد خود برنامه را کپی میکند. |
EXPOSE 8000 | یادداشت میکند که برنامه روی پورت 8000 گوش میدهد. |
CMD [...] | دستوری که وقتی کانتینر اجرا میشود وبسرور را راه میاندازد. |
به زبان ساده: «با Python 3.12 شروع کن. کتابخانههای فهرستشده در requirements.txt را نصب کن. کد را کپی کن. وبسرور را روی پورت 8000 راه بینداز.»
سپس یک توسعهدهنده (یا یک پلتفرم میزبانی) دو دستور اجرا میکند:
docker build -t booking-api .
docker run -p 8000:8000 booking-api
اولی ایمیج را میسازد و آن را booking-api نام میگذارد. دومی یک کانتینر راه میاندازد و پورت 8000 روی ماشین را به پورت 8000 داخل کانتینر وصل میکند. حالا API در حال اجراست — همانطور که روی هر سروری که داکر دارد اجرا میشود.
دقت کنید چه چیزی داخل ایمیج نیست: گذرواژهها و کلیدهای API. اینها هنگام راهافتادن کانتینر به آن داده میشوند، بهصورت متغیرهای محیطی، تا همان ایمیج بتواند در آزمایش و در محیط واقعی با تنظیمات متفاوت اجرا شود.
واژههای کلیدی
| واژه | معنی |
|---|---|
| کانتینر (Container) | یک بسته ایزوله و در حال اجرا از یک برنامه و وابستگیهایش. |
| ایمیج (Image) | قالبی که یک کانتینر از روی آن شروع میشود. |
| ایمیج پایه (Base image) | نقطه شروع در خط FROM یک Dockerfile، مثل python:3.12-slim یا node:22. |
| لایه (Layer) | هر گام Dockerfile یک لایه کششده اضافه میکند که ساخت مجدد را سریعتر میکند. |
| نگاشت پورت (Port mapping) | وصل کردن یک پورت روی میزبان به یک پورت داخل کانتینر. |
| Volume | فضای ذخیرهسازی که وقتی کانتینر جایگزین میشود باقی میماند. خود کانتینرها یکبارمصرف هستند. |
| Docker Compose | فایلی که چند کانتینر را که کنار هم اجرا میشوند توصیف میکند، مثل یک API بهعلاوه یک پایگاه داده. |
| Kubernetes | سیستمی برای اجرای کانتینرهای زیاد روی سرورهای زیاد. بیشتر برنامههای کوچک به آن نیاز ندارند. |
برداشتهای غلط رایج
- «داکر یک ماشین مجازی است.» سبکتر است: کانتینرها هسته میزبان را به اشتراک میگذارند.
- «دادهای که داخل کانتینر ذخیره شود امن است.» کانتینرها برای دور انداختن و جایگزین شدن ساخته شدهاند. هر چیزی که باید بماند — داده کاربر، آپلودها — باید در یک پایگاه داده، ذخیرهسازی فایل یا یک Volume باشد.
- «گذاشتن رازها در Dockerfile اشکالی ندارد چون خصوصی است.» ایمیجها اشتراک گذاشته و به رجیستریها push میشوند. بهجایش رازها را در زمان اجرا بدهید.
- «داکر برنامه را امن میکند.» ایزولهسازی کمک میکند، اما کانتینری که نرمافزار قدیمی با تنظیمات ضعیف اجرا میکند همچنان آسیبپذیر است.
- «هر برنامهای به داکر نیاز دارد.» یک سایت ایستا یا فرانتاند ساده معمولاً بهعنوان فایلهای ساده میزبانی میشود، بدون هیچ کانتینری.
- «Docker Desktop برای همه رایگان است.» موتور رایگان است؛ طبق شرایط داکر، Docker Desktop برای شرکتهای بزرگتر به اشتراک پولی نیاز دارد.
از سازنده هوش مصنوعی خود چه بپرسید
- «آیا این برنامه به Dockerfile نیاز دارد؟ اگر آری، هر خط آن را به زبان ساده توضیح بده.»
- «از یک ایمیج پایه کوچک و رسمی استفاده کن و نسخه زبان را ثابت کن.»
- «رازها را از داخل ایمیج بیرون نگه دار. آنها را در زمان اجرا از متغیرهای محیطی بخوان.»
- «مطمئن شو آپلودها و دادهها در پایگاه داده یا ذخیرهسازی فایل ذخیره میشوند، نه داخل کانتینر.»
- «یک فایل Docker Compose اضافه کن تا یک توسعهدهنده بتواند فرانتاند، API و پایگاه داده را با یک دستور بهصورت محلی اجرا کند.»
- «یک endpoint بررسی سلامت (health-check) اضافه کن تا میزبان بتواند بفهمد API بالاست یا نه.»
داکر در Mythex
برای استفاده از Mythex لازم نیست داکر را نصب یا اجرا کنید. پروژه شما در یک محیط ابری خصوصی اجرا میشود، و وقتی بکاندی بخواهید که به کانتینر نیاز دارد — برای مثال C#، Java یا یک سرویس سفارشی Node یا Python — Mythex برنامه را بهعلاوه یک Dockerfile مینویسد، آن را در محیط ابری پیشنمایش میکند و با انتشار مستقر میکند، بدون اینکه نیاز به راهاندازی میزبانی باشد (چطور فناوری انتخاب میشود). در نسخه Pro میتوانید پروژه را خروجی بگیرید یا با GitHub همگام کنید و Dockerfile را با خودتان ببرید. برای اینکه بکاند و فرانتاند چطور کنار هم قرار میگیرند، فرانتاند در برابر بکاند را ببینید.
پرسشها
داکر به زبان ساده چیست؟
داکر ابزاری است که یک برنامه را همراه با همه چیزهایی که برای اجرا لازم دارد — محیط اجرای زبان، کتابخانهها و تنظیمات — در یک واحد استاندارد به نام کانتینر بستهبندی میکند. کانتینر روی لپتاپ، سرور آزمایشی یا میزبان ابری به یک شکل اجرا میشود.
تفاوت ایمیج داکر و کانتینر چیست؟
ایمیج قالب بستهبندیشده و فقطخواندنی است: برنامه و وابستگیهایش که از یک Dockerfile ساخته شدهاند. کانتینر یک نسخه در حال اجرای آن ایمیج است. میتوانید از یک ایمیج چندین کانتینر راه بیندازید.
آیا داکر یک ماشین مجازی است؟
نه. ماشین مجازی یک کامپیوتر کامل با سیستمعامل خودش را شبیهسازی میکند. کانتینرها هسته سیستمعامل ماشین میزبان را به اشتراک میگذارند و فقط برنامه را جدا نگه میدارند، پس سریعتر راه میافتند و حافظه کمتری مصرف میکنند.
آیا داکر رایگان است؟
موتور داکر (Docker Engine)، هستهای که کانتینرها را اجرا میکند، رایگان و متنباز است. از سپتامبر ۲۰۲۶، شرایط داکر میگوید Docker Desktop برای پروژههای متنباز غیرتجاری و برای شرکتهایی با کمتر از ۲۵۰ کارمند و کمتر از ۱۰ میلیون دلار درآمد سالانه رایگان است؛ شرکتهای بزرگتر به اشتراک پولی نیاز دارند.
برای ساخت برنامه با هوش مصنوعی باید داکر یاد بگیرم؟
معمولاً نه. بسیاری از سازندههای برنامه با هوش مصنوعی کانتینرها را برایتان مدیریت میکنند. دانستن معنی Dockerfile کمک میکند بفهمید یک بکاند چطور بستهبندی میشود و اگر برنامه را خروجی بگیرید، بتوانید آن را جای دیگری اجرا یا میزبانی کنید.