5
(1)

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

این راهنمای جامع و کاملاً به‌روز، به شما نشان می‌دهد که چگونه می‌توانید این موانع را دور بزنید. ما از DNSهای تحریم‌شکن معتبر (مثل شکن) و همچنین از قدرت مخازن داخلی (مانند ابرآروان) استفاده خواهیم کرد تا نصب داکر در ایران را روی سرور اوبونتو ۲۲.۰۴، به تجربه‌ای روان و بدون دردسر تبدیل کنیم. این مقاله برای توسعه‌دهندگان، مدیران سیستم، و هر کسی که می‌خواهد برنامه‌های خود را در محیط‌های ایزوله و قابل حمل اجرا کند، ضروری است.

فهرست مطالب

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

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

۱. کانتینرها: بسته‌بندی جادویی برنامه‌ها

تصور کنید می‌خواهید یک برنامه را روی سرور خود اجرا کنید. این برنامه به کتابخانه‌ها، تنظیمات، و وابستگی‌های خاصی نیاز دارد. داکر این برنامه و تمام وابستگی‌هایش را در یک “کانتینر” بسته‌بندی می‌کند. این کانتینر:

  • سبک و قابل حمل است: در هر محیطی که داکر نصب باشد، بدون تغییر اجرا می‌شود (روی لپ‌تاپ شما، سرور ابری، یا سرور مجازی ایران).

  • ایزوله است: کانتینرها از یکدیگر و از سیستم‌عامل میزبان جدا هستند، که امنیت و پایداری را افزایش می‌دهد.

  • سریع است: راه‌اندازی کانتینرها به مراتب سریع‌تر از ماشین‌های مجازی است.

docker-iran-installation-guide-docker-vs-vm-container-comparison-cartoon

VM مانند یک خانه سنتی در برابر Docker Container به سادی و راحتی یک لگوی قابل حمل

۲. چالش تحریم‌ها و راه‌حل‌های ایرانی

متأسفانه، به دلیل تحریم‌ها، دسترسی مستقیم به Docker Hub (مخزن اصلی ایمیج‌های داکر) با IP ایران اغلب مسدود است. اینجاست که راهکارهای ما اهمیت پیدا می‌کنند:

  • DNSهای تحریم‌شکن: برای دور زدن محدودیت‌های جغرافیایی.

  • مخازن داخلی: (مانند ابرآروان) که نسخه‌های کَش‌شده ایمیج‌های معروف را در داخل ایران نگهداری می‌کنند و سرعت بالایی دارند. (می‌توانید از docker.ir نیز به عنوان جایگزین استفاده کنید.)

docker-iran-installation-guide-docker-iran-sanctions-unlock-concept-art

رفع تحریم های داکتر با با استفاده از ایمیج ابرآروان

🛠️ پیش‌نیازها: آماده‌سازی سرور اوبونتو برای نصب داکر

قبل از شروع، مطمئن شوید که سرور شما آماده است:

  • سرور اوبونتو ۲۲.۰۴ (یا بالاتر): با حداقل ۲ گیگابایت رم، ۲ هسته CPU و ۲۰ گیگابایت فضای ذخیره‌سازی. برای سرور مجازی ایران، این پیکربندی مناسب است (مثلاً از ارائه‌دهندگان معتبر).

  • دسترسی Root یا Sudo: برای اجرای دستورات نصب.

  • DNS تحریم‌شکن: برای دسترسی به Docker Hub (اختیاری، اما توصیه می‌شود):

    • شکن: 178.22.122.100 و 185.51.200.2 (می‌توانید از الکترو 78.157.42.100 و 78.157.42.101 یا ۴۰۴ 10.202.10.10 و 10.202.10.11 نیز استفاده کنید.)

  • فایروال (اختیاری): پورت‌های ۸۰ و ۴۴۳ (برای وب‌سرور) باید باز باشند. (می‌توانید به یک راهنمای جامع UFW مراجعه کنید.)

⚙️ مراحل نصب داکر: دور زدن تحریم‌ها و استفاده از مخازن داخلی

