إدارة Docker Volume والشبكات: التخزين الدائم وتكوين الشبكة
أنواع Docker volume (named, bind mount, tmpfs)، إدارة الـ volumes، أوضاع شبكات Docker (bridge, host, overlay)، إنشاء شبكات مخصصة والتواصل بين الحاويات. دليل شامل.
جدول المحتويات
إدارة Docker Volume والشبكات
حاويات Docker مؤقتة بطبيعتها — عند حذف الحاوية تُفقد بياناتها أيضاً. تحل الـ volumes هذه المشكلة وتضمن بقاء البيانات بشكل مستقل عن دورة حياة الحاوية. تدير شبكات Docker التواصل بين الحاويات ومع العالم الخارجي.
أنواع Docker Volume
| النوع | الوصف | حالة الاستخدام |
|---|---|---|
| Named Volume | تُدار بواسطة Docker | قاعدة البيانات، بيانات التطبيق |
| Bind Mount | ربط مجلد المضيف | التطوير، ملفات الإعداد |
| tmpfs Mount | مؤقت في الذاكرة | البيانات المؤقتة الحساسة |
إدارة Named Volume
# إنشاء volume
docker volume create myapp-data
# عرض قائمة الـ volumes
docker volume ls
# عرض تفاصيل الـ volume
docker volume inspect myapp-data
# حذف volume
docker volume rm myapp-data
# حذف الـ volumes غير المستخدمة
docker volume prune
تشغيل الحاويات مع Named Volumes
# تشغيل MySQL مع volume
docker run -d \
--name mysql-db \
-e MYSQL_ROOT_PASSWORD=StrongPass123! \
-e MYSQL_DATABASE=myapp \
-v mysql-data:/var/lib/mysql \
-p 3306:3306 \
mysql:8.0
# تشغيل PostgreSQL مع volume
docker run -d \
--name postgres-db \
-e POSTGRES_PASSWORD=StrongPass123! \
-e POSTGRES_DB=myapp \
-v postgres-data:/var/lib/postgresql/data \
-p 5432:5432 \
postgres:15
استخدام Bind Mounts
# ربط المجلد الحالي بالحاوية
docker run -d \
--name nginx-web \
-v /home/user/website:/usr/share/nginx/html:ro \
-p 80:80 \
nginx:latest
# Bind mount للتطوير
docker run -it \
--name node-dev \
-v $(pwd):/app \
-w /app \
-p 3000:3000 \
node:20 \
npm run dev
الـ Volumes مع Docker Compose
# docker-compose.yml
version: '3.8'
services:
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: StrongPass123!
MYSQL_DATABASE: myapp
volumes:
- mysql-data:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro
ports:
- "3306:3306"
app:
image: myapp:latest
volumes:
- app-uploads:/app/uploads
- ./config:/app/config:ro
depends_on:
- db
volumes:
mysql-data:
driver: local
app-uploads:
driver: local
النسخ الاحتياطي واستعادة الـ Volume
# نسخ احتياطي للـ volume (أرشيف tar)
docker run --rm \
-v mysql-data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/mysql-backup.tar.gz -C /data .
# استعادة الـ volume
docker run --rm \
-v mysql-data:/data \
-v $(pwd):/backup \
alpine tar xzf /backup/mysql-backup.tar.gz -C /data
أوضاع شبكات Docker
شبكة Bridge (الافتراضية)
# إنشاء شبكة bridge مخصصة
docker network create myapp-network
# ربط الحاويات بالشبكة المخصصة
docker run -d \
--name web \
--network myapp-network \
nginx
docker run -d \
--name db \
--network myapp-network \
-e MYSQL_ROOT_PASSWORD=StrongPass123! \
mysql:8.0
# الحاويات في الشبكة المخصصة تجد بعضها بالاسم
docker exec web ping db
شبكة Host
# التشغيل في وضع شبكة host (Linux فقط)
docker run -d \
--name nginx-host \
--network host \
nginx
إدارة شبكات Docker
# عرض قائمة الشبكات
docker network ls
# عرض تفاصيل الشبكة
docker network inspect myapp-network
# إنشاء شبكة بشبكة فرعية مخصصة
docker network create \
--driver bridge \
--subnet 172.20.0.0/16 \
--gateway 172.20.0.1 \
myapp-network
# ربط حاوية بشبكة
docker network connect myapp-network existing-container
# فصل حاوية عن شبكة
docker network disconnect myapp-network existing-container
# حذف شبكة
docker network rm myapp-network
الشبكات مع Docker Compose
version: '3.8'
services:
frontend:
image: nginx:latest
networks:
- frontend-net
ports:
- "80:80"
backend:
image: myapp:latest
networks:
- frontend-net
- backend-net
db:
image: mysql:8.0
networks:
- backend-net
environment:
MYSQL_ROOT_PASSWORD: StrongPass123!
networks:
frontend-net:
driver: bridge
backend-net:
driver: bridge
internal: true
الخلاصة
إدارة Docker volume والشبكات هي الأساس لبنية تحتية للحاويات على مستوى الإنتاج. احفظ بياناتك بأمان مع named volumes، وعزل حاوياتك بشبكات bridge مخصصة، وعرّف بنيتك التحتية بالكامل كرمز مع Docker Compose. بهذه الإعدادات على خوادم REXE يمكنك بناء بيئات حاويات موثوقة وقابلة للتوسع.
مقالات ذات صلة
تثبيت Kubernetes مع K3s: تنسيق الحاويات الخفيف
إعداد كلاستر Kubernetes أحادي ومتعدد العقد مع K3s، استخدام kubectl، إنشاء deployments وservices، إدارة التطبيقات مع Helm. دليل Kubernetes لبيئات VPS.
تسجيل الحاويات: إدارة سجلات Docker و Kubernetes
مشغلات سجلات Docker، أمر docker logs، سجلات pods في Kubernetes، جمع السجلات المركزي (Loki, ELK Stack)، تدوير السجلات وأفضل ممارسات إدارة السجلات في بيئة الإنتاج.
أمان Docker: تصليب بيئة الحاويات
أفضل ممارسات أمان Docker: مستخدم غير root، نظام ملفات للقراءة فقط، ملفات seccomp، فحص الصور، أمان Docker socket، عزل الشبكة وإدارة الأسرار.