لقد ثورت Docker على الطريقة التي يبني بها المطورون ويشحنون ويشغلون التطبيقات. توفر بيئة متسقة ومعزولة لتشغيل التطبيقات، مما يجعل من الأسهل تطوير التطبيقات واختبارها ونشرها عبر بيئات مختلفة. ومع ذلك، بالنسبة للمبتدئين، قد تبدو Docker مخيفة مع أوامرها ومصطلحاتها الخاصة. في هذا الدليل الشامل، سنأخذك عبر أوامر Docker الأساسية التي يجب على كل مبتدئ معرفتها، مع إرشادات خطوة بخطوة وأمثلة.
مقدمة عن Docker
قبل أن نغوص في الأوامر، لنفهم بإيجاز ما هي Docker وبعض المفاهيم الرئيسية.
Docker هي منصة مفتوحة المصدر تمكن المطورين من بناء وتطوير وتشغيل التطبيقات داخل الحاويات. الحاويات هي حزم خفيفة الوزن ومستقلة وقابلة للتشغيل تحتوي على كل ما هو ضروري لتشغيل تطبيق، بما في ذلك الكود وبيئة التشغيل وأدوات النظام والمكتبات والإعدادات.
هذه بعض مفاهيم Docker الرئيسية:
- صورة Docker: قالب للقراءة فقط يحتوي على تعليمات لإنشاء حاوية Docker. انها بمثابة مخطط لتطبيقك.
- حاوية Docker: نسخة قابلة للتشغيل من صورة Docker. إنها بيئة معزولة وآمنة حيث يتم تشغيل تطبيقك.
- Docker Hub: خدمة سجل قائمة على السحابة حيث يمكنك العثور على صور Docker الموجودة أو دفع صورك الخاصة.
- Dockerfile: ملف نصي يحتوي على تعليمات لبناء صورة Docker.
الآن، لننغمس في أوامر Docker الأساسية.
تثبيت Docker
قبل أن تتمكن من البدء في استخدام أوامر Docker، ستحتاج إلى تثبيت Docker على جهازك. تختلف عملية التثبيت بناءً على نظام التشغيل الخاص بك. يمكنك العثور على تعليمات التثبيت الخاصة بنظام التشغيل على موقع Docker الرسمي: https://docs.docker.com/get-docker/
بمجرد تثبيت Docker، يمكنك التحقق من التثبيت عن طريق تشغيل الأمر التالي في طرفية الأوامر الخاصة بك:
$ docker --version
يجب أن يعرض هذا الأمر إصدار Docker المثبت على جهازك.
أوامر Docker الأساسية
1. صور Docker
صور Docker هي لبنات بناء الحاويات. هذه بعض الأوامر الأساسية للعمل مع صور Docker:
قائمة صور Docker
لعرض كل صور Docker على جهازك، نفذ:
$ docker images
ستعرض هذه الأوامر قائمة بجميع صور Docker على جهازك، جنبًا إلى جنب مع مستودعها وعلاماتها ومعرف الصورة وتاريخ إنشائها وحجمها.
اسحب صورة Docker
لتنزيل (سحب) صورة Docker من سجل (مثل Docker Hub)، نفذ:
$ docker pull [اسم_الصورة]:[العلامة]
استبدل [اسم_الصورة]
باسم الصورة التي تريد سحبها، و [العلامة]
بالإصدار أو العلامة المحددة للصورة (مثل latest
، 16.04
، وما إلى ذلك). إذا لم تحدد علامة، فسيقوم Docker تلقائيًا بسحب علامة latest
.
على سبيل المثال، لسحب أحدث إصدار من صورة nginx
، نفذ:
$ docker pull nginx
إزالة صورة Docker
لإزالة صورة Docker من جهازك، نفذ:
$ docker rmi [معرف_الصورة]
استبدل [معرف_الصورة]
بمعرف الصورة التي تريد إزالتها. يمكنك العثور على معرف الصورة عن طريق تشغيل docker images
.
إذا كانت الصورة لديها علامات متعددة، فستحتاج إلى إزالة جميع العلامات المرتبطة قبل إزالة الصورة. يمكنك القيام بذلك عن طريق تشغيل:
$ docker rmi [معرف_الصورة] [معرف_الصورة] ...
استبدل [معرف_الصورة]
بمعرفات جميع العلامات التي تريد إزالتها.
أو بدلاً من ذلك، يمكنك استخدام خيار --force
لإزالة صورة حتى لو كانت قيد الاستخدام من قبل حاوية قيد التشغيل:
$ docker rmi --force [معرف_الصورة]
2. حاويات Docker
حاويات Docker هي نسخ قابلة للتشغيل من صور Docker. هذه بعض الأوامر الأساسية للعمل مع حاويات Docker:
قائمة حاويات Docker
لعرض جميع حاويات Docker قيد التشغيل على جهازك، نفذ:
$ docker ps
إذا كنت تريد عرض جميع الحاويات (قيد التشغيل والمتوقفة)، استخدم الخيار -a
:
$ docker ps -a
ستعرض هذه الأوامر مختلف المعلومات حول الحاويات، مثل معرفاتها وأسمائها وصورها وأوقات إنشائها وحالاتها.
تشغيل حاوية Docker
لتشغيل حاوية Docker من صورة، استخدم أمر run
:
$ docker run [خيارات] [اسم_الصورة]:[العلامة] [أمر]
استبدل [خيارات]
بأي خيارات إضافية تريد تمريرها للحاوية (مثل -d
للتشغيل في الوضع المنفصل، -p
لتخصيص المنفذ، -v
لضم المجلدات، وما إلى ذلك)، [اسم_الصورة]
باسم الصورة التي تريد تشغيلها، [العلامة]
بالعلامة المحددة للصورة (إذا رغبت في ذلك)، و [أمر]
بالأمر الذي تريد تشغيله داخل الحاوية (إذا لزم الأمر).
على سبيل المثال، لتشغيل صورة nginx
وتخصيص منفذ 80
من الحاوية إلى منفذك المحلي 8080
، نفذ:
$ docker run -d -p 8080:80 nginx
سيقوم هذا الأمر بتشغيل حاوية nginx
في الوضع المنفصل (-d
) وتخصيص المنفذ 80
من الحاوية إلى المنفذ 8080
على جهازك المحلي.
بدء / إيقاف حاوية Docker
لبدء حاوية Docker متوقفة، نفذ:
$ docker start [معرف_الحاوية]
استبدل [معرف_الحاوية]
بمعرف أو اسم الحاوية التي تريد بدء تشغيلها.
لإيقاف حاوية Docker قيد التشغيل، نفذ:
$ docker stop [معرف_الحاوية]
استبدل [معرف_الحاوية]
بمعرف أو اسم الحاوية التي تريد إيقافها.
إزالة حاوية Docker
لإزالة حاوية Docker متوقفة، نفذ:
$ docker rm [معرف_الحاوية]
استبدل [معرف_الحاوية]
بمعرف أو اسم الحاوية التي تريد إزالتها.
إذا كانت الحاوية قيد التشغيل، فستحتاج إلى إيقافها أولاً قبل إزالتها. أو بدلاً من ذلك، يمكنك استخدام خيار --force
لإزالة حاوية قيد التشغيل:
$ docker rm --force [معرف_الحاوية]
تنفيذ أوامر في حاوية قيد التشغيل
لتنفيذ أمر داخل حاوية Docker قيد التشغيل، استخدم أمر exec
:
$ docker exec [خيارات] [معرف_الحاوية] [أمر]
استبدل [خيارات]
بأي خيارات إضافية تريد تمريرها (مثل -it
للوضع التفاعلي)، [معرف_الحاوية]
بمعرف أو اسم الحاوية قيد التشغيل، و [أمر]
بالأمر الذي تريد تنفيذه داخل الحاوية.
على سبيل المثال، لفتح عرض أوامر bash داخل حاوية قيد التشغيل، نفذ:
$ docker exec -it [معرف_الحاوية] /bin/bash
3. شبكات Docker
يمكن لحاويات Docker التواصل مع بعضها البعض ومع جهاز الاستضافة باستخدام شبكات Docker. هذه بعض الأوامر الأساسية للعمل مع شبكات Docker:
قائمة شبكات Docker
لعرض جميع شبكات Docker على جهازك، نفذ:
$ docker network ls
ستعرض هذه الأوامر قائمة بجميع شبكات Docker، جنبًا إلى جنب مع أسمائها ومشغلاتها ونطاقاتها.
إنشاء شبكة Docker
لإنشاء شبكة Docker جديدة، نفذ:
$ docker network create [خيارات] [اسم_الشبكة]
استبدل [خيارات]
بأي خيارات إضافية تريد تمريرها (مثل --driver
لتحديد مشغل الشبكة)، و [اسم_الشبكة]
بالاسم الذي تريد إعطاءه للشبكة الجديدة.
على سبيل المثال، لإنشاء شبكة جسرية جديدة باسم my-network
، نفذ:
$ docker network create my-network
توصيل حاوية بشبكة
لتوصيل حاوية قيد التشغيل بشبكة Docker، نفذ:
$ docker network connect [اسم_الشبكة] [معرف_الحاوية]
استبدل [اسم_الشبكة]
باسم الشبكة التي تريد توصيل الحاوية بها، و [معرف_الحاوية]
بمعرف أو اسم الحاوية قيد التشغيل.
فصل حاوية عن شبكة
لفصل حاوية عن شبكة Docker، نفذ:
$ docker network disconnect [اسم_الشبكة] [معرف_الحاوية]
استبدل [اسم_الشبكة]
باسم الشبكة التي تريد فصل الحاوية عنها، و [معرف_الحاوية]
بمعرف أو اسم الحاوية قيد التشغيل.
4. مجلدات Docker
تستخدم مجلدات Docker لاستمرارية البيانات ومشاركة البيانات بين جهاز الاستضافة والحاويات، أو بين حاويات متعددة. هذه بعض الأوامر الأساسية للعمل مع مجلدات Docker:
قائمة مجلدات Docker
لعرض جميع مجلدات Docker على جهازك، نفذ:
$ docker volume ls
ستعرض هذه الأوامر قائمة بجميع مجلدات Docker، جنبًا إلى جنب مع أسمائها ومشغلاتها.
إنشاء مجلد Docker
لإنشاء مجلد Docker جديد، نفذ:
$ docker volume create [اسم_المجلد]
استبدل [اسم_المجلد]
بالاسم الذي تريد إعطاءه للمجلد الجديد.
ضم مجلد إلى حاوية
لضم مجلد إلى حاوية Docker، استخدم الخيار -v
أو --volume
عند تشغيل الحاوية:
$ docker run -v [اسم_المجلد]:[مسار_الحاوية] [اسم_الصورة]
استبدل [اسم_المجلد]
باسم أو مسار المجلد الذي تريد ضمه، [مسار_الحاوية]
بالمسار داخل الحاوية حيث تريد ضم المجلد، و [اسم_الصورة]
باسم الصورة التي تريد تشغيلها.
على سبيل المثال، لضم مجلد يسمى app-data
إلى المجلد /app/data
داخل حاوية تشغل الصورة my-app
، نفذ:
$ docker run -v app-data:/app/data my-app
إزالة مجلد Docker
لإزالة مجلد Docker، نفذ:
$ docker volume rm [اسم_المجلد]
استبدل [اسم_المجلد]
باسم المجلد الذي تريد إزالته.
إذا كان المجلد قيد الاستخدام حاليًا من قبل حاوية قيد التشغيل، فستحتاج إلى إيقاف الحاوية وإزالتها أولاً قبل إزالة المجلد.
5. Docker Compose
Docker Compose هو أداة لتعريف وتشغيل تطبيقات Docker متعددة الحاويات. يستخدم ملف YAML لتحديد الخدمات والشبكات والمجلدات اللازمة لتطبيقك. هذه بعض الأوامر الأساسية للعمل مع Docker Compose:
بدء تشغيل تطبيق Docker Compose
لبدء تشغيل تطبيق Docker Compose، انتقل إلى الدليل الذي يحتوي على ملف docker-compose.yml
ونفذ:
$ docker-compose up
ستبدأ هذه الأوامر جميع الخدمات المحددة في ملف docker-compose.yml
. إذا كنت تريد تشغيل الحاويات في الخلفية، استخدم الخيار -d
:
$ docker-compose up -d
إيقاف تطبيق Docker Compose
لإيقاف تطبيق Docker Compose قيد التشغيل، نفذ:
$ docker-compose down
ستقوم هذه الأوامر بإيقاف وإزالة جميع الحاويات والشبكات والمجلدات المرتبطة بالتطبيق.
قائمة حاويات Docker Compose
لعرض جميع الحاويات المرتبطة بتطبيق Docker Compose، نفذ:
$ docker-compose ps
ستعرض هذه الأوامر قائمة بجميع الحاويات، جنبًا إلى جنب مع أسمائها وأوامرها وحالاتها.
إعادة بناء حاويات Docker Compose
إذا قمت بإجراء تغييرات على كود التطبيق الخاص بك أو إعداداته، فستحتاج إلى إعادة بناء الحاويات. لفعل ذلك، نفذ:
$ docker-compose up --build
ستقوم هذه الأوامر بإعادة بناء الحاويات بناءً على ملف Dockerfile والملف docker-compose.yml
المحدثين.
6. Docker Hub والسجلات الخاصة
Docker Hub هي خدمة سجل قائمة على السحابة حيث يمكنك العثور على صور Docker ومشاركتها. يمكنك أيضًا استضافة سجل خاص بك لتخزين وتوزيع صورك المخصصة. هذه بعض الأوامر الأساسية للعمل مع Docker Hub والسجلات الخاصة:
تسجيل الدخول إلى Docker Hub
للدخول إلى حساب Docker Hub الخاص بك، نفذ:
$ docker login
ستطالبك هذه الأوامر بإدخال اسم مستخدم Docker Hub وكلمة المرور الخاصة بك.
دفع صورة إلى Docker Hub
لدفع صورة Docker إلى مستودع Docker Hub الخاص بك، ستحتاج أولاً إلى وضع علامة على الصورة باسم مستخدم Docker Hub:
$ docker tag [معرف_الصورة] [اسم_المستخدم]/[اسم_الصورة]:[العلامة]
استبدل [معرف_الصورة]
بمعرف الصورة التي تريد دفعها، [اسم_المستخدم]
باسم مستخدمك على Docker Hub، [اسم_الصورة]
بالاسم الذي تريد إعطاءه للصورة، و [العلامة]
بالعلامة المرغوبة (مثل latest
، v1.0
، وما إلى ذلك).
بمجرد وضع علامة على الصورة، يمكنك دفعها إلى Docker Hub:
$ docker push [اسم_المستخدم]/[اسم_الصورة]:[العلامة]
سحب صورة من Docker Hub
لسحب صورة من Docker Hub، نفذ:
$ docker pull [اسم_المستخدم]/[اسم_الصورة]:[العلامة]
استبدل [اسم_المستخدم]
باسم مستخدم Docker Hub لمالك الصورة، [اسم_الصورة]
باسم الصورة، و [العلامة]
بالعلامة المرغوبة.
تسجيل الدخول إلى سجل خاص
للدخول إلى سجل Docker خاص، نفذ:
$ docker login [رابط_السجل]
استبدل [رابط_السجل]
برابط السجل الخاص بك. ستطالبك هذه الأوامر بإدخال بيانات اعتماد السجل (اسم المستخدم وكلمة المرور).
دفع صورة إلى سجل خاص
لدفع صورة Docker إلى سجل خاص، ستحتاج أولاً إلى وضع علامة على الصورة برابط السجل:
$ docker tag [معرف_الصورة] [رابط_السجل]/[اسم_الصورة]:[العلامة]
استبدل [معرف_الصورة]
بمعرف الصورة التي تريد دفعها، [رابط_السجل]
برابط سجلك الخاص، [اسم_الصورة]
بالاسم الذي تريد إعطاءه للصورة، و [العلامة]
بالعلامة المرغوبة.
بمجرد وضع علامة على الصورة، يمكنك دفعها إلى السجل الخاص:
$ docker push [رابط_السجل]/[اسم_الصورة]:[العلامة]
سحب صورة من سجل خاص
لسحب صورة من سجل خاص، نفذ:
$ docker pull [رابط_السجل]/[اسم_الصورة]:[العلامة]
استبدل [رابط_السجل]
برابط سجلك الخاص، [اسم_الصورة]
باسم الصورة، و [العلامة]
بالعلامة المرغوبة.
خاتمة
في هذا الدليل الشامل، غطينا أوامر Docker الأساسية التي يجب على كل مبتدئ معرفتها. من العمل مع صور وحاويات Docker إلى إدارة الشبكات والمجلدات والسجلات، لديك الآن المعرفة الأساسية للبدء في استخدام Docker بكفاءة.
تذكر، أن Docker أداة قوية، وهناك المزيد من الأوامر والميزات المتقدمة لاستكشافها مع اكتسابك المزيد من الخبرة. مارس وجرب، ولا تتردد في العودة إلى هذا الدليل كلما احتجت إلى مراجعة.