
مقدمه
امروزه ابزارهای مختلفی برای سادهسازی فرآیندهای توسعه نرمافزار در دسترس هستند که یکی از مهمترین این ابزارها داکر است.
داکر به شما این امکان را میدهد که برنامهها را در محیطهای ایزوله اجرا کنید و به این ترتیب به راحتی میتوانید اپلیکیشنها و سرویسها را در هر محیطی که بخواهید، بدون دغدغه مشکلات وابستگیها و تنظیمات، اجرا کنید.
این مقاله مهندسی داده به صورت جامع و کامل به معرفی داکر، مفاهیم کلیدی آن مانند Dockerfile، Docker Compose و معماری داکر پرداخته و دستورات کاربردی آن را به شما معرفی میکند.
اگر می خواهید در با مفهوم Apache Hadoop در بخش Data Engineering بیشتر آشنا بشید، نوشته زیر را مطالعه کنید:
در این نوشته شما می خوانید
داکر چیست؟
داکر یک پلتفرم برای بستهبندی، توزیع و اجرای برنامهها در کانتینرها است.
این کانتینرها به شما اجازه میدهند که برنامهها را در محیطهای ایزوله و مستقل از سیستمعامل میزبان اجرا کنید.
داکر به عنوان یک ابزار قدرتمند، باعث میشود که توسعهدهندگان به راحتی برنامهها را در هر محیطی، از توسعه تا تولید، اجرا کنند.
🔷 ویژگیهای داکر:
- ایزولهسازی: برنامهها در کانتینرهای ایزوله اجرا میشوند که باعث جلوگیری از تداخل محیطها و وابستگیها میشود.
- قابلیت حمل و نقل: ایماژهای داکر قابل جابجایی هستند، به این معنی که میتوانید آنها را از یک محیط به محیط دیگر منتقل کنید.
- مقیاسپذیری: داکر به شما این امکان را میدهد که برنامههای خود را مقیاسپذیر کنید و در محیطهای توزیعشده اجرا کنید.
کانتینر (Container) چیست؟
کانتینرها واحدهای ایزولهشدهای هستند که شامل یک برنامه و تمام وابستگیهای آن میشوند.
هر کانتینر مستقل از سیستمعامل میزبان و دیگر کانتینرها عمل میکند.
این ویژگی باعث میشود که برنامهها بدون دغدغه تفاوتهای سیستمعامل یا محیطهای مختلف اجرا شوند.
🔷 مزایای کانتینرها:
- صرفهجویی در منابع: کانتینرها منابع کمتری مصرف میکنند و نسبت به ماشینهای مجازی سریعتر و سبکتر هستند.
- اجرای سریع: کانتینرها به سرعت راهاندازی میشوند و زمان مورد نیاز برای استقرار برنامهها به حداقل میرسد.
- ایزولهسازی: هر کانتینر به طور مستقل اجرا میشود و به این ترتیب هیچ تداخلی با سایر برنامهها ندارد.
Dockerfile چیست؟
Dockerfile یک فایل متنی است که دستوراتی را برای ساخت ایماژهای داکر (تصاویر داکر) تعیین میکند.
این فایل به داکر میگوید که چگونه یک ایماژ جدید بسازد، چه نرمافزارهایی را نصب کند، کدام فایلها را کپی کند و در نهایت کانتینر را اجرا کند.
🔷 ساختار Dockerfile:
- FROM: ایمیج پایهای که از آن شروع میشود.
- RUN: دستورات برای نصب نرمافزارها یا انجام تنظیمات.
- COPY: کپی کردن فایلها به داخل کانتینر.
- CMD: دستور پیشفرض برای اجرای اپلیکیشن.
- WORKDIR: تعیین دایرکتوری کاری برای اجرای دستورات بعدی.
نمونه Dockerfile:
# entekhab yek image paye
FROM ubuntu:20.04
# nasb narf afzar haye lazem
RUN apt-get update && apt-get install -y python3 python3-pip
# copy kardan file dakhel container
COPY . /app
# set kardan dir for amaliat
WORKDIR /app
# nasb vabastegiha
RUN pip3 install -r requirements.txt
# dastoor pish farz baraye run kardan application
CMD ["python3", "app.py"]
در این Dockerfile، از ایمیج پایه ubuntu:20.04 استفاده میشود و سپس نرمافزارهای لازم نصب و فایلهای پروژه کپی میشوند.
در نهایت اپلیکیشن با دستور python3 app.py اجرا میشود.
Docker Compose چیست؟
Docker Compose ابزاری است که به شما امکان میدهد چندین کانتینر داکر را به طور همزمان مدیریت کنید.
به طور معمول از این ابزار برای تنظیم و راهاندازی محیطهای پیچیدهتر استفاده میشود که نیاز به تعامل بین سرویسهای مختلف دارند، مانند پایگاه داده، کش و سایر سرویسها.
نمونه فایل docker-compose.yml:
version: '3'
services:
web:
image: myapp:latest
ports:
- "۸۰۸۰:۸۰"
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: example
در این فایل، دو سرویس تعریف شده است:
web: که از ایمیج
myapp:latestاستفاده میکند و پورت ۸۰۸۰ را به پورت ۸۰ کانتینر مپ میکند.db: که از ایمیج
postgres:latestاستفاده میکند و رمز عبور پایگاه داده را با استفاده از متغیر محیطی تنظیم میکند.
برای راهاندازی این سرویسها، کافی است از دستور زیر استفاده کنید:
docker compose up
معماری داکر
معماری داکر شامل اجزای مختلفی است که در کنار هم برای ساخت، مدیریت و اجرای کانتینرها عمل میکنند.
اجزای اصلی معماری داکر عبارتند از:
- Docker Engine: موتور اصلی داکر که عملیات ساخت و اجرای کانتینرها را مدیریت میکند.
- Docker Daemon (dockerd): سرویس دائمی است که درخواستها را از Docker CLI دریافت و اجرا میکند.
- Docker CLI: رابط خط فرمان است که برای تعامل با داکر استفاده میشود.
- Docker Hub: مخزن آنلاین است که به کاربران این امکان را میدهد تا ایمیج های داکر را به اشتراک بگذارند و دانلود کنند.
دستورات کاربردی داکر
در این بخش، دستورات مهم و کاربردی داکر را بررسی میکنیم.
دستور docker build
برای ساخت ایمیج از Dockerfile:
docker build -t myapp .
دستور docker run
برای اجرای یک کانتینر از ایمیج ساخته شده:
docker run -d -p 8080:80 myapp
دستور docker ps
برای مشاهده کانتینرهای در حال اجرا:
docker ps
دستور docker exec
برای اجرای دستورات داخل یک کانتینر:
docker exec -it container_name bash
دستور docker logs
برای مشاهده لاگهای یک کانتینر:
docker logs container_name_or_id
دستور docker stop
برای متوقف کردن یک کانتینر:
docker stop container_name_or_id
دستور docker rm
برای حذف یک کانتینر:
docker rm container_name_or_id
مزایای داکر
- ایزولهسازی: داکر برنامهها را از سیستمعامل میزبان ایزوله کرده و از تداخل بین برنامهها جلوگیری میکند.
- قابلیت حمل و نقل: ایماژهای داکر قابل حمل هستند و میتوانید آنها را بین محیطهای مختلف جابجا کنید.
- مقیاسپذیری: به راحتی میتوانید برنامههای خود را مقیاسبندی کرده و در محیطهای توزیعشده اجرا کنید.
- صرفهجویی در منابع: کانتینرها منابع کمتری مصرف میکنند و نسبت به ماشینهای مجازی سریعتر و سبکتر هستند.
سوالات متداول درباره Docker
داکر یک پلتفرم متنباز است که به شما امکان میدهد برنامهها را در کانتینرهای ایزوله اجرا کنید.
این ابزار به دلیل قابلیت حمل و نقل، مقیاسپذیری، و ایزولهسازی برنامهها از دیگر ابزارها محبوبتر شده است.
Dockerfile یک فایل متنی است که دستورات لازم برای ساخت ایماژهای داکر را تعریف میکند.
با استفاده از Dockerfile میتوانید نرمافزارها و وابستگیهای مورد نیاز برای اجرای یک برنامه را به طور خودکار نصب و تنظیم کنید.
Docker Compose ابزاری است که به شما اجازه میدهد چندین کانتینر داکر را همزمان راهاندازی و مدیریت کنید.
این ابزار برای پروژههایی که نیاز به چندین سرویس دارند (مانند پایگاه داده، کش و وبسرویس) بسیار مفید است.
برای اجرای یک کانتینر از ایماژ داکر، کافی است از دستور docker run استفاده کنید.
به عنوان مثال، برای اجرای کانتینر از ایماژ myapp میتوانید از دستور زیر استفاده کنید:
#docker run -d -p 8080:80 myapp
نتیجهگیری
داکر یکی از بهترین ابزارهای موجود برای توسعه، تست و استقرار برنامهها است.
با استفاده از داکر، توسعهدهندگان میتوانند برنامهها و سرویسها را در محیطهای ایزوله و مقیاسپذیر اجرا کنند.
این ابزار با ویژگیهایی همچون ایزولهسازی، قابلیت حمل و نقل و مقیاسپذیری به یکی از استانداردهای صنعت نرمافزار تبدیل شده است.
اگر شما نیز به دنبال بهبود فرآیندهای توسعه خود و کاهش مشکلات محیطی هستید، یادگیری و استفاده از داکر قطعاً برای شما مفید خواهد بود.
📢 نظر شما چیست؟ اگر شما هم اطلاعات و تجربه خوبی در استفاده از داکر و داکر فایل دارید خوشحال میشم در بخش نظرات، تجربه های ارزشمندتان را با ما به اشتراک بگذارید! 🚀
سؤالی درباره این مقاله داری؟
اگر نکتهای در این مقاله برات مبهم بود یا خواستی بیشتر بدونی، همین حالا برام بنویس تا دقیق و صمیمی پاسخت رو بدم — مثل یه گفتوگوی واقعی 💬
برو به صفحه پرسش و پاسخ
دیدگاهتان را بنویسید