نصب داکر Docker + راهنمای کامل راه‌اندازی داکر

در دنیای امروز که فناوری اطلاعات و نرم‌افزارها به‌سرعت در حال گسترش هستند، نیاز به راهکارهایی برای توسعه، استقرار و مدیریت نرم‌افزارها بیش‌از پیش احساس می‌شود. داکر Docker به‌عنوان یک پلتفرم متن‌باز، یکی از پیشگامان در این زمینه است که به توسعه‌دهندگان و مدیران سیستم‌ها کمک می‌کند تا برنامه‌های خود را در محیط‌های جداگانه و قابل‌انتقال به‌نام کانتینر اجرا کنند.

داکر چیست و چرا از آن استفاده کنیم؟

Docker یک پلتفرم برای مجازی‌سازی در سطح سیستم‌عامل است که به شما اجازه می‌دهد تا برنامه‌ها و تمامی وابستگی‌های آن‌ها را به‌صورت یکپارچه در قالب کانتینرها بسته‌بندی کنید. برخلاف ماشین‌های مجازی (VMs) که نیازمند سیستم‌عامل‌های کامل و منابع بیشتری هستند، کانتینرها از هسته سیستم‌عامل میزبان استفاده می‌کنند و به‌همین دلیل سبک‌تر و سریع‌تر هستند.

Docker به شما این امکان را می‌دهد تا برنامه‌ها را به‌صورت قابل‌انتقال (Portable) و مقیاس‌پذیر (Scalable) توسعه و مستقر کنید. این بدان معناست که برنامه شما می‌تواند بدون نگرانی از وابستگی‌ها و تنظیمات مختلف، در هر محیطی از جمله سیستم‌های توسعه، سرورهای تولید، فضای ابری و حتی سیستم‌های محلی اجرا شود.

مطلب مفید: داکر چیست؟

مزایای استفاده از Docker

استفاده از Docker مزایای زیادی دارد که از جمله آن‌ها می‌توان به موارد زیر اشاره کرد:

1. پرتاب سریع (Fast Deployment): کانتینرها به‌سرعت اجرا می‌شوند و در عرض چند ثانیه آماده به‌کار هستند.

2. قابلیت انتقال (Portability): کانتینرها می‌توانند بدون تغییر در محیط‌های مختلف اجرا شوند؛ از سیستم‌عامل‌های گوناگون گرفته تا محیط‌های ابری مانند AWS، Azure و Google Cloud.

3. کارایی بالا (High Efficiency): با استفاده از منابع کمتر نسبت به ماشین‌های مجازی، کانتینرها به شما اجازه می‌دهند تا با صرفه‌جویی در مصرف منابع، کارایی بیشتری داشته باشید.

4. مدیریت ساده وابستگی‌ها: Docker تمامی وابستگی‌های نرم‌افزار را در قالب یک کانتینر بسته‌بندی می‌کند؛ بنابراین، دیگر نیازی به نگرانی درباره نسخه‌های مختلف کتابخانه‌ها و ابزارها نخواهید داشت.

5. مقیاس‌پذیری (Scalability): با استفاده از ابزارهایی مانند Docker Compose و Docker Swarm، شما می‌توانید کانتینرهای خود را به‌صورت مقیاس‌پذیر مدیریت کنید.

در این مطلب، به‌صورت گام‌به‌گام با نحوه نصب Docker بر روی سیستم‌عامل‌های مختلف از جمله Ubuntu ،CentOS ،Windows و macOS آشنا خواهید شد. همچنین، پس از نصب، با مفاهیم پایه‌ای کانتینرها، مدیریت کانتینرها و عیب‌یابی مشکلات رایج در Docker آشنا خواهید شد.

پیش‌نیازهای نصب Docker

قبل از این‌که به سراغ مراحل نصب Docker برویم، ضروری است که مطمئن شوید سیستم شما تمامی پیش‌نیازهای لازم برای نصب و اجرای Docker را دارد. در این بخش، به بررسی سیستم‌های عامل پشتیبانی‌شده، منابع سخت‌افزاری موردنیاز و تنظیمات اولیه برای آماده‌سازی سیستم خواهیم پرداخت.

۱) سیستم‌های عامل پشتیبانی‌شده

