اَبرِ دیجیتال، مرکز تخصصی ارائه سرویس های ابری، سرور مجازی/اختصاصی، هاست و دامنه

اَبرِ دیجیتال، مرکز تخصصی ارائه سرویس های ابری

نصب Docker روی Ubuntu 22.04 راهنمای گام‌به‌گام و تصویری

نصب Docker روی Ubuntu 22.04 راهنمای گام‌به‌گام و تصویری

مقدمه

 

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

 

این مقاله گام‌به‌گام به نصب Docker روی Ubuntu 22.04، کار با images و container ها، ساخت و انتشار image، پشتیبانی GPU، و نکات امنیتی و عیب‌یابی می‌پردازد تا بتوانید از صفر تا اجرای برنامه‌های کانتینری شده را به‌صورت عملیاتی انجام دهید.

 

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

سرور ابری و داکر یک ترکیب قدرتمند برای استقرار برنامه‌ها فراهم می‌کنند: با اجرای کانتینرها روی سرورهای ابری، می‌توانید به‌سرعت مقیاس‌بندی افقی انجام دهید، هزینه‌ها را بهینه کنید و با استفاده از رجیستری‌ها و ارکستراتورها مانند Docker Compose یا Kubernetes، چرخهٔ توسعه تا تولید را خودکار و قابل‌اعتماد سازید.

 

این مقاله یک راهنمای جامع و قدم‌به‌قدم برای نصب، پیکربندی، استفاده پایه‌ای و نکات پیشرفتهٔ Docker (نسخهٔ Community Edition) روی Ubuntu 22.04 است.

 

فهرست مطالب

  1. معرفی خلاصه
  2. پیش‌نیازها
  3. نصب Docker از مخزن رسمی
  4. اجرای docker بدون sudo (تنظیم گروه docker)
  5. مفاهیم پایه: image(Image)، کانتینر (Container)، رجیستری
  6. کار با images و کانتینرها: pull, run, ps, exec, stop, rm
  7. ساخت image: docker commit و Dockerfile (نمونهٔ Dockerfile)
  8. انتشار imageبه Docker Hub (login, tag, push)
  9. نصب Docker با پشتیبانی GPU (NVIDIA)
  10. Docker Compose — معرفی و نمونهٔ فایل-compose
  11. پاک‌سازی و حذف Docker
  12. نکات امنیتی و بهترین روش‌ها
  13. عیب‌یابی رایج و رفع خطاها
  14. منابع مفید و پیوندهای مرتبط

 

  1. معرفی خلاصه

 

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

  1. پیش‌نیازها

 

– سیستم عامل: Ubuntu 22.04 (Jammy Jellyfish).

– کاربری با دسترسی sudo (غیر-root ترجیحاً).

– اتصال اینترنت.

– برای استفاده از GPU: کارت NVIDIA و درایور مناسب نصب‌شده.

 

  1. نصب Docker از مخزن رسمی (گام‌به‌گام)

 

توصیه می‌شود Docker را از مخزن رسمی Docker نصب کنید تا آخرین نسخه را دریافت کنید.

 

گام 1 — به‌روزرسانی بسته‌ها

sudo apt update

 

 

گام 2 — نصب پیش‌نیازها برای استفاده از مخازن HTTPS

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

 

 

گام 3 — اضافه کردن کلید GPG رسمی Docker

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

 

 

گام 4 — افزودن مخزن Docker

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

 

 

گام 5 — به‌روزرسانی و اطمینان از منبع صحیح

sudo apt update

apt-cache policy docker-ce

 

خروجی apt-cache policy باید نشان دهد candidate از https://download.docker.com باشد.

 

گام 6 — نصب Docker Engine و اجزای لازم

sudo apt install -y docker-ce docker-ce-cli containerd.io

 

 

گام 7 — فعال‌سازی و بررسی سرویس

sudo systemctl enable --now docker

sudo systemctl status docker --no-pager

 

اگر Active (running) مشاهده شود، نصب موفق بوده است.

 

  1. اجرای docker بدون sudo (گروه docker)

 

به‌صورت پیش‌فرض دستور docker نیاز به دسترسی ریشه دارد. برای اجرای بدون sudo:

