English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

استخدام حاويات Docker

واجهة مستخدم Docker

واجهة المستخدم الخاصة بـ Docker بسيطة للغاية، يمكننا إدخال الأمر docker مباشرة لرؤية جميع خيارات واجهة المستخدم الخاصة بـ Docker.

w3codebox@w3codebox:~# docker

يمكنك استخدام الأمر docker command --help للتعرف بشكل أعمق على كيفية استخدام الأمر Docker المحدد.

على سبيل المثال، نريد عرض docker stats استخدام الأمر بشكل دقيق:

w3codebox@w3codebox:~# docker stats --help

استخدام الجهاز

الحصول على الصورة

إذا لم يكن لدينا صورة ubuntu محلية، يمكننا استخدام الأمر docker pull لتحميل صورة ubuntu:

$ docker pull ubuntu

بدء الجهاز

تعليمات التشغيل التالية تستخدم صورة ubuntu لبدء جهاز، المعلمات هي الدخول إلى الجهاز بالطريقة النصية:

$ docker run -it ubuntu /bin/bash

شرح المعلمات:

  • -i: التشغيل التفاعلي.

  • -t: طرفية.

  • ubuntu: صورة ubuntu.

  • /bin/bashالنقطة الموجودة بعد اسم الصورة هي الأمر، هنا نريد Shell تفاعلي، لذا نستخدم /bin/bash.

للخروج من الطرفية، قم بإدخال exit:

root@ed09e4490c57:/# exit

بدء تشغيل الجهاز المعطل

تعليمات عرض جميع الجهازات هي:

$ docker ps -a

نقر على الصورة لرؤية الصورة الكبيرة:

استخدام docker start لبدء تشغيل جهاز معطل:

$ docker start b750bbbcfd88

تشغيل في الخلفية

في معظم السيناريوهات، نريد أن يكون خدمة docker تعمل في الخلفية، يمكننا استخدام -d لتعيين نمط تشغيل الجهاز.

$ docker run -itd --name ubuntu-test ubuntu /bin/bash

نقر على الصورة لرؤية الصورة الكبيرة:

ملاحظة:إذا تم تضمين المعلمات -d، فسيتم بالافتراض عدم الدخول إلى الصندوق، إذا كنت ترغب في الدخول إلى الصندوق، يمكنك استخدام الأوامر التالية: docker exec(سيتم شرح ذلك لاحقًا).

توقف صناديق واحدة

أمر توقف الصندوق كالتالي:

$ docker stop <ID الصندوق>

يمكنك إعادة تشغيل الصناديق المتوقفة باستخدام docker restart:

$ docker restart <ID الصندوق>

دخول الصندوق

عندما تستخدم -d عندما تستخدم المعلمات، يدخل الصندوق في الخلفية. إذا كنت ترغب في الدخول إلى الصندوق، يمكنك استخدام الأوامر التالية للدخول:

  • docker attach

  • docker execنوصي باستخدام إمر docker exec، لأن هذا الخروج من نهاية الصندوق لن يؤدي إلى توقف الصندوق.

إمر attach

سيتم عرض كيفية استخدام إمر docker attach فيما يلي.

$ docker attach 1e560fca3906

ملاحظة: إذا غادرت هذا الصندوق، سيؤدي ذلك إلى توقف الصندوق.

إمر exec

سيتم عرض كيفية استخدام إمر docker exec فيما يلي.

docker exec -it 243c32535da7 /bin/bash

ملاحظة: إذا غادرت هذا الصندوق، لن يتوقف الصندوق، هذا هو السبب في أننا نوصي باستخدام docker exec السبب.

للإطلاع على مزيد من التفاصيل حول المعلمات، استخدم إمر docker exec --help.

إخراج وإعادة استيراد الصناديق

إخراج الصندوق

إذا كنت ترغب في إخراج صناديق محلية معينة، يمكنك استخدام docker export الإمر.

$ docker export 1e560fca3906 > ubuntu.tar

أخرج صور الصندوق 1e560fca3906 إلى ملف محلي ubuntu.tar.

بهذا يتم导ار صور الصندوق إلى ملف محلي.

استيراد صور الصندوق

يمكنك استخدام docker import لإعادة استيراد الصور من ملفات صور الصناديق، واليكم مثال على استيراد ملف صور الصندوق ubuntu.tar إلى صورة test/ubuntu:v1:

$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1

بالإضافة إلى ذلك، يمكنك أيضًا استيراد عبر تحديد عنوان URL أو مجلد معين، مثل:

$ docker import http://example.com/exampleimage.tgz example/imagerepo

إزالة الصندوق

استخدام إزالة الصندوق docker rm الإمر:

$ docker rm -f 1e560fca3906

الأوامر التالية يمكنها تنظيف جميع الصناديق التي تكون في حالة التوقف.

$ docker container prune

运行一个 web 应用

前面我们运行的容器并没有一些什么特别的用处。

接下来让我们尝试使用 docker 构建一个 web 应用程序。

我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。

w3codebox@w3codebox:~# docker pull training/webapp  # 载入镜像
w3codebox@w3codebox:~# docker run -d -P training/webapp python app.py

参数说明:

  • -d:让容器在后台运行。

  • -P:将容器内部使用的网络端口随机映射到我们使用的主机上。

