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

شرح مفصل لأوامر Docker الأساسية

مفاهیم اساسی دوکر

دوکر یک موتور کنتایر نرم‌افزاری باز منبع است که به توسعه‌دهندگان اجازه می‌دهد برنامه‌های خود و بسته‌های وابسته را در یک کنتایر قابل حمل بسته‌بندی کنند و سپس آن‌ها را در هر رایانه‌ای از سیستم عامل لینوکس منتشر کنند.

دوکر یک پلتفرم باز است که فرآیندهای توسعه، تست، تحویل و مستقرسازی برنامه‌ها را دوباره تعریف کرده است، دوکر می‌تواند به عنوان یک بار ساخت و در هر جایی اجرا نامیده شود، این ایده‌ای است که دوکر پیشنهاد کرده است“Build once،Run anywhere”

创建镜像

创建镜像的方法有三种:

基于已有的容器创建

基于本地模板导入

# docker load < centos_7.1.tar

基于已有的容器创建

主要使用docker commit 命令,命令格式:

docker commit [OPTIONS] CONTAINER [REPOSITORY[:tag]]،主要包括:

-a ,--author="" 作者信息
-m,--message=""提交消息
-p,--pause=true 提交时暂停容器

例如:

# docker run -it centos /bin/bash
[root@d7e7ac1cbca2 /]# touch test
[root@d7e7ac1cbca2 /]# ls 
anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys test tmp usr var
# docker commit -m "add a file" -a "kafeikele" de6 centos_copy
5d318afa9e6f7fdb755db97e29e3860b752f24b0b50e6bfa0b7e457450802c0e
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos_copy latest 5d318afa9e6f 13 seconds ago 196.7 MB

基于本地模板导入

推荐使用openVZ提供的模板来创建

https://openvz.org/Download/templates/precreated
#cat centos-7-x86_64-minimal.tar.gz.crdownload | docker import - centos:latest

存出和导入镜像

# docker images
centos 7.1.1503 47a77536ad4c 8 weeks ago 212.1 MB
# docker save -o centos_7.1.tar centos:7.1.1503 
# docker load --input centos_7.1.tar
# docker load --input centos_7.1.tar

# docker load < centos_7.1.tar

بناءً على dockerfile

التفاصيل اللاحقة

# docker run centos echo "hello world"
لا يمكن العثور على الصورة 'centos:latest' محليًا
latest: يتم سحب من centos
47d44cb6f252: تم السحب بشكل كامل
168a69b62202: تم السحب بشكل كامل
812e9d9d677f: تم السحب بشكل كامل
4234bfdd88f8: تم السحب بشكل كامل
ce20c473cd8a: تم السحب بشكل كامل
centos:latest: تم التحقق من الصورة التي تقوم بسحبها. ملاحظة مهمة: التحقق من الصورة هو ميزة مسبقة للمرحلة ويجب عدم الاعتماد عليها لتوفير
security.
Digest: sha256:3aaab9f1297db9b013063c781cfe901e2aa6e7e334c1d1f4df12f25ce356f2e5
Status: تم تنزيل الصورة الجديدة لـ centos:latest
مرحبًا العالم

شرح الأوامر:

docker run: أمر بدء الكونتريير القياسي

centos: اسم الصورة، الافتراضي هو latest

echo و ما يليه من المحتوى: الأوامر التي يتم تنفيذها بعد بدء الكونتريير

بدء كونتريير تفاعلي

docker run -it centos /bin/bash

*ملاحظة: -t يشير إلى تحديد وهمي للكونتريير أو الترميز، -i يشير إلى السماح بالتفاعل مع STDIN داخل الكونتريير

بدء كونتريير docker كخدمة

إذا قمت بتجربة الفعلية، قد لاحظت، بعد بدء第一个 "hello world" كونتريير وتنفيذ أوامر echo، أغلق الكونتريير، بينما الكونتريير التفاعلي الثاني، إذا غادر المستخدم bash الحالي للكونتريير، أغلق الكونتريير أيضًا. هذا لا يكفي لتلبية متطلبات خدمة تشغيل طويل الأمد، لذا قدم docker run مبدأ "-d"، مما يتيح بدء الكونتريير كخدمة.

docker run -d centos /bin/bash -c "while true; do echo Docker,hello world; sleep 2; <br>179fc7f17c358834364d23112aa26d6a9e1875b2281563720425f62a8f1b5c33"

هذه السلسلة الطويلة تُدعى ID المحاكي. إنها تعرف المحاكي بشكل فريد، لذا يمكن استخدامها لمعالجة المحاكي، مثل عرض السجلات أو إيقاف أو حذف المحاكي.

dock logs 179fc7f17c358834364d

ولماذا يتم استخدام حلقة مغلقة للإخراج؟