sudo usermod -aG docker $USER

 

سپس از سیستم خارج و مجدداً وارد شوید یا `su – $USER` را اجرا کنید. با دستور `groups` تأیید کنید که گروه docker در فهرست شما هست.

 

هشدار امنیتی: افزودن کاربر به گروه docker عملاً دسترسی root به آن کاربر می‌دهد؛ در محیط‌های حساس دقت کنید.

 

  1. مفاهیم پایه

 

– Image: قالبی فقط خواندنی که شامل سیستم‌عامل پایه و نرم‌افزارهاست.

– Container: نمونهٔ درحال‌اجرای یک Image؛ می‌تواند ایزوله و کوتاه‌مدت باشد.

– Registry: مخزنی مانند Docker Hub که images در آن نگهداری می‌شوند.

 

 

  1. کار با images و container ها — دستورات پرکاربرد

 

– اطمینان از کار کردن Docker:

docker run hello-world

 

– جستجوی image در Docker Hub:

docker search ubuntu

 

– دانلود image :

docker pull ubuntu

 

– فهرست images محلی:

docker images

 

– اجرای یک کانتینر تعاملی با اوبونتو:

docker run -it --name my-ubuntu ubuntu bash

 

درون کانتینر شما root هستید؛ پس از کار `exit` کنید.

 

– فهرست کانتینرهای درحال‌ اجرا:

docker ps

 

– فهرست همه container ها (فعال و غیرفعال):

docker ps -a

 

– شروع و توقف کانتینر:

docker start CONTAINER_ID_OR_NAME

docker stop CONTAINER_ID_OR_NAME

 

– اجرای دستور در container  در حال اجرا:

docker exec -it CONTAINER_ID_OR_NAME bash

 

– حذف container :

docker rm CONTAINER_ID_OR_NAME

 

– حذف image :

docker rmi IMAGE_NAME_OR_ID

 

 

  1. ساخت image: docker commit و Dockerfile

 

روش الف — ذخیرهٔ تغییرات یک container به عنوان image:

فرض کنید درون یک container اوبونتو nodejs نصب کرده‌اید، آی‌دی کانتینر d9b100f…

docker commit -m "added Node.js" -a "yourname" d9b100f youruser/ubuntu-nodejs

 

روش ب — بهتر و قابل تکرار: Dockerfile

نمونهٔ ساده Dockerfile که اوبونتو و Node.js نصب می‌کند:

# Dockerfile

FROM ubuntu:22.04

ENV DEBIAN_FRONTEND=noninteractive