این فرآیند را با دقت دنبال کنید تا نصب داکر در ایران با موفقیت انجام شود.

گام ۱: تنظیم DNS تحریم‌شکن (با تمرکز بر شکن)

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

  1. اتصال به سرور با SSH:

    ssh root@your-server-ip
  2. تهیه نسخه پشتیبان از فایل DNS برای جلوگیری از تغییرات ناخواسته در تنظیمات DNS

    sudo cp /etc/resolv.conf /etc/resolv.conf.bak
  3. تنظیم DNS شکن:

    sudo bash -c 'echo -e "nameserver 178.22.122.100\nnameserver 185.51.200.2" > /etc/resolv.conf'

    توضیح: این دستور آدرس‌های DNS شکن را در فایل resolv.conf شما قرار می‌دهد. (در صورت تمایل می‌توانید از DNSهای الکترو یا ۴۰۴ نیز به همین روش استفاده کنید.)

  4. جلوگیری از بازنویسی خودکار DNS:

    sudo chattr +i /etc/resolv.conf

    توضیح: این دستور مانع از آن می‌شود که سیستم‌عامل به صورت خودکار DNS را به حالت پیش‌فرض برگرداند.

گام ۲: نصب پیش‌نیازها و مخزن رسمی داکر

حالا سرور را برای نصب داکر آماده می‌کنیم.

  1. بروزرسانی سیستم و نصب پکیج‌های ضروری:

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

    توضیح: این پکیج‌ها برای برقراری ارتباط امن با مخازن HTTPS و افزودن کلیدهای GPG داکر ضروری هستند.

  2. افزودن کلید GPG رسمی داکر:

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

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

  3. افزودن مخزن رسمی داکر به لیست منابع:

    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
  4. نصب داکر و داکر کامپوز:

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

    توضیح: این دستورات، هسته داکر (docker-ce)، ابزار خط فرمان (docker-ce-cli)، زمان اجرای کانتینرها (containerd.io)، و افزونه‌های docker-buildx و docker-compose را نصب می‌کنند. Docker Compose برای مدیریت برنامه‌های چندکانتینری حیاتی است.

  5. اضافه کردن کاربر به گروه داکر:

    sudo usermod -aG docker $USER 
    newgrp docker

    توضیح: این کار به شما اجازه می‌دهد تا بدون نیاز به sudo، دستورات داکر را اجرا کنید. newgrp docker بلافاصله تغییر را اعمال می‌کند.

گام ۳: تنظیم داکر برای استفاده از مخزن داخلی ابرآروان

برای اطمینان از دسترسی پایدار و سرعت بالا، استفاده از ریجستری ابرآروان توصیه می‌شود.

  1. تنظیم داکر برای استفاده از مخزن ابرآروان:

    sudo bash -c 'cat > /etc/docker/daemon.json <<EOF
    {
    "insecure-registries" : ["https://docker.arvancloud.ir"],
    "registry-mirrors": ["https://docker.arvancloud.ir"]
    }
    EOF'

    توضیح: این تنظیمات به داکر می‌گوید که ابتدا از مخزن ابرآروان برای کشیدن ایمیج‌ها استفاده کند. این مخزن نیازی به DNS تحریم‌شکن ندارد و سرعت بسیار خوبی را ارائه می‌دهد. (می‌توانید از docker.ir نیز به عنوان جایگزین استفاده کنید.)

  2. راه‌اندازی مجدد سرویس داکر:

    sudo systemctl restart docker

🚀 گام‌های پیشرفته: مدیریت کانتینرها و Docker Compose

حالا که داکر نصب شده، بیایید کمی حرفه‌ای‌تر کار کنیم.

گام ۱: کشیدن و اجرای ایمیج Nginx از ابرآروان

  1. کشیدن ایمیج Nginx از ابرآروان:

    docker pull docker.arvancloud.ir/nginx
  2. اجرای کانتینر Nginx:

    docker run -d -p 80:80 --name my-nginx docker.arvancloud.ir/nginx

    توضیح: این دستور یک وب‌سرور Nginx را راه‌اندازی می‌کند. پس از این مرحله، می‌توانید برای تست به بخش ۶ (تست و عیب‌یابی) مراجعه کنید.