لأنه إذا لم يكن هناك حلقة مغلقة، فإن عملية المحاكي تنتهي بعد إخراج مرة واحدة. عند انتهاء جميع العمليات الفريدة للمحاكي، يتوقف المحاكي. لذلك، إذا كان من المفترض تشغيل خدمة محددة في المحاكي، فإن هذه الخدمة يجب أن تكون أيضًا مطلوبة بشكل مُنظّم داخل المحاكي.

docker run [خيارات] IMAGE [أمر] [مفروضات]

خيارات رئيسية:

-d : يعمل المحاكي بالطريقة الخلفية
-t : يقدم واجهة终端 وهمية
-i : يقدم إدخال تفاعلي، عادةً يستخدم مع “-t”,إذا كان يتم تقديم خيار “-i” فقط، فإن المحاكي لا يمكن الخروج منه عند بدئه
-v : ي映射 ملف نظام التخزين إلى المحاكي، مثل: -p /data/www:/var/www/html
-p : ي映射 مرفق المحاكي إلى المضيف، مثل: -p 8080:80

أمراً أكثر

# docker images قائمة بجميع الصور المحلية
# docker search centos البحث عن الصور من مستودع الصور الافتراضي
الاسم الوصف النجوم الرسمي التلقائي
centos CentOS الرسمي بناء CentOS. 2767 [OK] 
ansible/centos7-ansible Ansible on Centos7 90 [OK]
jdeathe/centos-ssh CentOS-6 6.8 x86_64 / CentOS-7 7.2.1511 x8... 42 [OK]
jdeathe/centos-ssh-apache-php CentOS-6 6.8 x86_64 - Apache / PHP / PHP M... 21 [OK]
nimmis/java-centos This is docker images of CentOS 7 with dif... 17 [OK]
consol/centos-xfce-vnc CentOS container with "headless" VNC sessi... 14 [OK]
#docker pull centos downloads the image to local
#docker create -it ubuntu:latest creates a container
Unable to find image 'ubuntu:latest' locally
latest: Pulling from ubuntu
58488e45273c: Pull complete 
25810b66099e: Pull complete 
6571ba684f54: Pull complete 
6ed49a73d8f0: Pull complete 
c53777cbfc31: Pull complete 
56465e1e45d2: Pull complete 
Digest: sha256:312986132029d622ae65423ca25d3a3cf4510de25c47b05b6819d61e2e2b5420
Status: Downloaded newer image for ubuntu:latest
1330233e50aba7fca99e5914bd28dd89321bc86ec35fb36b4775d3424337c190
أمر docker create يخلق حاوية تقف، ويجب تشغيلها باستخدام docker start
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1330233e50ab ubuntu:latest "/bin/bash" About a minute ago happy_engelbart
docker run أمر متساوي لتنفيذ أمر docker create أولاً، ثم أمر docker start
# docker run ubuntu /bin/echo \
مرحبًا العالم

دخول الصندوق

الطريقة الأولى:

# docker attach a54615a88787 الذي يتبعه هو اسم الصندوق أو المعرف، يخرج الصندوق أيضًا عند الخروج، لا يستخدم عادة

الطريقة الثانية:

# docker exec -it a54615a88787 /bin/bash الذي يتبعه هو اسم الصندوق أو المعرف

الطريقة الثالثة:

yum -y install util-linux
# docker inspect --format "{{.State.Pid}}" stupefied_cray في النهاية هو اسم الصندوق
4899
# nsenter --target 4899 --mount --uts --ipc --net --pid

البرنامج النصي

#!/bin/bash
CNAME=$1
CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME)
nsenter --target $CPID --mount --uts --ipc --net –pid

ما تم ذكره أعلاه هو شرح الأوامر الأساسية لدوكير التي قدمه المحرر للمستخدمين، نأمل أن يكون هذا مفيدًا للمستخدمين. إذا كان لديك أي أسئلة، فأترك لي تعليقًا، وسأقوم بالرد على المستخدمين في الوقت المناسب. كما أود أن أعبأ الشكر لجميع من ساهم في دعم موقع تعليمات النطق!

بيان: محتويات هذا المقال تم جمعها من الإنترنت، ويحق للمالك الأصلي الحصول عليها، يتم جمع المحتويات من قبل المستخدمين عبر الإنترنت بشكل تلقائي، ولا يملك هذا الموقع حقوق الملكية، ولا يتم تعديل المحتويات بشكل يدوي، ولا يتحمل الموقع أي مسؤولية قانونية ذات صلة. إذا رأيت محتوى يشتبه في حقوق النسخ، فمرحبًا بك في إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (يرجى استبدال #بـ @ عند إرسال البريد الإلكتروني) لتقديم الشكوى، وقدم الدليل الداعم، وإذا تم التحقق من ذلك، فإن هذا الموقع سيرفع محتويات المشتبه في حقوق النسخ فورًا.

أعجبك هذا