Docker به‌طور رسمی از سیستم‌عامل‌های زیر پشتیبانی می‌کند:

– Linux:

  – Ubuntu (نسخه‌های 20.04 LTS، 22.04 LTS و بالاتر)

  – CentOS (نسخه 7 و 8)

  – Debian (نسخه‌های 10 و 11)

  – Fedora (نسخه‌های 35 و بالاتر)

– Windows:

  – Windows 10 (نسخه 64 بیتی با حداقل بیلد 19042 و بالاتر)

  – Windows 11

  – Windows Server 2016/2019/2022

– macOS:

  – macOS Monterey و macOS Ventura (پردازنده‌های Intel و Apple Silicon)

> نکته: برای نصب Docker روی Windows و macOS، از Docker Desktop استفاده می‌شود که شامل تمامی ابزارهای موردنیاز مانند Docker Engine ،Docker CLI و Docker Compose است.

۲) منابع سخت‌افزاری موردنیاز

برای اجرای Docker به‌صورت بهینه، سیستم شما باید حداقل منابع زیر را داشته باشد:

  • پردازنده (CPU):

  – حداقل: پردازنده 64 بیتی دو هسته‌ای

  – پیشنهاد شده: پردازنده چند هسته‌ای با پشتیبانی از مجازی‌سازی سخت‌افزاری (Intel VT-x یا AMD-V)

  • حافظه (RAM):

  – حداقل: 2 گیگابایت

  – پیشنهاد شده: 4 گیگابایت یا بیشتر (به‌ویژه برای اجرای چندین کانتینر به‌صورت همزمان)

  • فضای دیسک (Storage):

  – حداقل: 10 گیگابایت فضای خالی

  – پیشنهاد شده: 20 گیگابایت یا بیشتر (برای نگهداری تصاویر Docker و کانتینرها)

۳) تنظیمات اولیه سیستم

بسته به سیستم‌عاملی که استفاده می‌کنید، ممکن است نیاز باشد تا برخی تنظیمات اولیه را انجام دهید:

1. فعال‌سازی مجازی‌سازی (Virtualization):

اطمینان حاصل کنید که مجازی‌سازی سخت‌افزاری (Intel VT-x یا AMD-V) در BIOS سیستم فعال است. برای این کار، وارد BIOS شوید:

  1. سیستم را ری‌استارت کنید و در زمان بوت، کلید مربوطه (معمولاً Del، F2، F10 یا Esc) را فشار دهید.
  2. گزینه Virtualization را پیدا کنید. به بخش Advanced یا CPU Configuration در تنظیمات BIOS بروید.
  3. به دنبال گزینه‌ای مانند Intel VT-x، Intel Virtualization Technology، یا SVM Mode (در پردازنده‌های AMD) بگردید.
  4. Virtualization را فعال کنید، کافی است گزینه مربوطه را روی Enabled تنظیم کنید.
  5. تغییرات را با انتخاب Save & Exit ذخیره کنید (معمولاً کلید F10).

پس از راه‌اندازی مجدد، Virtualization فعال است و می‌توانید از Docker استفاده کنید.

> توجه: ممکن است نام گزینه‌ها در BIOS بسته به مادربرد متفاوت باشد.

2. بروزرسانی سیستم:

   – توصیه می‌شود قبل از نصب Docker، سیستم‌عامل خود را به‌روزرسانی کنید تا از آخرین نسخه‌ها و پچ‌های امنیتی بهره‌مند شوید.

حالا که سیستم شما آماده است، می‌توانید مراحل نصب Docker را برای سیستم‌عامل دلخواه خود دنبال کنید. در ادامه، نحوه نصب Docker روی Ubuntu، CentOS، Windows و macOS را به‌صورت گام‌به‌گام توضیح خواهیم داد.

نصب Docker روی سیستم‌عامل‌های مختلف

در این بخش، به‌صورت گام‌به‌گام نحوه نصب Docker روی هر یک از این سیستم‌عامل‌ها را بررسی می‌کنیم.

۱) نصب Docker روی Ubuntu

Docker روی توزیع‌های مختلف لینوکس به‌خوبی کار می‌کند و Ubuntu یکی از محبوب‌ترین گزینه‌ها برای نصب Docker است. برای نصب داکر بر روی ابونتو مراحل زیر را دنبال کنید.

