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

Docker Hello World

يُمكّن Docker من تشغيل تطبيقات داخل الصندوق، باستخدام docker run أمر لتشغيل تطبيق في الصندوق.

إخراج Hello world

w3codebox@w3codebox:~$ docker run ubuntu:15.10 /bin/echo "Hello world"
Hello world

تفسير المعلمات المختلفة:

  • docker: ملف التشغيل الثنائي لدocker.

  • run: مع前面的 docker لتشغيل صندوق.

  • ubuntu:15.10 تحديد الصورة التي سيتم تشغيلها، Docker أولاً يبحث عن وجود الصورة على جهاز المضيف المحلي، إذا لم تجد الصورة، Docker سيدلّس الصورة من مخزن الصور Docker Hub.

  • /bin/echo "Hello world": الأوامر التي يتم تنفيذها داخل الصندوق المُشغّل

معنى الأمر الكامل يمكن تفسيره على النحو التالي: Docker يُنشئ صندوقًا جديدًا باستخدام صورة ubuntu15.10، ثم يقوم بتشغيل bin/echo "Hello world" في الصندوق، ثم يُخرج النتيجة.

تشغيل صندوق تفاعلي

نحن نستخدم معلمتين docker -i -t لجعل الصندوق الذي تشغله docker يحقق"الحوار"القدرة:

w3codebox@w3codebox:~$ docker run -i -t ubuntu:15.10 /bin/bash
root@0123ce188bd8:/#

تفسير المعلمات المختلفة:

  • -t: تحديد واجهة مستخدم وهمية أو واجهة مستخدم في الصندوق الجديد.

  • -i: يُمكّنك من التفاعل مع المدخل القياسي (STDIN) للصندوق.

الانتباه إلى السطر الثاني root@0123ce188bd8:/#، عند ذلك نكون قد دخلنا داخل صندوق نظام Ubuntu15.10

نحاول تشغيل الأوامر في الصندوق cat /proc/versionوlsنظرًا لمعلومات إصدار النظام الحالي وملفات القائمة في الدليل الحالي

root@0123ce188bd8:/# cat /proc/version
إصدار Linux 4.4.0-151-generic (بناء @ lgw01-amd64-043) (gcc إصدار 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10)) #178-Ubuntu SMP الثلاثاء 11 حزيران 2019 08:30:22 UTC
root@0123ce188bd8:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@0123ce188bd8:/#

我们可以通过运行 exit 命令或者使用 CTRL+D 来退出容器。

root@0123ce188bd8:/#  exit
exit
root@w3codebox:~#

注意第三行中 root@w3codebox:~# 表明我们已经退出了当前的容器,返回到当前的主机中。

启动容器(后台模式)

使用以下命令创建一个以进程方式运行的容器

w3codebox@w3codebox:~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

在输出中,我们没有看到期望的 "hello world",而是一串长字符

2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

这个长字符串叫做容器 ID,对每个容器来说都是唯一的,我们可以通过容器 ID 来查看对应的容器发生了什么。

首先,我们需要确认容器有在运行,可以通过 docker ps 来查看:

w3codebox@w3codebox:~$ docker ps
CONTAINER ID        IMAGE                  COMMAND              ...  
5917eac21c36        ubuntu:15.10                 "/bin/sh -c 'while t…"    ...

شرح تفصيلي للخروج:

معرف الحاوية: معرف الحاوية.

الصورة: الصورة المستخدمة.

الأمر: الأمر الذي يتم تشغيله عند بدء الحاوية.

مُنشئ: وقت إنشاء الحاوية.

الحالة: حالة الحاوية.

يوجد 7 حالات:

  • مُنشئ

  • restarting (قيد الإعادة التشغيل)

  • running أو Up (قيد التشغيل)

  • removing (تحويل)

  • paused (متوقف)

  • exited (توقف)

  • dead (ميت)

PORTS: معلومات منفذ الحاوية والنوع المستخدم للاتصال (tcp\udp).

NAMES: اسم الحاوية الموزع تلقائيًا.

استخدام الأمر docker logs في المضيف، لعرض مخرجات الحاوية العادية:

w3codebox@w3codebox:~$ docker logs 2b1b7a428627

w3codebox@w3codebox:~$ docker logs amazing_cori

إيقاف الحاوية

نحن نستخدم docker stop استخدام الأمر لتحديد الحاوية:

docker stop 2b1b7a428627

يمكنك رؤية أن الحاوية قد توقفت عن العمل من خلال الأمر docker ps:

w3codebox@w3codebox:~$ docker ps

يمكنك رؤية أن الحاوية لم تعد موجودة.

يمكنك أيضًا استخدام الأمر التالي للإيقاف:

w3codebox@w3codebox:~$ docker stop amazing_cori