گام 2: مدیریت کانتینرها و ساخت ایمیج‌های سفارشی

در این مرحله، نحوه مشاهده کانتینرهای فعال و غیرفعال و همچنین چگونگی ساخت یک ایمیج داکر سفارشی با استفاده از Dockerfile را بررسی می‌کنیم.

مشاهده لیست کانتینرهای فعال و غیرفعال

docker ps -a

ساخت Dockerfile سفارشی (مثال: نصب Nginx روی اوبونتو)

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

mkdir my_custom_nginx_image
cd my_custom_nginx_image

سپس، یک فایل به نام Dockerfile (دقیقاً با همین نام و با حرف D بزرگ، بدون هیچ پسوندی) با محتوای زیر ایجاد کنید. می‌توانید از ویرایشگر nano استفاده کنید:

nano Dockerfile

پس از اجرای دستور بالا، محتوای زیر را در ویرایشگر nano کپی و جایگذاری کنید:

FROM docker.arvancloud.ir/ubuntu:22.04
RUN apt update && apt install -y nginx
CMD ["nginx", "-g", "daemon off;"]

برای ذخیره فایل در nano، کلیدهای Ctrl+O را فشار دهید، سپس Enter را بزنید و در نهایت با Ctrl+X خارج شوید.

بیلد کردن ایمیج سفارشی

حالا که فایل Dockerfile را در دایرکتوری my_custom_nginx_image ایجاد کرده‌اید، می‌توانید ایمیج داکر خود را بیلد کنید. اطمینان حاصل کنید که هنوز در همان دایرکتوری (my_custom_nginx_image) هستید:

docker build -t my-custom-nginx .

اجرای کانتینر از ایمیج سفارشی

این ایمیج my-custom-nginx اکنون در سیستم شما موجود است و می‌توانید آن را اجرا کنید:

docker run -d -p 8081:80 --name my-custom-nginx-container my-custom-nginx

توضیح: ما پورت 8081 هاست را به پورت 80 کانتینر نگاشت کردیم تا با Nginx قبلی تداخل نداشته باشد.

گام 3: استفاده از Docker Compose برای برنامه‌های چندکانتینری

Docker Compose برای مدیریت برنامه‌هایی با چندین سرویس (مثل یک وب‌سایت با دیتابیس و بک‌اند) ایده‌آل است. برای استفاده از آن، ما یک فایل docker-compose.yml ایجاد می‌کنیم که تمام سرویس‌های ما را تعریف می‌کند.

ایجاد فایل docker-compose.yml (مثال: Nginx و Redis)

ابتدا، یک دایرکتوری جدید برای پروژه Docker Compose خود ایجاد کنید و وارد آن شوید:

mkdir my_multi_service_app
cd my_multi_service_app

سپس، یک فایل به نام docker-compose.yml (دقیقاً با همین نام و با حروف کوچک، بدون پسوند) با محتوای زیر ایجاد کنید. می‌توانید از ویرایشگر nano استفاده کنید:

nano docker-compose.yml

پس از اجرای دستور بالا، محتوای زیر را در ویرایشگر nano کپی و جایگذاری کنید. این مثال شامل یک سرویس Nginx و یک سرویس Redis است:

version: '3.8'
services:
web:
image: docker.arvancloud.ir/nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
redis:
image: docker.arvancloud.ir/redis:latest

برای ذخیره فایل در nano، کلیدهای Ctrl+O را فشار دهید، سپس Enter را بزنید و در نهایت با Ctrl+X خارج شوید.

ایجاد فایل nginx.conf (برای مثال Docker Compose)

اگر از بخش volumes در docker-compose.yml استفاده می‌کنید، نیاز به یک فایل nginx.conf در همان دایرکتوری my_multi_service_app خواهید داشت. یک فایل ساده برای تست می‌توانید بسازید:

