دليل Docker للمبتدئين: التثبيت والأوامر الأساسية
دليل Docker الشامل: التثبيت، الأوامر الأساسية (run, stop, rm, ps)، إدارة الصور، وحدات التخزين وأساسيات الشبكة على خوادم Linux.
جدول المحتويات
دليل Docker للمبتدئين: التثبيت والأوامر الأساسية
Docker منصة مفتوحة المصدر تتيح تشغيل التطبيقات في حاويات معزولة. توفر بيئة متسقة من التطوير إلى الإنتاج. يغطي هذا الدليل تثبيت Docker والأوامر الأساسية وسيناريوهات الاستخدام العملي.
ما هو Docker؟
يقوم Docker بتعبئة التطبيقات وتبعياتها في حاويات قابلة للنقل. على عكس الأجهزة الافتراضية:
- يشارك نواة نظام التشغيل المضيف (أخف بكثير)
- يبدأ ويتوقف في ثوانٍ
- يستهلك موارد أقل بكثير
- يحل مشكلة "يعمل على جهازي"
Docker هو حجر الأساس في تطوير البرمجيات الحديثة ونشرها. على خوادم REXE، يمكنك نشر التطبيقات بسهولة باستخدام Docker.
تثبيت Docker
Debian/Ubuntu
# إزالة الإصدارات القديمة
sudo apt remove docker docker-engine docker.io containerd runc
# تثبيت المتطلبات الأساسية
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release -y
# إضافة مفتاح GPG لـ Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# إضافة مستودع Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# تثبيت Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
# تشغيل الخدمة وتفعيلها
sudo systemctl start docker
sudo systemctl enable docker
RHEL/CentOS/AlmaLinux
# إضافة مستودع Docker
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# تثبيت Docker
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
# تشغيل الخدمة
sudo systemctl start docker
sudo systemctl enable docker
التحقق من التثبيت
# التحقق من إصدار Docker
docker --version
# تشغيل حاوية اختبار
sudo docker run hello-world
# استخدام Docker بدون sudo
sudo usermod -aG docker $USER
newgrp docker
الأوامر الأساسية لـ Docker
تشغيل الحاويات
# تشغيل حاوية بسيطة
docker run nginx
# التشغيل في الخلفية (detached)
docker run -d nginx
# مع تحويل المنافذ
docker run -d -p 8080:80 nginx
# مع اسم
docker run -d --name web-server -p 8080:80 nginx
# مع متغير بيئة
docker run -d -e MYSQL_ROOT_PASSWORD=secret --name mysql mysql:8.0
# مع تركيب وحدة تخزين
docker run -d -v /host/dir:/container/dir nginx
# سياسة إعادة التشغيل التلقائي
docker run -d --restart unless-stopped nginx
# طرفية تفاعلية
docker run -it ubuntu bash
إدارة الحاويات
# سرد الحاويات قيد التشغيل
docker ps
# سرد جميع الحاويات (بما فيها المتوقفة)
docker ps -a
# إيقاف حاوية
docker stop اسم_الحاوية
# تشغيل حاوية
docker start اسم_الحاوية
# إعادة تشغيل حاوية
docker restart اسم_الحاوية
# حذف حاوية (يجب إيقافها أولاً)
docker rm اسم_الحاوية
# حذف حاوية قيد التشغيل بالقوة
docker rm -f اسم_الحاوية
# حذف جميع الحاويات المتوقفة
docker container prune
مراقبة الحاويات
# عرض سجلات الحاوية
docker logs اسم_الحاوية
# متابعة السجلات في الوقت الفعلي
docker logs -f اسم_الحاوية
# آخر 100 سطر من السجلات
docker logs --tail 100 اسم_الحاوية
# استخدام الموارد
docker stats
# تفاصيل الحاوية
docker inspect اسم_الحاوية
# الاتصال بطرفية الحاوية
docker exec -it اسم_الحاوية bash
# تنفيذ أمر في الحاوية
docker exec اسم_الحاوية ls /var/www
إدارة الصور
# تنزيل صورة
docker pull nginx
docker pull nginx:1.25
docker pull ubuntu:22.04
# سرد الصور المحلية
docker images
# حذف صورة
docker rmi nginx
# حذف الصور غير المستخدمة
docker image prune
# تنظيف جميع الموارد غير المستخدمة
docker system prune -a
إنشاء صور باستخدام Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
# إنشاء صورة
docker build -t myapp:1.0 .
# رفع إلى Docker Hub
docker tag myapp:1.0 username/myapp:1.0
docker push username/myapp:1.0
إدارة وحدات التخزين
تضمن وحدات التخزين استمرار البيانات حتى بعد حذف الحاويات.
# إنشاء وحدة تخزين
docker volume create database-data
# سرد وحدات التخزين
docker volume ls
# تركيب وحدة تخزين في حاوية
docker run -d -v database-data:/var/lib/mysql mysql:8.0
# Bind mount (مجلد المضيف)
docker run -d -v /root/data:/app/data nginx
# حذف وحدة تخزين
docker volume rm database-data
# حذف وحدات التخزين غير المستخدمة
docker volume prune
أساسيات الشبكة
# سرد الشبكات
docker network ls
# إنشاء شبكة مخصصة
docker network create app-network
# توصيل الحاويات بالشبكة
docker run -d --network app-network --name web nginx
docker run -d --network app-network --name db mysql:8.0
# الحاويات في نفس الشبكة يمكنها الوصول لبعضها بالاسم
# من حاوية web: ping db
# تفاصيل الشبكة
docker network inspect app-network
أمثلة عملية
خادم ويب Nginx
docker run -d \
--name nginx-web \
-p 80:80 \
-v /var/www/html:/usr/share/nginx/html:ro \
--restart unless-stopped \
nginx:alpine
قاعدة بيانات MySQL
docker run -d \
--name mysql-db \
-e MYSQL_ROOT_PASSWORD=strong_password \
-e MYSQL_DATABASE=myapp \
-v mysql-data:/var/lib/mysql \
-p 3306:3306 \
--restart unless-stopped \
mysql:8.0
لإدارة حاويات متعددة، استخدم Docker Compose. يتيح لك ملف docker-compose.yml تشغيل جميع الخدمات بأمر واحد.
الخلاصة
Docker أداة لا غنى عنها لنشر التطبيقات الحديثة. بعد إتقان الأساسيات، انتقل إلى Docker Compose لإدارة خدمات متعددة. على خوادم REXE، يتيح لك Docker تشغيل التطبيقات بشكل معزول وآمن وقابل للنقل.
مقالات ذات صلة
الاتصال بخادم VDS عبر SSH: PuTTY والطرفية والمفاتيح
دليل شامل للاتصال بخادم Linux VDS عبر SSH: PuTTY، الطرفية، المصادقة بالمفتاح، إنشاء قاعدة تصفية Path Panel، تغيير المنفذ ونصائح الأمان الأساسية.
الاتصال بـ Windows VDS عبر RDP: دليل شامل للمبتدئين
دليل خطوة بخطوة للاتصال بـ Windows Server VDS عبر RDP: الإعداد الكامل، تفعيل NLA للأمان، إنشاء قاعدة تصفية Path Panel واستكشاف الأخطاء وإصلاحها.
تغيير نظام تشغيل خادم VDS: دليل إعادة التثبيت خطوة بخطوة
تغيير نظام تشغيل خادم VDS عبر لوحة REXE: نصائح النسخ الاحتياطي قبل التثبيت، توزيعات Linux المدعومة وإصدارات Windows Server المتاحة للتثبيت الآن.