查看 WEB 应用容器

使用 docker ps 来查看我们正在运行的容器:

w3codebox@w3codebox:~#  docker ps
CONTAINER ID        IMAGE               COMMAND             ...        PORTS                 
d3d5e39ed9d3        training/webapp     "python app.py"     ...        0.0.0.0:32769->5000/tcp

这里多了端口信息。

PORTS
0.0.0.0:32769->5000/tcp

Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32769 上。

这时我们可以通过浏览器访问WEB应用

我们也可以通过 -p 参数来设置不一样的端口:

w3codebox@w3codebox:~$ docker run -d -p 5000:5000 training/webapp python app.py

docker ps查看正在运行的容器

w3codebox@w3codebox:~#  docker ps
المستخدمون المختلفون       صور المختلفة                             المواضيع                     الأسماء
bf08b7f2cd89        training/webapp     ...        0.0.0.0:5000->5000/tcp    wizardly_chandrasekhar
d3d5e39ed9d3        training/webapp     ...        0.0.0.0:32769->5000/tcp   xenodochial_hoov

يتم تصادم منفذ 5000 داخل الحاوية إلى منفذ 5000 على الحاسوب المحلي.

طريقة مختصرة للوصول إلى منفذ الشبكة

من خلال docker ps الطريقة يمكن رؤية تفاصيل تصادم منفذ الحاوية،docker وقد تم توفير طريقة أخرى مختصرة docker port، يقدم أيضًا طريقة مختصرة docker port يمكنك عرض تحويل منفذ معين (ID أو الاسم) للصندوق إلى منفذ على المستضيف.

في الأعلى، هو ID صندوق تطبيق الويب الذي قمنا بإنشائه bf08b7f2cd89  اسمه wizardly_chandrasekhar.

يمكنني استخدام docker port bf08b7f2cd89 أو docker port wizardly_chandrasekhar لعرض حالة التحويل للمنفذ

w3codebox@w3codebox:~$ docker port bf08b7f2cd89
5000/tcp -> 0.0.0.0:5000
w3codebox@w3codebox:~$ docker port wizardly_chandrasekhar
5000/tcp -> 0.0.0.0:5000

عرض سجلات تطبيق الويب

docker logs [ID أو الاسم] يمكن عرض الخروج القياسي داخل الصندوق.

w3codebox@w3codebox:~$ docker logs -f bf08b7f2cd89
 * تشغيل على http://0.0.0.0:5000/ (أضغط CTRL+C للخروج)
192.168.239.1 - - [09/May/2016 16:30:37] "GET / HTTP/1.1" 200 -
192.168.239.1 - - [09/May/2016 16:30:37] "GET favicon.ico HTTP/1.1" 404 -

-f: اترك docker logs مثل استخدام tail -f لإخراج الخروج القياسي داخل الصندوق.

من فوق، يمكننا رؤية أن التطبيق يستخدم منفذ 5000 ويمكننا رؤية سجلات الوصول للتطبيق.

عرض عمليات صندوق تطبيق الويب

يمكننا أيضًا استخدام docker top لعرض العمليات التي تعمل داخل الصندوق

w3codebox@w3codebox:~$ docker top wizardly_chandrasekhar
UID     PID         PPID          ...       TIME                CMD
root    23245       23228         ...       00:00:00            python app.py

تحقق من تطبيق الويب

استخدام  للنظر في المعلومات الأساسية لدكور

w3codebox@w3codebox:~$ docker inspect wizardly_chandrasekhar
[
    {
        "Id": "bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85",
        "Created": "2018-09-17T01:41:26.174228707Z",
        "Path": "python",
        "Args": [
            "app.py"
        ],
        "State": {
            
            
            
            
            
            
            
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2018-09-17T01:41:26.494185806Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        
......

توقف صندوق تطبيق الويب

w3codebox@w3codebox:~$ docker stop wizardly_chandrasekhar   
wizardly_chandrasekhar

إعادة تشغيل صندوق تطبيق الويب

الصندوق المتوقف،يمكننا استخدام الأمر docker start لبدء.

w3codebox@w3codebox:~$ docker start wizardly_chandrasekhar
wizardly_chandrasekhar

docker ps -l استعلام آخر قالب إنشاء

#  docker ps -l 
المستخدمون المختلفون       صور المختلفة                             المواضيع                     الأسماء
bf08b7f2cd89        training/webapp     ...        0.0.0.0:5000->5000/tcp    wizardly_chandrasekhar

للبواسطة الحاويات التي تعمل، يمكننا استخدام أمر docker restart لإعادة تشغيلها.

إزالة حاوية تطبيق WEB

يمكننا استخدام أمر docker rm ل�除 الحاويات غير الضرورية

w3codebox@w3codebox:~$ docker rm wizardly_chandrasekhar  
wizardly_chandrasekhar

عند محاولة حذف حاوية، يجب أن تكون الحاوية في حالة التوقف، وإلا سيتم عرض خطأ كما يلي

w3codebox@w3codebox:~$ docker rm wizardly_chandrasekhar
رد فاشل من daemon: لا يمكنك إزالة حاوية تعمل bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85. قم بإيقاف الحاوية قبل المحاولة في إزالتها أو إزالة قوة