آموزش نصب داکر در ایران روی اوبونتو با DNS تحریمشکن و مخازن داخلی
مقدمه: نصب داکر در ایران با دور زدن تحریمها
نصب داکر در ایران به دلیل تحریمهای اینترنتی و محدودیت دسترسی به مخازن Docker Hub چالشبرانگیزه. اما با استفاده از DNSهای تحریمشکن مثل شکن، الکترو، و 404 یا مخازن داخلی مثل ابرآروان و docker.ir، میتونید به راحتی داکر رو روی سرور اوبونتو 22.04 نصب کنید و کانتینرهای خودتون رو راهاندازی کنید. این آموزش برای مبتدیانی طراحی شده که با سرورهای مجازی ایرانی کار میکنن و میخوان برنامههاشون رو در محیطهای ایزوله اجرا کنن.
داکر یه پلتفرم متنبازه که به شما امکان میده برنامهها و وابستگیهاشون رو در کانتینرهای سبک بستهبندی کنید. این راهنما شما رو قدمبهقدم برای نصب داکر در ایران هدایت میکنه، با تمرکز بر دور زدن تحریمها و استفاده از مخازن داخلی.
همچنین بخوانید: آموزش ساخت DNS گیمینگ

پیشنیازها برای نصب داکر در ایران
قبل از شروع، موارد زیر رو آماده کنید:
- سرور اوبونتو : حداقل 2 گیگ رم، 2 هسته CPU، 20 گیگ فضای ذخیرهسازی. مناسب برای سرورهای مجازی ایرانی (مثل شهریار تبریز). راهنمای لینوکس رو ببینید.
- دسترسی root یا sudo: برای اجرای دستورات.
- DNS تحریمشکن: شکن (178.22.122.100 و 185.51.200.2)، الکترو (78.157.42.100 و 78.157.42.101)، یا 404 (10.202.10.10 و 10.202.10.11).
- فایروال: پورتهای 80 و 443 برای تست باز باشن. آموزش UFW.
زمان تقریبی: 30 تا 60 دقیقه.
گام 1: تنظیم DNS تحریمشکن برای دسترسی به Docker Hub
برای دور زدن تحریمهای Docker Hub، باید DNS سرور رو به یه سرویس تحریمشکن تغییر بدید.
مراحل تنظیم DNS
- اتصال به سرور:
ssh root@your-server-ip
توضیح: IP سرور مجازی ایرانی خودتون رو وارد کنید.
- تهیه نسخه پشتیبان از resolv.conf:
sudo cp /etc/resolv.conf /etc/resolv.conf.bak
توضیح: این کار از تغییرات ناخواسته جلوگیری میکنه.
- تنظیم DNS شکن:
sudo bash -c 'echo -e "nameserver 178.22.122.100\nnameserver 185.51.200.2" > /etc/resolv.conf'
توضیح: این آدرسهای شکن تحریمها رو دور میزنن. برای الکترو (78.157.42.100 و 78.157.42.101) یا 404 (10.202.10.10 و 10.202.10.11) هم میتونید مشابه عمل کنید.
- جلوگیری از بازنویسی DNS:
sudo chattr +i /etc/resolv.conf
توضیح: این دستور مانع تغییر خودکار DNS توسط سیستم میشه.
- تست DNS:
ping hub.docker.com
توضیح: اگر پاسخ گرفتید، DNS درست کار میکنه.
گام 2: نصب پیشنیازها و مخزن داکر
سیستم رو برای نصب داکر آماده میکنیم.
مراحل نصب
- بروزرسانی سیستم:
sudo apt update && sudo apt upgrade -y sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
توضیح: این پکیجها برای امنیت و دسترسی به مخزن داکر ضروری هستن.
- افزودن کلید GPG:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
توضیح: اگر به دلیل تحریم خطا گرفتید، از یه VPN یا پراکسی موقت استفاده کنید.
- افزودن مخزن داکر:
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
- نصب داکر:
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
توضیح: این دستورات نسخه پایدار داکر و Docker Compose رو نصب میکنن. بر خلاف آموزش وبسافت که Docker Compose رو نادیده میگیره، ما این ابزار رو هم اضافه کردیم.
گام 3: استفاده از مخازن داخلی (ابرآروان و docker.ir)
برای دور زدن تحریمها، از مخازن داخلی مثل ابرآروان یا docker.ir استفاده کنید.
مراحل استفاده
- اضافه کردن کاربر به گروه داکر:
sudo usermod -aG docker $USER newgrp docker
توضیح: این کار اجازه میده بدون sudo از داکر استفاده کنید.
- تنظیم مخزن ابرآروان:
sudo bash -c 'cat > /etc/docker/daemon.json <
توضیح: این مخزن نیازی به DNS تحریمشکن نداره.
- کشیدن ایمیج از ابرآروان:
docker pull docker.arvancloud.ir/nginx
- اجرای کانتینر Nginx:
docker run -d -p 80:80 --name my-nginx docker.arvancloud.ir/nginx
توضیح: این یه وبسرور Nginx راهاندازی میکنه. از مرورگر IP سرورتون رو باز کنید.
- استفاده از مخزن docker.ir (اختیاری):
sudo bash -c 'cat > /etc/docker/daemon.json <
توضیح: این مخزن هم برای دور زدن تحریمها مناسبه.
گام 4: استفاده از Docker Hub با DNS تحریمشکن
اگر ترجیح میدید از Docker Hub استفاده کنید:
- اجرای کانتینر Hello World:
docker run hello-world
توضیح: با DNS شکن، این دستور پیام “Hello from Docker” رو نشون میده.
- اجرای کانتینر Nginx از Docker Hub:
docker run -d -p 8080:80 --name my-nginx-hub nginx
توضیح: پورت 8080 برای جلوگیری از تداخل با کانتینر ابرآروان استفاده شده.
گام 5: مدیریت کانتینرها و Docker Compose
برای مدیریت بهتر و اجرای چند کانتینر:
- لیست کانتینرها:
docker ps -a
توضیح: همه کانتینرهای فعال و غیرفعال رو نشون میده.
- ساخت Dockerfile سفارشی:
FROM docker.arvancloud.ir/ubuntu:22.04 RUN apt update && apt install -y nginx CMD ["nginx", "-g", "daemon off;"]
توضیح: فایل رو ذخیره کنید (مثلاً
Dockerfile) و بیلد کنید:docker build -t my-nginx .. بر خلاف رقبا (مثل وبسافت)، ما ساخت ایمیج سفارشی رو آموزش دادیم. - اجرای تصویر سفارشی:
docker run -d -p 8081:80 --name my-custom-nginx my-nginx
- استفاده از Docker Compose:
version: '3' services: web: image: docker.arvancloud.ir/nginx ports: - "8082:80"توضیح: فایل رو به نام
docker-compose.ymlذخیره کنید و اجرا کنید:docker-compose up -d. این برای اجرای چند کانتینر مناسبه و در آموزشهای رقبا (مثل فزونی) غایبه.
گام 6: تنظیم فایروال برای امنیت
برای محافظت از سرور:
- نصب و تنظیم UFW:
sudo apt install ufw -y sudo ufw allow 80/tcp sudo ufw allow 8080/tcp sudo ufw allow 8081/tcp sudo ufw allow 8082/tcp sudo ufw enable
توضیح: این با مقاله UFW شما همراستاست. آموزش UFW.
گام 7: تست و عیبیابی نصب داکر در ایران
برای اطمینان از عملکرد درست:
- چک نسخه داکر:
docker --version
توضیح: باید نسخه 20 یا بالاتر رو ببینید.
- چک لاگها:
docker logs my-nginx
توضیح: اگر خطایی دیدید، از
docker psبرای وضعیت چک کنید. - تست از مرورگر: IP سرورتون رو با پورتهای 80، 8080، 8081، یا 8082 باز کنید تا صفحه Nginx رو ببینید.
- عیبیابی تحریمها: اگر خطای 403 یا timeout گرفتید، DNS رو عوض کنید یا از مخزن ابرآروان استفاده کنید.
اسکریپت نصب خودکار داکر:
#!/bin/bash
# Script to install Docker on an Iranian VPS with optimized mirrors and error handling
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color
# Logging function
log() {
echo -e "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}
# Error handling function
handle_error() {
log "${RED}Error: $1${NC}"
exit 1
}
# Check if script is run as root
if [[ $EUID -ne 0 ]]; then
handle_error "This script must be run as root (use sudo)"
fi
# Set DNS servers
log "Configuring DNS servers..."
echo -e "nameserver 1.1.1.1\nnameserver 1.0.0.1" | tee /etc/resolv.conf > /dev/null || handle_error "Failed to set DNS servers"
# Configure Iranian mirror
log "Configuring Iranian apt mirror..."
bash <(curl -Ls --ipv4 https://raw.githubusercontent.com/Arash-Ariaye/irvm/refs/heads/main/smirror.sh) || handle_error "Failed to configure Iranian mirror"
# Update package lists and install prerequisites
log "Updating package lists and installing prerequisites..."
apt update || handle_error "Failed to update package lists"
apt install -y apt-transport-https ca-certificates curl software-properties-common || handle_error "Failed to install prerequisites"
# Set alternative DNS servers for Docker download
log "Setting alternative DNS servers for Docker download..."
echo -e "nameserver 181.41.194.177\nnameserver 181.41.194.186" | tee /etc/resolv.conf > /dev/null || handle_error "Failed to set alternative DNS servers"
# Add Docker's official GPG key
log "Adding Docker GPG key..."
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg || handle_error "Failed to add Docker GPG key"
# Set up Docker repository
log "Setting up Docker repository..."
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" | tee /etc/apt/sources.list.d/docker.list > /dev/null || handle_error "Failed to set up Docker repository"
# Install Docker
log "Installing Docker and related components..."
apt update || handle_error "Failed to update package lists for Docker"
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin || handle_error "Failed to install Docker components"
# Verify Docker installation
log "Verifying Docker installation..."
if command -v docker &> /dev/null; then
docker_version=$(docker --version)
log "${GREEN}Docker installed successfully: ${docker_version}${NC}"
else
handle_error "Docker installation verification failed"
fi
# Configure Docker daemon for ArvanCloud mirror (Iranian registry)
log "Configuring Docker daemon for ArvanCloud mirror..."
cat > /etc/docker/daemon.json <<EOF
{
"insecure-registries" : ["https://docker.arvancloud.ir"],
"registry-mirrors": ["https://docker.arvancloud.ir"]
}
EOF || handle_error "Failed to configure Docker daemon"
# Logout and restart Docker service
log "Logging out from Docker and restarting service..."
docker logout || log "${GREEN}Docker logout completed or no login found${NC}"
systemctl restart docker || handle_error "Failed to restart Docker service"
# Verify Docker service restart
sleep 2 # Wait a bit for service to fully restart
if systemctl is-active --quiet docker; then
log "${GREEN}Docker service restarted successfully${NC}"
else
handle_error "Docker service failed to restart"
fi
log "${GREEN}✅ Installation and configuration completed successfully!${NC}"
log "💡 Tip: Test Docker with: docker run hello-world"
نحوه استفاده:
- اسکریپت را در فایل install_docker_ir.sh ذخیره کنید.
- مجوز اجرا بدهید: chmod +x install_docker_ir.sh
- اجرا کنید: sudo ./install_docker_ir.sh
خروجی نمونه:
[2024-01-15 14:30:00] Configuring Docker daemon for ArvanCloud mirror... [2024-01-15 14:30:01] Logging out from Docker and restarting service... [2024-01-15 14:30:01] Docker logout completed or no login found [2024-01-15 14:30:03] Docker service restarted successfully [2024-01-15 14:30:03] ✅ Installation and configuration completed successfully! [2024-01-15 14:30:03] 💡 Tip: Test Docker with: docker run hello-world
جمعبندی و فراخوان به اقدام
این آموزش به شما نشون داد چطور داکر رو در ایران روی اوبونتو 22.04 با DNSهای تحریمشکن (شکن، الکترو، 404) و مخازن داخلی (ابرآروان، docker.ir) نصب کنید. حالا میتونید کانتینرهای خودتون رو برای توسعه یا مدیریت سرورهای مجازی راهاندازی کنید.