RUN apt update && apt install -y curl ca-certificates gnupg && \

    curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \

    apt install -y nodejs && \

    apt clean && rm -rf /var/lib/apt/lists/*

CMD ["bash"]

 

ساخت image از Dockerfile:

docker build -t youruser/ubuntu-nodejs:1.0 .

 

 

  1. انتشار image به Docker Hub

 

– ورود به حساب Docker Hub:

docker login -u your_dockerhub_username

 

– برچسب‌گذاری image (در صورت لزوم):

docker tag youruser/ubuntu-nodejs:1.0 your_dockerhub_username/ubuntu-nodejs:1.0

 

– آپلود image :

docker push your_dockerhub_username/ubuntu-nodejs:1.0

 

پس از push image در داشبورد Docker Hub قابل مشاهده خواهد بود.

 

  1. نصب Docker با پشتیبانی GPU (NVIDIA)

 

پیش‌نیاز: کارت NVIDIA، درایور مناسب نصب‌شده روی سیستم (مثلاً از بسته‌های nvidia-driver از مخازن Ubuntu).

 

گام‌ها:

1) اضافه کردن مخزن NVIDIA Docker:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -

curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt update

 

2) نصب nvidia-docker2 و ری‌استارت داکر:

sudo apt install -y nvidia-docker2

sudo systemctl restart docker

 

3) بررسی در دسترس بودن runtime:

sudo docker info | grep -i runtime -A 5

 

یا اجرا برای تست:

docker run --gpus all --rm nvidia/cuda:11.8-base nvidia-smi

 

اگر خروجی nvidia-smi را دیدید، موفق بوده‌اید.

 

نکته: در توزیع‌های جدید nvidia-docker از طریق پیکربندی runtime پیش‌فرض یا استفاده از –gpus مدیریت می‌شود.

 

  1. Docker Compose — اجرای چند سرویس

 

نصب سریع (نسخهٔ جدید Compose به‌صورت پلاگین یا باینری):

sudo apt install -y docker-compose-plugin

 

مثال ساده docker-compose.yml برای یک برنامه Node + Mongo:

version: "3.8"

services:

  app:

    build: .

    ports:

      - "3000:3000"

    depends_on:

      - db

  db:

    image: mongo:6.0

    volumes:

      - db-data:/data/db

volumes:

  db-data:

 

اجرای stack:

docker compose up -d

docker compose logs -f

docker compose down

 

 

  1. پاک‌سازی و حذف Docker

حذف بسته‌ها:

sudo apt remove -y docker-ce docker-ce-cli containerd.io

sudo apt autoremove -y

 

حذف داده‌ها (هشدار: این کار همهٔ images، کانتینرها، وولوم‌ها را پاک می‌کند):

sudo rm -rf /var/lib/docker

sudo rm -rf /var/lib/containerd

 

حذف مخزن/کلید:

sudo rm /etc/apt/sources.list.d/docker.list

sudo rm /usr/share/keyrings/docker-archive-keyring.gpg

 

 

  1. نکات امنیتی و بهترین روش‌ها

 

– اصل حداقل امتیاز (least privilege): کانتینرها را فقط با مجوزهای لازم اجرا کنید.

– از کاربران غیر-root در داخل کانتینر استفاده کنید (در Dockerfile با USER).

– از images رسمی و تاییدشده و از Docker Content Trust استفاده کنید.

– به‌روزرسانی منظم Docker و سیستم‌عامل برای وصله‌های امنیتی.

– محدود کردن منابع کانتینر با flags مثل –memory و –cpus.

– استفاده از اسکنینگ images (مثلاً ابزارهایی مانند Trivy) برای یافتن آسیب‌پذیری‌ها:

trivy image youruser/ubuntu-nodejs:1.0

 

– احتیاط در افزودن کاربران به گروه docker؛ این کار عملاً دسترسی root می‌دهد.

 

  1. عیب‌یابی رایج و رفع خطاها

 

Docker daemon استارت نمی‌شود:

– بررسی وضعیت:

sudo systemctl status docker

sudo journalctl -u docker --no-pager -n 200

 

خطای دسترسی به داکر از طرف کاربر:

– اضافه کردن به گروه docker و خروج/ورود مجدد:

sudo usermod -aG docker $USER

 

خطاهای storage یا space:

– بررسی فضای دیسک و پاک‌سازی:

docker system df

docker system prune -a --volumes

 

برای یافتن لاگ‌ها و خطای بیشتر از journalctl و لاگ سرویس‌ها استفاده کنید.

 

  1. مثال‌ها و سناریوهای عملی

 

(۱) — اجرای وب‌سرور ساده

– اجرای nginx به‌صورت سریع:

docker run -d --name web -p 8080:80 nginx:stable

 

سپس مرورگر را باز کرده و به http://localhost:8080 بروید.

 

(۲) — ساخت و اجرای اپلیکیشن Node.js

 

Dockerfile نمونه بالا را بسازید، سپس:

docker build -t mynodeapp:1.0 .

docker run -d --name mynode -p 3000:3000 mynodeapp:1.0

 

 

  1. نکات عملی برای تولید (production)

 

– از orchestrator (مثل Kubernetes) برای بار بالا و مقیاس‌پذیری استفاده کنید.

– لاگ‌برداری متمرکز و مانیتورینگ را تنظیم کنید (ELK/Prometheus).

– شبکه‌بندی مناسب (شبکه Bridge، Overlay در swarm/k8s).

– مدیریت اسرار (Secrets) را با ابزارهای مناسب انجام دهید؛ محیط‌ها را مستقیم در Dockerfile قرار ندهید.

 

 

4.1/5 - (2683 امتیاز)

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


5 × 8

قوانین

قوانین ارسال دیدگاه

لطفاً در ارسال دیدگاه از کلمات مناسب استفاده کنید. ارسال اسپم ممنوع است.