1. به‌روزرسانی مخازن و بسته‌های سیستم

sudo apt update && sudo apt upgrade -y

2. نصب پیش‌نیازها

sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

3. افزودن مخزن Docker

# Add Docker’s official GPG key:sudo apt-get updatesudo apt-get install ca-certificates curlsudo install -m 0755 -d /etc/apt/keyringssudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:echo \  “deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \  $(. /etc/os-release && echo “$VERSION_CODENAME”) stable” | \  sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get update

4. نصب Docker Engine

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

5. بررسی نصب و نسخه Docker

sudo docker –version

6. راه‌اندازی و فعال‌سازی سرویس Docker

sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker

7. اضافه کردن کاربر به گروه Docker (اختیاری)

sudo usermod -aG docker $USER
newgrp docker

۲) نصب Docker روی CentOS

برای نصب Docker روی CentOS نیز می‌توانید مراحل زیر را دنبال کنید.

1. به‌روزرسانی مخازن

sudo dnf update -y

2. نصب پیش‌نیازها

sudo dnf -y install dnf-plugins-core

3. افزودن مخزن Docker

sudo dnf config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo

4. نصب Docker Engine

sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

5. راه‌اندازی و فعال‌سازی Docker

sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker

6. بررسی نصب Docker

docker –version

۳) نصب Docker روی Windows

برای نصب Docker روی Windows، از Docker Desktop استفاده می‌شود.

1. دانلود Docker Desktop

– به صفحه دانلود داکر بروید.

– نسخه مخصوص Windows با معماری مناسب پردازنده خود را دانلود کنید.

2. نصب Docker Desktop

– فایل نصب را اجرا کنید.

– در طول مراحل نصب، مطمئن شوید که گزینه Use WSL 2 instead of Hyper-V انتخاب شده باشد.

– پس از اتمام نصب، لازم است با کلیک بر روی Close and restart یک مرتبه ویندوز را ریستارت کنید.

– پس از نصب داکر کافی است روی آیکون آن کلیک کرده، سپس Accept را بزنید و با تنظیمات پیشفرض مراحل را پیش رفته تا به صفحه اصلی داکر دسکتاپ وارد شوید.

– سپس Docker Engine شروع به کار کرده و می‌توانید از آن استفاده کنید.

3. فعال‌سازی WSL 2

– اگر WSL 2 فعال نیست، دستور زیر را در PowerShell اجرا کنید:

wsl –set-default-version 2

4. بررسی نصب Docker

– پس از اتمام نصب، Docker Desktop را اجرا کرده و با دستور زیر نسخه Docker را بررسی کنید:

docker –version

۴) نصب Docker روی macOS

برای نصب Docker روی macOS نیز از Docker Desktop استفاده می‌شود.

1. دانلود Docker Desktop

– به صفحه دانلود داکر بروید.

– نسخه مخصوص macOS مناسب پردازنده خود را دانلود کنید.

2. نصب Docker Desktop

– فایل .dmg دانلود شده را باز کنید.

– Docker را به Applications بکشید.

– Docker Desktop را اجرا کنید و مراحل نصب را دنبال کنید.

3. بررسی نصب Docker

– پس از نصب، برنامه Terminal را باز کنید و دستور زیر را اجرا کنید:

docker –version

دانلود و اجرای اولین کانتینر Docker

حالا که Docker را با موفقیت روی سیستم خود نصب کرده‌اید، وقت آن است که اولین کانتینر خود را اجرا کنید. این بخش به شما نشان می‌دهد چگونه با استفاده از Docker، یک کانتینر ساده ایجاد و اجرا کنید. ما از کانتینر Hello World استفاده خواهیم کرد تا مطمئن شویم Docker به‌درستی نصب و پیکربندی شده‌است.

چرا از کانتینر Hello World استفاده می‌کنیم؟

کانتینر Hello World یک ابزار تستی ساده است که به شما کمک می‌کند تا مطمئن شوید Docker به‌درستی نصب شده و می‌تواند کانتینرها را اجرا کند. این کانتینر تنها یک پیام ساده چاپ می‌کند و سپس متوقف می‌شود.

گام 1: بررسی نسخه Docker

قبل از شروع، بررسی کنید که Docker به‌درستی نصب شده‌است:

docker –version