nano nginx.conf

محتوای زیر را در آن قرار دهید:

events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name localhost;
location / {
return 200 "Hello from Nginx via Docker Compose!\n";
}
}
}

ذخیره و خروج (Ctrl+O، Enter، Ctrl+X).

اجرای Docker Compose

حالا که فایل docker-compose.yml (و nginx.conf اگر نیاز دارید) را ایجاد کرده‌اید، در همان پوشه my_multi_service_app، این دستور را اجرا کنید تا تمام سرویس‌ها را راه‌اندازی کند:

docker compose up -d
docker-iran-installation-guide-configuring-dns-for-docker-terminal-art

تنظیم DNS در اوبونتو برای Docker Hub

🔒 گام‌های امنیتی: تنظیم فایروال (UFW)

برای محافظت از سرور و کانتینرهای خود، تنظیم فایروال ضروری است.

  1. نصب و فعال‌سازی UFW (اگر از قبل نصب نیست):

    sudo apt install ufw -y
    sudo ufw enable
    
  2. اجازه دسترسی به پورت‌های مورد نیاز:

    مانند: پورت SSH و Nginx سفارشی و Nginx روی پورت 80 و Nginx با Docker Compose

    sudo ufw allow ssh
    sudo ufw allow 80/tcp
    sudo ufw allow 8081/tcp
    sudo ufw allow 8082/tcp
    

    توضیح: برای سایر پورت‌هایی که کانتینرهای شما ممکن است استفاده کنند، نیز اجازه دسترسی صادر کنید.

  3. فعال‌سازی نهایی فایروال:

    sudo ufw enable
docker-iran-installation-guide-building-custom-dockerfile-code-art

ساخت ایمیل سفارشی داکر با Dockerfile

✅ گام‌های نهایی: تست و عیب‌یابی داکر

برای اطمینان از عملکرد صحیح داکر و کانتینرهای شما، این مراحل را دنبال کنید:

  1. بررسی نسخه داکر: برای اطمینان از نصب موفقیت‌آمیز داکر:

    docker --version

    توضیح: باید نسخه ۲۰ یا بالاتر را مشاهده کنید. به عنوان مثال: Docker version 24.0.5, build 24.0.5-0ubuntu1~22.04.1

  2. بررسی وضعیت سرویس داکر: برای اطمینان از فعال و در حال اجرا بودن سرویس داکر:

    sudo systemctl status docker

    توضیح: باید active (running) را مشاهده کنید.

docker-iran-installation-guide-docker-installation-success-terminal-art

3. تست hello-world: یک کانتینر ساده hello-world را اجرا کنید تا مطمئن شوید داکر می‌تواند ایمیج‌ها را بکشد و اجرا کند:

docker run hello-world

توضیح: اگر داکر به درستی کار کند، پیامی مانند “Hello from Docker!” را در خروجی خواهید دید.

4. مشاهده کانتینرهای در حال اجرا: برای دیدن لیست کانتینرهایی که راه‌اندازی کرده‌اید (مانند Nginx):

docker ps -a

توضیح: این دستور تمام کانتینرهای فعال و غیرفعال را نشان می‌دهد. وضعیت کانتینرهای Nginx باید Up باشد.

5. مشاهده لاگ‌های کانتینر: اگر کانتینری به درستی کار نمی‌کند، لاگ‌های آن می‌توانند سرنخ‌های خوبی برای عیب‌یابی به شما بدهند. مثلاً برای کانتینر my-nginx:

docker logs my-nginx

