آموزش جامع داکر برای توسعه دهندگان حرفهای
داکر به سرعت به یکی از ابزارهای ضروری و مهم برای توسعهدهندگان تبدیل شده است. این ابزار به شما این امکان را میدهد که برنامهها و سرویسهای خود را در containerها ایزوله کنید و این برنامهها را در هر جایی که Docker نصب است، اجرا کنید. اگر به دنبال یک راهنمای جامع و پیشرفته برای کار با Docker هستید، این مقاله از پاساوان مخصوص شماست.
جهت کسب اطلاعات بیشتر در خصوص طراحی سایت حرفه ای با تیم پاساوان تماس بگیرید.
داکر چیست و چرا باید آن را یاد بگیرید؟
داکر یک پلتفرم open-source است که به شما این امکان را میدهد تا برنامهها و سرویسهای خود را در محیطهایی ایزوله به نام container اجرا کنید. این محیطها تمام منابع لازم (سیستمعامل، کتابخانهها، و وابستگیها) را در خود دارند و اجازه میدهند که برنامهها در هر محیطی با ثبات و به راحتی پیاده سازی شوند.
Docker موجب میشود فرآیندهای دیپلوی، توسعه، و مقیاسپذیری بسیار سادهتر و سریعتر شوند.
نصب و پیکربندی داکر
نصب Docker روی ویندوز
- به سایت رسمی Docker Desktop بروید و نسخه ویندوز را دانلود کنید.
- فایل نصب را اجرا کرده و مراحل را طی کنید. بعد از نصب، داکر خودکار شروع به کار میکند.
- برای بررسی نصب، دستور زیر را در Command Prompt وارد کنید:
docker –version
نصب داکر روی مک
مراحل مشابه ویندوز است. توجه کنید که نیاز به macOS نسخه 10.14 یا بالاتر دارید. بعد از نصب Docker Desktop، میتوانید به راحتی آن را از نوار وظیفه باز کنید.
نصب Docker روی لینوکس
برای اوبونتو، این دستورالعملها را پیاده کنید:
sudo apt-get update
sudo apt-get install docker.io
sudo systemctl start docker
sudo systemctl enable docker
برای دیگر توزیعها هم مشابه است، اما توجه کنید که نسخههای مختلف Docker کمی متفاوت است.
مفاهیم پایهای Docker برای شروع
Containerها و Images
- Container: یک محیط ایزوله میباشد که شامل برنامه و تمام وابستگیهای آن میشود. به عبارت دیگر، container یک محیط مجازی برای برنامه شماست.
- Image: تصویر پایهای است که از آن یک container ساخته میشود. Docker Images میتوانند سیستمعامل، کتابخانهها و نرمافزارهای مورد نیاز را در خود داشته باشند.
Dockerfile چیست و چگونه نوشته میشود؟
Dockerfile یک فایل متنی است که دستوراتی را تعیین میکند که داکر برای ساخت یک image از آن پیروی میکند. مثالی از Dockerfile برای یک برنامه Node.js:
# استفاده از تصویر پایه Node.js
FROM node:16
# تنظیم دایرکتوری کاری
WORKDIR /app
# کپی فایلهای package.json و package-lock.json
COPY package*.json ./
# نصب وابستگیها
RUN npm install
# کپی تمام فایلها
COPY . .
# دستور اجرای برنامه
CMD [“npm”, “start”]
ساخت یک Image از Dockerfile
جهت ساختن یک Docker image از روی Dockerfile، دستور زیر را کپی و اجرا کنید:
docker build -t myapp .
این دستور یک image به نام myapp از پوشه فعلی میسازد.
اجرای یک Container از Image
برای اجرای یک container از روی image ساخته شده، از کپی دستور زیر استفاده کنید:
docker run -p 3000:3000 myapp
این دستور container را روی پورت ۳۰۰۰ اجرا مینماید.
Docker Compose؛ مدیریت چندین Container به صورت یکپارچه
Docker Compose ابزاری است که به شما اجازه میدهد چندین container را با یک دستور مدیریت نمایید. در پروژههای پیچیده، به چندین service نیاز داریم که Docker Compose این کار را ساده میکند.
ساخت فایل docker-compose.yml
این فایل تمام سرویسها و تنظیمات مختلف آنها را در خود جای داده است. مثالی از یک فایل docker-compose.yml برای یک اپلیکیشن Node.js که به دیتابیس MySQL متصل میشود:
version: ‘3’
services:
web:
build: .
ports:
– “3000:3000”
depends_on:
– db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
در این فایل:
- سرویس web یک اپلیکیشن Node.js است که به سرویس db که MySQL است، وابسته است.
- با دستور docker-compose up، تمام سرویسها همزمان راهاندازی میشوند.
اجرای Docker Compose
برای راهاندازی تمامی سرویسها از این دستور استفاده کنید:
docker-compose up
برای اجرای آنها در پسزمینه، از دستور زیر استفاده نمایید:
docker-compose up -d
مدیریت Volumeها در Docker
در Docker، Volumeها برای ذخیره دادهها به کار میروند. دادههای موجود در containers بعد از توقف و حذف آنها از بین میروند، اما volumeها میتوانند دادهها را در میان containerها حفظ کنند.
ساخت Volume در Docker
برای ساخت volume از دستور زیر استفاده میکنیم:
docker volume create myvolume
اتصال Volume به یک Container
برای اتصال یک volume به container در زمان اجرای آن، از دستور زیر استفاده کنید:
docker run -v myvolume:/data myapp
این دستور یک volume به نام myvolume را به مسیر /data در داخل container وصل میکند.
شبکهبندی در داکر
یکی از قابلیتهای بسیار قدرتمند و مهم داکر، مدیریت شبکهها است. Docker این امکان را به شما میدهد که چندین container را بهطور ایزوله در شبکههای مختلف جای دهید.
ایجاد شبکه جدید در داکر
برای ساخت یک شبکه تازه از دستور زیر استفاده کنید:
docker network create mynetwork
اتصال Containerها به شبکه
جهت اتصال container به شبکه هنگام اجرای آن، از دستور زیر استفاده کنید:
docker run –network=mynetwork myapp
امنیت در Docker؛ بهترین شیوهها
محدود کردن منابع برای Containers
برای جلوگیری از مصرف بیش از اندازه منابع سیستم، میتوانید محدودیتهایی برای CPU و حافظه تعیین کنید:
docker run –memory=512m –cpus=1.0 myapp
این دستور حافظه container را به ۵۱۲ مگابایت و CPU آن را به ۱ هسته محدود میکند.
بهروزرسانی منظم تصاویر Docker
جهت جلوگیری از استفاده از تصاویر قدیمی و آسیبپذیر، همیشه بهروزرسانیهای امنیتی Docker را بررسی کنید و بهطور منظم تصاویر خود را بهروزرسانی کنید.
docker pull node:latest
نکات پیشرفته برای کار با Docker
- Multistage Builds: اگر نیاز دارید تصویر خود را بهینه کنید، از تکنیکهای Multistage Build استفاده نمایید تا فقط آنچه که نیاز دارید در تصویر نهایی باقی بماند.
- Docker Swarm: برای مدیریت اورکستراسیون containerها در یک خوشه (Cluster)، از Docker Swarm استفاده کنید.
- Docker + Kubernetes: برای مقیاسپذیری بزرگ و مدیریت بهتر containerها در محیطهای تولید، Docker را با Kubernetes ترکیب نمایید.
چرا Docker ابزار حیاتی برای توسعه دهندگان است؟
Docker این امکان را فراهم میکند که به راحتی برنامههای خود را در محیطهای ایزوله اجرا کرده و آنها را در هر جایی بدون نگرانی از مشکلات وابستگیها یا محیط، راه اندازه کنید. از مدیریت ساده containerها گرفته تا مقیاسپذیری و امنیت بالا، Docker ابزاری است که هر توسعهدهندهای باید با آن آشنا شود.