خروجی مشابه زیر باید نمایش داده شود:

Docker version 27.3.1, build ce12230

گام 2: دانلود و اجرای کانتینر Hello World

برای اجرای اولین کانتینر Docker، دستور زیر را وارد کنید:

docker run hello-world

شرح دستور:

– docker: فرمان اصلی Docker است.

– run: این دستور برای اجرای یک کانتینر استفاده می‌شود.

– hello-world: نام ایمیجی که Docker آن را دانلود و اجرا می‌کند.

گام 3: بررسی خروجی

اگر Docker به‌درستی کار کند، باید خروجی مشابه زیر مشاهده کنید:

این پیام تأیید می‌کند که Docker به‌درستی نصب و کانتینر Hello World با موفقیت اجرا شده‌است.

گام 4: مشاهده کانتینرهای در حال اجرا

برای مشاهده لیست کانتینرهای در حال اجرا، از دستور زیر استفاده کنید:

docker ps

از آنجایی که کانتینر Hello World پس از چاپ پیام بلافاصله متوقف می‌شود، ممکن است در این لیست نمایش داده نشود. برای مشاهده تمامی کانتینرها (حتی کانتینرهای متوقف شده)، دستور زیر را اجرا کنید:

docker ps -a

خروجی مشابه زیر خواهید دید:

گام 5: حذف کانتینر متوقف‌شده (اختیاری)

برای حذف کانتینر متوقف‌شده، می‌توانید از دستور زیر استفاده کنید:

docker rm d1b5f3c1cdee

یا برای حذف تمامی کانتینرهای متوقف‌شده:

docker container prune

اجرای یک کانتینر دیگر (مثال با Nginx)

اکنون که با نحوه اجرای کانتینرها آشنا شدید، بیایید یک کانتینر واقعی‌تر مانند Nginx را اجرا کنیم.

گام 1: دانلود و اجرای کانتینر Nginx

docker run -d -p 8080:80 –name my-nginx nginx

شرح دستور:

– -d: اجرای کانتینر در حالت پس‌زمینه (Detached Mode)

– -p 8080:80: نقشه‌برداری پورت 80 کانتینر به پورت 8080 سیستم میزبان

– –name my-nginx: نام‌گذاری کانتینر به‌عنوان “my-nginx”

– nginx: نام ایمیجی که از Docker Hub دانلود می‌شود

گام 2: بررسی کانتینر در حال اجرا

docker ps

گام 3: مشاهده صفحه Nginx

در مرورگر وب خود به آدرس زیر بروید:

http://localhost:8080

باید صفحه خوش‌آمدگویی Nginx را مشاهده کنید.

گام 4: توقف و حذف کانتینر Nginx (اختیاری)

برای توقف کانتینر:

docker stop my-nginx

برای حذف کانتینر:

docker rm my-nginx

مدیریت کانتینرها در Docker

Docker با ارائه ابزارهای مختلف به شما اجازه می‌دهد تا به‌صورت کارآمد کانتینرهای خود را مدیریت کنید. در این بخش، نحوه مدیریت کانتینرها، از جمله مشاهده جزئیات کانتینرها، ورود به داخل کانتینر، بازگردانی کانتینر متوقف‌شده، ثبت تغییرات در کانتینرها و استفاده از حجم‌ها (Volumes) را بررسی خواهیم کرد.

مشاهده جزئیات کانتینر

برای مشاهده جزئیات بیشتر در مورد یک کانتینر خاص، می‌توانید از دستور `docker inspect` استفاده کنید.

1. مشاهده اطلاعات جامع یک کانتینر

docker inspect my-nginx

این دستور اطلاعات کاملی مانند شبکه، تنظیمات سیستم‌عامل و متغیرهای محیطی را نمایش می‌دهد.

2. مشاهده IP کانتینر

برای مشاهده فقط آدرس IP یک کانتینر:

docker inspect -f ‘{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ my-nginx

ورود به داخل کانتینر (Shell Access)

گاهی اوقات نیاز است که به داخل کانتینر دسترسی پیدا کنید تا تنظیمات یا دیباگ انجام دهید. این کار با استفاده از دستور `docker exec` امکان‌پذیر است.

1. دسترسی به Shell کانتینر

docker exec -it my-nginx /bin/bash

– -i: فعال‌سازی حالت تعاملی (Interactive)

– -t: تخصیص یک TTY (ترمینال)

> نکته: برخی از کانتینرها ممکن است فقط `sh` به جای `bash` داشته باشند:

docker exec -it my-nginx sh

2. اجرای یک دستور خاص داخل کانتینر

docker exec my-nginx nginx -v

این دستور نسخه Nginx نصب‌شده در کانتینر را نمایش می‌دهد.

راه‌اندازی مجدد (Restart) کانتینر

برای راه‌اندازی مجدد یک کانتینر (بدون نیاز به حذف و ایجاد مجدد آن):

docker restart my-nginx

بازگردانی کانتینر متوقف‌شده (Start)

برای اجرای مجدد یک کانتینر که قبلاً متوقف شده‌است:

docker start my-nginx

متوقف‌کردن موقت کانتینر (Pause)

شما می‌توانید یک کانتینر را به‌صورت موقت متوقف کنید:

docker pause my-nginx

برای از سرگیری:

docker unpause my-nginx

ثبت تغییرات در کانتینر (Commit)

اگر در داخل یک کانتینر تغییراتی ایجاد کردید و می‌خواهید این تغییرات را ذخیره کنید، می‌توانید از دستور `docker commit` استفاده کنید.

1. ایجاد یک ایمیج جدید از کانتینر

docker commit my-nginx my-custom-nginx

2. مشاهده لیست ایمیج‌های Docker

docker images

استفاده از لاگ‌ها (Logs)

برای مشاهده لاگ‌های خروجی کانتینرها، می‌توانید از دستور `docker logs` استفاده کنید.

1. مشاهده لاگ‌های یک کانتینر

docker logs my-nginx

2. مشاهده لاگ‌ها به‌صورت زنده (Live)

docker logs -f my-nginx

– f-: مشاهده لاگ‌ها به‌صورت زنده (مانند `tail -f`)

استفاده از منابع (Resource Usage)

برای مانیتور کردن منابع مصرفی کانتینرها (CPU، حافظه، I/O و غیره)، از دستور `docker stats` استفاده کنید.

مشاهده منابع مصرفی تمامی کانتینرها

docker stats

خروجی نمونه:

استفاده از حجم‌ها (Volumes) برای ذخیره‌سازی داده‌ها

حجم‌ها (Volumes) به شما این امکان را می‌دهند تا داده‌های پایدار را در خارج از محیط کانتینر ذخیره کنید.

1. ایجاد یک Volume

docker volume create my-volume

2. استفاده از Volume در کانتینر

docker run -d -p 8080:80 –name my-nginx -v my-volume:/usr/share/nginx/html nginx

3. مشاهده لیست Volume‌ها

docker volume ls

4. حذف یک Volume

docker volume rm my-volume

عیب‌یابی مشکلات رایج Docker

هنگام کار با Docker، ممکن است با مشکلات مختلفی مواجه شوید. این مشکلات می‌توانند به دلایل مختلفی از جمله تنظیمات نادرست، کمبود منابع سیستم، یا تداخل با سرویس‌های دیگر به وجود آیند. در این بخش، به بررسی رایج‌ترین مشکلات Docker و راه‌حل‌های پیشنهادی برای رفع آن‌ها می‌پردازیم.

1. مشکل: Docker دیمون (Docker Daemon) اجرا نمی‌شود

 علائم:

– هنگام اجرای هر دستوری با خطایی مشابه زیر مواجه می‌شوید:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

 راه‌حل:

– بررسی کنید که سرویس Docker فعال است:

sudo systemctl status docker

– اگر سرویس متوقف شده‌است، آن را راه‌اندازی کنید:

sudo systemctl start docker

– برای اطمینان از اجرای خودکار Docker در زمان بوت:

sudo systemctl enable docker

– اگر مشکل همچنان پابرجاست، ممکن است نیاز به راه‌اندازی مجدد Docker داشته باشید:

sudo systemctl restart docker

 > نکته:

گاهی اوقات، مشکل ممکن است به دلیل عدم دسترسی کاربر به سوکت Docker باشد. برای رفع این مشکل، کاربر خود را به گروه Docker اضافه کنید:

sudo usermod -aG docker $USER
newgrp docker

2. مشکل: کانتینر به اینترنت دسترسی ندارد

 علائم:

– کانتینر شما نمی‌تواند به اینترنت متصل شود یا دستورات مرتبط با شبکه درون کانتینر کار نمی‌کنند.

 راه‌حل:

– ابتدا بررسی کنید که Docker network bridge به‌درستی کار می‌کند:

docker network inspect bridge

– ممکن است نیاز به بازنشانی تنظیمات شبکه Docker داشته باشید:

sudo systemctl restart docker

– اگر از فایروال استفاده می‌کنید، اطمینان حاصل کنید که پورت‌های Docker باز هستند. به‌عنوان مثال، برای `iptables`:

sudo iptables -A INPUT -p tcp –dport 2375 -j ACCEPT
sudo iptables -A INPUT -p tcp –dport 2376 -j ACCEPT

3. مشکل: پر شدن فضای دیسک به دلیل ایمیج‌ها و کانتینرهای قدیمی

 علائم:

– خطایی مشابه زیر هنگام اجرای دستورات Docker:

no space left on device

راه‌حل:

– حذف کانتینرهای متوقف‌شده:

docker container prune

– حذف ایمیج‌های بدون استفاده:

docker image prune

– حذف همه ایمیج‌ها، کانتینرها و شبکه‌های بدون استفاده:

docker system prune -a

 > نکته:

برای مشاهده میزان فضای اشغال‌شده توسط Docker:

docker system df

4. مشکل: خطای Port Already in Use

 علائم:

– دریافت خطایی مشابه زیر هنگام تلاش برای اجرای یک کانتینر:

Bind for 0.0.0.0:80 failed: port is already allocated

راه‌حل:

– بررسی کنید که چه برنامه‌ای از پورت استفاده می‌کند:

sudo lsof -i :80

– اگر Docker کانتینری در حال استفاده از این پورت است، آن را متوقف کنید:

docker stop my-container

– یا کانتینر را با استفاده از پورت دیگری اجرا کنید:

docker run -d -p 8080:80 nginx

5. مشکل: خطای Image Pull (عدم توانایی در دانلود ایمیج)

 علائم:

– هنگام دانلود یک ایمیج از Docker Hub با خطای زیر مواجه می‌شوید:

Error response from daemon: pull access denied for <image-name>, repository does not exist or may require ‘docker login’

راه‌حل:

– مطمئن شوید که نام ایمیج صحیح است.

– اگر ایمیج خصوصی است، وارد حساب Docker Hub خود شوید:

docker login

– اگر مشکل همچنان وجود دارد، ممکن است نیاز به پاک‌سازی کش Docker داشته باشید:

docker builder prune

6. مشکل: کندی عملکرد کانتینرها

 علائم:

– کانتینرها کند اجرا می‌شوند یا استفاده بالایی از منابع سیستم دارند.

 راه‌حل:

– بررسی مصرف منابع کانتینرها:

docker stats

– بهینه‌سازی کانتینرها با محدود کردن منابع:

docker run -d –cpus=”1.0″ –memory=”512m” nginx

– اطمینان حاصل کنید که سیستم شما از Storage Driver بهینه‌ای استفاده می‌کند:

docker info | grep Storage

7. مشکل: خطای “Permission Denied” هنگام اجرای Docker

 علائم:

– هنگام اجرای دستورات Docker به‌عنوان کاربر عادی با خطای permission denied مواجه می‌شوید.

 راه‌حل:

– اطمینان حاصل کنید که کاربر به گروه Docker اضافه شده‌است:

sudo usermod -aG docker $USER

– سپس، سیستم را مجدداً راه‌اندازی کنید یا از دستور زیر استفاده کنید:

newgrp docker

8. مشکل: عدم توانایی در حذف Volume یا Network

 علائم:

– هنگام حذف Volume یا Network با خطای زیر مواجه می‌شوید:

Error response from daemon: remove <name>: volume is in use

راه‌حل:

– ابتدا بررسی کنید که چه کانتینرهایی از Volume یا Network استفاده می‌کنند:

docker ps -a –filter volume=<volume-name>

– تمام کانتینرهای مرتبط را متوقف و حذف کنید:

docker rm -f $(docker ps -a -q –filter volume=<volume-name>)

جمع‌بندی

در این راهنمای جامع، با مراحل نصب Docker و نحوه راه‌اندازی آن بر روی سیستم‌عامل‌های مختلف از جمله Ubuntu، Windows، macOS، و CentOS آشنا شدیم. سپس به بررسی مفاهیم اساسی Docker مانند کانتینرها، ایمیج‌ها، شبکه‌ها و حجم‌ها (Volumes) پرداختیم. همچنین نحوه دانلود و اجرای اولین کانتینر، مدیریت کانتینرها و عیب‌یابی مشکلات رایج Docker را به تفصیل توضیح دادیم.

Docker یک ابزار قدرتمند برای ایجاد محیط‌های ایزوله‌شده‌است که به شما امکان می‌دهد برنامه‌ها را به‌صورت مستقل از سیستم عامل میزبان اجرا کنید. این قابلیت به توسعه‌دهندگان و مدیران سیستم کمک می‌کند تا به‌سرعت برنامه‌ها را توسعه، آزمایش و به‌صورت مقیاس‌پذیر مستقر کنند. استفاده از Docker باعث کاهش زمان پیاده‌سازی، افزایش امنیت و بهبود کارایی در مدیریت برنامه‌ها می‌شود.

نکات کلیدی که یاد گرفتیم:

– نصب Docker روی سیستم‌های مختلف و بررسی پیش‌نیازهای آن.

– نحوه ایجاد و مدیریت کانتینرها برای اجرای برنامه‌ها در محیط‌های ایزوله.

– استفاده از شبکه‌ها و حجم‌ها (Volumes) برای افزایش انعطاف‌پذیری و مدیریت داده‌ها.

– عیب‌یابی مشکلات رایج که ممکن است هنگام کار با Docker با آن‌ها مواجه شوید.

پیشنهاد می‌کنیم پس از آشنایی با مبانی Docker، مفاهیم پیشرفته‌تری مانند Docker Compose، Docker Swarm و Kubernetes را نیز یاد بگیرید تا به یک متخصص حرفه‌ای در زمینه کانتینرسازی تبدیل شوید.

با تسلط بر Docker، شما می‌توانید بهینه‌سازی‌های فراوانی در پروژه‌های خود ایجاد کرده و از قابلیت‌های مقیاس‌پذیری آن بهره‌مند شوید. امیدواریم این راهنما به شما در مسیر یادگیری Docker کمک کرده باشد و بتوانید از آن به بهترین نحو در پروژه‌های خود استفاده کنید.

سؤالات متداول

 1. Docker چیست و چه کاربردی دارد؟

Docker یک پلتفرم متن‌باز است که به شما امکان می‌دهد برنامه‌ها را به‌صورت کانتینری اجرا کنید. این کانتینرها محیطی ایزوله برای اجرای برنامه‌ها فراهم می‌کنند و به شما اجازه می‌دهند تا برنامه‌های خود را مستقل از سیستم‌عامل میزبان و بدون نیاز به تنظیمات پیچیده اجرا کنید. Docker به‌طور گسترده در DevOps، توسعه نرم‌افزار و پیاده‌سازی مداوم (CI/CD) استفاده می‌شود.

 2. آیا Docker روی تمام سیستم‌عامل‌ها قابل نصب است؟

بله، Docker از سیستم‌عامل‌های مختلفی پشتیبانی می‌کند از جمله:

–  لینوکس‌ها مانند Ubuntu ،CentOS ،Debian و …

– Windows (نسخه‌های Windows 10 و 11 و Windows Server)

– macOS

 3. چگونه می‌توانم بررسی کنم که Docker به‌درستی نصب شده‌است؟

برای بررسی نصب صحیح Docker، می‌توانید از دستور زیر استفاده کنید:

docker –version

اگر Docker به درستی نصب شده باشد، نسخه آن نمایش داده می‌شود. همچنین، می‌توانید با اجرای یک کانتینر آزمایشی، نصب را تست کنید:

docker run hello-world

 4. چگونه مشکل “Cannot connect to the Docker daemon” را برطرف کنم؟

این خطا به این معناست که Docker daemon (سرویس اصلی Docker) اجرا نمی‌شود. برای رفع این مشکل:

– بررسی کنید که سرویس Docker فعال است:

sudo systemctl status docker

– اگر سرویس متوقف شده‌است، آن را راه‌اندازی کنید:

sudo systemctl start docker

– همچنین، مطمئن شوید که کاربر شما در گروه Docker قرار دارد:

sudo usermod -aG docker $USER

 5. چگونه Docker را به‌روزرسانی کنم؟

برای به‌روزرسانی Docker به آخرین نسخه، دستورات زیر را اجرا کنید:

در Ubuntu:

sudo apt update
sudo apt upgrade docker-ce

در macOS و Windows:

– از Docker Desktop استفاده کنید و آن را از طریق تنظیمات به‌روزرسانی کنید.

 6. چگونه می‌توانم تمام کانتینرها، ایمیج‌ها (images) و حجم‌های Docker را پاک کنم؟

اگر نیاز دارید فضای دیسک را آزاد کنید، می‌توانید از دستورات زیر استفاده کنید:

– حذف تمام کانتینرهای متوقف‌شده:

docker container prune

– حذف ایمیج‌های بدون استفاده:

docker image prune

– حذف همه کانتینرها، ایمیج‌ها و شبکه‌های بدون استفاده:

docker system prune -a

> توجه: این دستورات داده‌های شما را حذف می‌کنند، پس با احتیاط از آن‌ها استفاده کنید.

 7. آیا برای استفاده از Docker به مجازی‌سازی (Virtualization) نیاز دارم؟

بله، Docker برای اجرا به قابلیت Virtualization در سیستم شما نیاز دارد. این قابلیت در اکثر پردازنده‌های مدرن وجود دارد و باید در BIOS سیستم فعال باشد. برای بررسی فعال بودن آن:

در Windows:

– وارد Task Manager شوید و به تب Performance بروید. وضعیت Virtualization را بررسی کنید.

در macOS و Linux:

– نیازی به اقدام خاصی نیست، چون Virtualization به‌صورت پیش‌فرض فعال است.

 8. تفاوت بین Docker Engine و Docker Desktop چیست؟

– Docker Engine یک نسخه سروری از Docker است که معمولاً روی سرورها و سیستم‌های Linux نصب می‌شود.

– Docker Desktop یک رابط کاربری گرافیکی (GUI) است که شامل Docker Engine، Docker CLI و Docker Compose است. این نسخه برای کاربران macOS و Windows طراحی شده‌است و کار را برای توسعه‌دهندگان آسان‌تر می‌کند.

 9. چگونه می‌توانم به یک کانتینر در حال اجرا دسترسی پیدا کنم؟

برای ورود به داخل یک کانتینر و دسترسی به خط فرمان آن، می‌توانید از دستور زیر استفاده کنید:

docker exec -it <container-id> /bin/bash

 10. چرا کانتینر من کند اجرا می‌شود؟

کندی اجرای کانتینرها ممکن است به دلیل موارد زیر باشد:

– استفاده بیش از حد از منابع (CPU، حافظه، I/O)

– عدم بهینه‌سازی Dockerfile

– تنظیمات شبکه نادرست

– استفاده از حجم‌های (Volumes) سنگین

برای بررسی مصرف منابع کانتینرها از دستور زیر استفاده کنید:

docker stats

 11. آیا می‌توانم از Docker در محیط‌های تولید (Production) استفاده کنم؟

بله، Docker برای استفاده در محیط‌های تولید بسیار مناسب است. با استفاده از ابزارهایی مانند Docker Compose و Docker Swarm، می‌توانید اپلیکیشن‌های خود را در مقیاس بزرگ‌تر مستقر کنید. همچنین، Kubernetes به شما امکان می‌دهد کانتینرها را در محیط‌های پیچیده‌تر مدیریت کنید.

 12. چگونه می‌توانم امنیت Docker را افزایش دهم؟

برای افزایش امنیت Docker:

– همیشه Docker را به‌روز نگه دارید.

– از تصاویر رسمی (Official Images) استفاده کنید.

– کانتینرها را با کمترین سطح دسترسی اجرا کنید:

  “`bash

  docker run –user nobody my-container

  “`

– از Docker Bench Security برای بررسی امنیت Docker استفاده کنید:

docker run –rm -it –net host –pid host –cap-add audit_control \
-v /etc:/etc -v /usr/bin/docker:/usr/bin/docker \
–label docker_bench_security \
docker/docker-bench-security