6. تست دسترسی از مرورگر: برای اطمینان از دسترسی‌پذیری وب‌سرورهای Nginx که راه‌اندازی کرده‌اید:

    • آدرس IP سرور خود را با پورت 80 (برای my-nginx)، پورت 8081 (برای my-custom-nginx-container)، یا پورت 8082 (برای Nginx با Docker Compose) در مرورگر باز کنید.

    • باید صفحه پیش‌فرض Nginx را مشاهده کنید. (مثلاً: http://your-server-ip:8082)

7. عیب‌یابی تحریم‌ها: اگر هنگام docker pull یا docker run با خطاهای 403 Forbidden یا timeout مواجه شدید:

    • ابتدا DNS خود را دوباره چک کنید (گام ۳.۱) و از فعال بودن DNS تحریم‌شکن مطمئن شوید.

    • همیشه از مخازن داخلی مانند ابرآروان (گام ۳.۳) به عنوان راهکار اصلی استفاده کنید.

📝 خلاصه‌ای از آنچه آموختیم:

  • داکر و تحریم‌ها: فهمیدیم داکر چیست و چگونه تحریم‌ها می‌توانند نصب آن را در ایران دشوار کنند.

  • پیش‌نیازها: سرور اوبونتو ۲۲.۰۴ و دسترسی sudo آماده شد.

  • دور زدن تحریم‌ها: نحوه تنظیم DNS تحریم‌شکن (شکن) را فرا گرفتیم.

  • نصب کامل داکر: مراحل نصب docker-ce، docker-ce-cli، containerd.io و docker-compose-plugin را طی کردیم.

  • مخازن داخلی: با پیکربندی داکر برای استفاده از مخازن ابرآروان آشنا شدیم.

  • مدیریت پیشرفته: نحوه ساخت Dockerfile سفارشی و استفاده از Docker Compose برای مدیریت چند کانتینر را یاد گرفتیم.

  • امنیت: فایروال UFW را برای محافظت از سرور تنظیم کردیم.

  • تست و عیب‌یابی: آموختیم چگونه نصب داکر را بررسی و مشکلات را رفع کنیم.

  • اسکریپت خودکار: یک اسکریپت جامع برای نصب سریع و بی‌دردسر داکر در اختیار شما قرار گرفت.

❓ سوال: آیا در حین نصب داکر در ایران با مشکل خاصی روبرو شدید که در این آموزش پوشش داده نشده باشد؟ تجربه خود را در بخش نظرات با ما و سایر کاربران به اشتراک بگذارید.

docker-iran-installation-guide-docker-iran-sanctions-unlock-concept-art

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

📞 جمع‌بندی

شما با موفقیت داکر را در ایران روی سرور اوبونتو ۲۲.۰۴ نصب و پیکربندی کرده‌اید. اکنون می‌توانید با استفاده از DNSهای تحریم‌شکن و مخازن داخلی، کانتینرهای خود را برای توسعه، آزمایش، یا استقرار برنامه‌هایتان راه‌اندازی و مدیریت کنید. این مهارت، گام بزرگی در مسیر حرفه‌ای شما به عنوان یک توسعه‌دهنده یا مدیر سیستم است.

برای بهینه‌سازی عملکرد و امنیت کانتینرهای داکر خود، به یک زیرساخت سرور قدرتمند و پایدار نیاز دارید.

همین امروز با خرید سرور مجازی لینوکس (VPS) از Zoip Server، از منابع اختصاصی و پهنای باند بالا بهره‌مند شوید تا داکر و کانتینرهای شما با بهترین کارایی اجرا شوند.

🔍 منابع:

[۱] Docker Documentation, Install Docker Engine on Ubuntu.

Available at: https://docs.docker.com/engine/install/ubuntu/

[۲] ArvanCloud, راهنمای استفاده از رجیستری داکر ابری.

Available at: https://www.arvancloud.ir/fa/cloud-docker/documentation/

[۳] Shecan.ir, DNS for bypassing sanctions.

Available at: https://www.shecan.ir/

[۴] Ubuntu Documentation, ufw.

Available at: https://ubuntu.com/server/docs/security-firewall

چقدر این مطلب مفید بود؟

روی یک ستاره کلیک کنید تا به آن امتیاز دهید!

میانگین امتیاز 5 / 5. تعداد آرا: 1

تا الان رای نیامده! اولین نفری باشید که به این پست امتیاز می دهید.