15 أوامر Docker لإدارة الحاويات [قائمة ، إيقاف ، بدء ، إزالة والمزيد]
نشرت: 2021-08-17Docker هي أداة شائعة لإنشاء تطبيقات حاويات وتشغيلها. إنه متاح لمنصات متعددة ويستخدم كأحد تقنيات الحاويات الخلفية في Kubernetes.
في Docker ، يمكنك إما إنشاء صورك الخاصة لتشغيل تطبيقك كحاوية ، أو يمكنك سحب واستخدام آلاف الصور العامة من مستودع Docker واستخدامها في مشروعك. بمجرد أن تصبح صورتك جاهزة ، يمكنك تشغيل الحاويات الخاصة بك باستخدام تلك الصور. الحاوية هي مثيل قيد التشغيل لصورة Docker.
تعد إدارة حاويات Docker أحد أهم الجوانب التي يجب الاهتمام بها كمسؤول نظام يدير مضيف / حاويات Docker.
في هذه المقالة ، سنركز على إدارة الحاويات باستخدام أمر docker.
الأمر Run
يتم استخدام أمر docker run
لتشغيل حاوية من صورة عن طريق تحديد Image ID
أو Repository
و / أو اسم Tag
.
$ docker run {image}
مثال:
$ docker run nginx
يقوم الأمر أعلاه بتشغيل مثيل <span class="NormalTextRun SpellingErrorV2 SCXW251451022 BCX0">nginx</span>
على مضيف عامل الإرساء ، إذا كان موجودًا بالفعل. إذا لم يكن موجودًا على مضيف Docker ، فسيخرج إلى لوحة Docker (افتراضيًا) ويسحب الصورة لأسفل. لكن هذه هي المرة الأولى الوحيدة. للأوقات اللاحقة يتم إعادة استخدام نفس الصورة.
إذا كنت تريد تشغيل إصدار معين من الصورة ، فحدد الإصدار مفصولاً بنقطتين. يُعرف هذا باسم Tag
. في حالة عدم تحديد أي علامة ، سيعتبر عامل الميناء أنها الأحدث افتراضيًا.
علاوة على ذلك ، إذا كنت ترغب في تشغيل الحاوية في الخلفية في وضع منفصل بحيث يمكنك الرجوع إلى المطالبة بعد تشغيل Docker للحاوية ، فاستخدم العلامة -d
.
مثال:
$ docker run nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx 33847f680f63: Pull complete dbb907d5159d: Pull complete 8a268f30c42a: Pull complete b10cf527a02d: Pull complete c90b090c213b: Pull complete 1f41b2f2bf94: Pull complete Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90 Status: Downloaded newer image for nginx:latest /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2021/08/15 12:13:23 [notice] 1#1: using the "epoll" event method 2021/08/15 12:13:23 [notice] 1#1: nginx/1.21.1 2021/08/15 12:13:23 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6) 2021/08/15 12:13:23 [notice] 1#1: OS: Linux 5.8.0-1039-azure 2021/08/15 12:13:23 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2021/08/15 12:13:23 [notice] 1#1: start worker processes 2021/08/15 12:13:23 [notice] 1#1: start worker process 33 2021/08/15 12:13:23 [notice] 1#1: start worker process 34
الأمر ps
يسرد الأمر docker ps
جميع الحاويات قيد التشغيل وبعض المعلومات الأساسية عنها. مثل معرف الحاوية ، اسم الصورة ، يتم إنشاء حاوية الوقت ، الحالة الحالية ، واسم الحاوية. تحصل كل حاوية على اسم عشوائي ومعرف.
مثال:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 133f5e0267a5 nginx "/docker-entrypoint.…" 10 seconds ago Up 10 seconds 80/tcp jolly_elion
لسرد جميع الحاويات قيد التشغيل وغير العاملة / الخارجة مرة واحدة ، يمكنك استخدام:
$ docker ps -a
مثال:
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fcec129f0eb4 nginx "/docker-entrypoint.…" 46 hours ago Exited (0) 46 hours ago interesting_ishizaka 6e8b1e441aa6 hello-world "/hello" 2 days ago Exited (0) 2 days ago keen_shirley
الأمر ls
مثل أمر ps
، يمكن أيضًا استخدام ls
لسرد الحاويات. -a
استخدام العلم لسرد جميع الحاويات (وليس فقط الحاويات قيد التشغيل).
$ docker container ls
مثال:
$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 15796e91c30b redis "docker-entrypoint.s…" 2 seconds ago Up 1 second 6379/tcp flamboyant_neumann 904390b65d45 nginx "/docker-entrypoint.…" 14 minutes ago Up 14 minutes 80/tcp nginx_new $
وقف الأمر
يتم استخدام أمر docker stop
لإيقاف تشغيل الحاوية. هنا نحتاج إلى وضع اسم الحاوية أو معرفها جنبًا إلى جنب مع هذا.
$ docker stop {container-id}
عند النجاح ، سيعيد اسم عامل الإرساء أو المعرف.
مثال:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 133f5e0267a5 nginx "/docker-entrypoint.…" 50 seconds ago Up 49 seconds 80/tcp jolly_elion
سيؤدي هذا إلى إرجاع CONTAINER ID
الحاوية الذي يمكنك استخدامه لإيقاف الحاوية.
$ docker stop 133f5 133f5
في هذا المثال والمثال القادم ، لاحظ أنك لست بحاجة إلى تحديد قيمة كاملة CONTAINER ID
. سيقبل حتى الجزء ، مما يجعله فريدًا من بين الحاويات الأخرى قيد التشغيل حيث يعرف Docker أي حاوية يجب إيقافها.
الأمر rm
يزيل الأمر docker rm
حاوية متوقفة أو خرجت.
$ docker rm {CONTAINER NAME or ID}
مثال:
$ docker rm 133f5 133f5 $
الأمر exec
يمكننا استخدام الأمر exec
للدخول داخل حاوية قيد التشغيل. هذا مفيد لتصحيح أخطاء الحاويات قيد التشغيل أو القيام ببعض الأشياء داخل الحاوية.
$ docker exec –it {container} {command}
مثال:

لنفترض أنك تريد تشغيل bash
shell (على افتراض أن الصورة بها Bash متوفرة ، يمكنك استخدام الأصداف الأخرى المتاحة أيضًا) داخل حاوية تسمى unruffled_meninsky
في الوضع التفاعلي ، استخدم:
$ docker exec –it unruffled_meninsky /bin/bash
هذا يجب أن يهبط بك داخل الحاوية على قذيفة bash
. هنا يرمز العلم -i
إلى الوضع التفاعلي و -t
للمحطة. إذا كنت ترغب فقط في تنفيذ أمر واحد أو أكثر والخروج من الحاوية ، يمكنك استخدام:
$ docker exec unruffled_meninsky cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 cd2eed4acf34
الأمر سجلات
في حالة تشغيل حاوية في الوضع المنفصل ، وأردنا رؤية سجلاتها ، يمكننا استخدام أمر logs
لمراجعة سجلاتها:
$ docker logs {CONTAINER NAME or ID}
مثال:
$ docker logs 7da6dcebaf9c /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2021/08/15 12:14:09 [notice] 1#1: using the "epoll" event method 2021/08/15 12:14:09 [notice] 1#1: nginx/1.21.1 2021/08/15 12:14:09 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6) 2021/08/15 12:14:09 [notice] 1#1: OS: Linux 5.8.0-1039-azure 2021/08/15 12:14:09 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2021/08/15 12:14:09 [notice] 1#1: start worker processes 2021/08/15 12:14:09 [notice] 1#1: start worker process 31 2021/08/15 12:14:09 [notice] 1#1: start worker process 32 $
الأمر cp
لنسخ الملفات بين الحاوية ونظام ملفات المضيف المحلي ، يمكنك استخدام الأمر cp
.
$ docker container cp {CONTAINER NAME or ID:SRC_PATH} {DEST_PATH}|-
مثال:
$ docker container cp quirky_cray:/etc/nginx/nginx.conf nginx.conf.bkp
أمر التصدير
يوفر أمر Docker container خيارًا لتصدير نظام ملفات الحاوية كملف TAR.
$ docker container export {CONTAINER NAME or ID}
فحص الأمر
يمكننا التحقق من المعلومات التفصيلية حول الحاوية باستخدام أمر inspect
على النحو التالي:
$ docker inspect {CONTAINER NAME or ID}
أو
$ docker container inspect {CONTAINER NAME or ID}
اقتل القيادة
يمكن قتل حاوية قيد التشغيل باستخدام أمر kill
باستخدام علامة --signal
or -s
اختيارية. يمكن تحديد حاويات متعددة لقتلهم دفعة واحدة.
$ docker kill {CONTAINER NAME or ID} [--signal VAL]
مثال:
$ docker kill cd9005a0b5d2 -s 9 cd9005a0b5d2 $
القيادة احصائيات
لعرض دفق مباشر لاستخدام موارد الحاوية ، يمكنك استخدام الأمر stats
:
$ docker container stats {CONTAINER NAME or ID}
مثال:
$ docker container stats thirsty_volhard CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 904390b65d45 thirsty_volhard 0.00% 3.406MiB / 7.775GiB 0.04% 1.02kB / 0B 0B / 8.19kB 3
القيادة العليا
مثل الأمر top
في Linux ، يمكننا استخدامه مع Docker للحصول على قائمة بالعمليات الجارية.
$ docker container top {CONTAINER NAME or ID}
مثال:
$ docker container top thirsty_volhard UID PID PPID C STIME TTY TIME CMD root 2603 2582 0 12:34 ? 00:00:00 nginx: master process nginx -g daemon off; systemd+ 2659 2603 0 12:34 ? 00:00:00 nginx: worker process systemd+ 2660 2603 0 12:34 ? 00:00:00 nginx: worker process $
إعادة تسمية الأمر
لإعادة تسمية حاوية موجودة ، استخدم الأمر rename
.
$ docker container rename {OLD CONTAINER NAME} {NEW CONTAINER NAME}
مثال:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 904390b65d45 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp nginx_container $ docker container rename nginx_container nginx_new $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 904390b65d45 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp nginx_new $
أمر فرق
يمكننا فحص التغييرات التي تم إجراؤها على الملفات أو الدلائل على نظام ملفات الحاوية باستخدام الأمر diff
.
$ docker container diff {CONTAINER NAME or ID}
مثال:
$ docker container diff nginx_new C /var C /var/cache C /var/cache/nginx A /var/cache/nginx/uwsgi_temp A /var/cache/nginx/client_temp A /var/cache/nginx/fastcgi_temp A /var/cache/nginx/proxy_temp A /var/cache/nginx/scgi_temp C /etc C /etc/nginx C /etc/nginx/conf.d C /etc/nginx/conf.d/default.conf C /run A /run/nginx.pid $
ملخص
في الختام ، يقدم Doker مجموعة واسعة من الأوامر لإدارة الحاويات من إنشائها حتى تدميرها. لقد قمنا بتغطية بعض الأوامر المهمة واستخدامها في هذه المقالة والتي من المفترض أن تعطيك فكرة جيدة عن إدارة حاويات الرصيف.
بعد ذلك ، اكتشف بعض الموارد لتعلم DevOps.