ما هو ملف Dockerfile وكيفية إنشاء صورة Docker؟

أثناء العمل على مشاريع عامل الميناء ، في معظم الأحيان ، لن تفي صور عامل الميناء الموجودة بمتطلباتك.


هذا هو المكان الذي يأتي فيه Dockerfile في الصورة ؛ سوف تساعدك على إنشاء صور Docker مخصصة. وبالتالي ، من الضروري معرفة Dockerfile.

ما هو Dockerfile?

إنه ملف نصي بسيط يحتوي على مجموعة من الأوامر أو التعليمات. يتم تنفيذ هذه الأوامر / التعليمات على التوالي لتنفيذ الإجراءات على الصورة الأساسية لإنشاء صورة عامل إرساء جديدة.

التعليقات والأوامر + الوسيطات نوعان من الكتل الرئيسية في بنية Dockerfile

صيغة التعليقات

# خطوط خط المستخدمة للتعليق

الوسيطة الأمر argument1 …..

مثال أوامر + وسيطات

# خطوط خط المستخدمة للتعليق

الوسيطة الأمر argument1 …..

أدناه هو كيف سيبدو سير العمل الخاص بك.

  • قم بإنشاء ملف Dockerfile واذكر التعليمات لإنشاء صورة Docker الخاصة بك
  • قم بتشغيل أمر بناء عامل إرساء والذي سيؤدي إلى إنشاء صورة عامل إرساء
  • الآن صورة docker جاهزة للاستخدام ، استخدم الأمر docker run لإنشاء حاويات

سير عمل dockerfile

الأوامر الأساسية

من عند – يحدد الصورة الأساسية لاستخدامها وبدء عملية البناء.

يركض – يستغرق الأمر الأمر وحججه لتشغيله من الصورة.

CMD – وظيفة مماثلة لأمر RUN ، ولكن يتم تنفيذها فقط بعد إنشاء الحاوية.

نقطة الدخول – يستهدف التطبيق الافتراضي الخاص بك في الصورة عند إنشاء الحاوية.

إضافة – ينسخ الملفات من المصدر إلى الوجهة (داخل الحاوية).

ENV – يضبط متغيرات البيئة.

كيفية إنشاء صورة Docker مع ملف Dockerfile?

أولاً ، لننشئ ملف Dockerfile.

[البريد الإلكتروني محمي]: ~ $ gedit Dockerfile

ضع الأوامر / التعليمات أدناه فيه واحفظه.

# اضبط الصورة الأساسية على أوبونتو
من أوبونتو

# تحديث قائمة مصادر المستودعات وتثبيت gnupg2
RUN apt-get update && apt-get install -y gnupg2

# أضف مفتاح التحقق من الحزمة
RUN apt-key adv –keyserver hkp: //keyserver.ubuntu.com: 80 –recv 7F0CEB10

# أضف MongoDB إلى قائمة مصادر المستودعات
RUN echo ‘deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen’ > tee /etc/apt/sources.list.d/mongodb.list

# تحديث قائمة مصادر المستودع
RUN apt-get update

# تثبيت حزمة MongoDB (.deb)
RUN apt-get install -y mongodb

# إنشاء دليل البيانات الافتراضي
RUN mkdir -p / data / db

# فضح المنفذ الافتراضي
كشف 27017

# المنفذ الافتراضي لتنفيذ نقطة الدخول (MongoDB)
CMD ["–المنفذ 27017"]

# تعيين أمر الحاوية الافتراضي
ENTRYPOINT usr / bin / mongodb

في ملف Dockerfile هذا ، يتم تعيين أوبونتو كصورة أساسية. ثم يتم ذكر الأوامر والحجج اللازمة لتثبيت MongoDB. يتعرض المنفذ 27017 لـ MongoDB باستخدام أمر الحاوية الافتراضي مثل usr / bin / mongodb

بعد ذلك ، سأقوم بتشغيله لإنشاء صورة عامل ميناء.

تشغيل ملف Dockerfile

سيقوم الأمر التالي بإنشاء صورة عامل إرساء تسمى geekflare_mongodb بعد التنفيذ الناجح.

[البريد الإلكتروني محمي]: ~ بناء عامل الميناء $ -t geekflare_mongodb .

إرسال سياق البناء إلى Docker daemon 667.2MB

الخطوة 1/9: من ubuntu

الأحدث: الانسحاب من المكتبة / أوبونتو

7413c47ba209: سحب كامل

0fe7e7cbb2e8: سحب كامل

1d425c982345: سحب كامل

344da5c95cec: سحب كامل

الملخص: sha256: c303f19cfe9ee92badbbbd7567bc1ca47789f79303ddcef56f77687d4744cd7a

الحالة: تم تنزيل صورة أحدث لـ ubuntu: الأحدث

—> 3556258649b2

الخطوة 2/10: RUN apt-get update && apt-get install -y gnupg2

—> يعمل في de3706328761

احصل على: 1 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 كيلوبايت]

Get: 2 http://archive.ubuntu.com/ubuntu bionic InRelease [242 كيلوبايت]

تم جلبه 16.9 ميغابايت في 38 ثانية (445 كيلوبايت / ثانية)

قوائم حزمة القراءة…

قوائم حزمة القراءة…

بناء شجرة التبعية…

قراءة معلومات الحالة…

بحاجة للحصول على 5187 كيلو بايت من المحفوظات.

بعد هذه العملية ، سيتم استخدام 15.8 ميغابايت من مساحة القرص الإضافية.

احصل على: 1 http://archive.ubuntu.com/ubuntu bionic / main amd64 readline-common all 7.0-3 [52.9 kB]

احصل على: 2 http://archive.ubuntu.com/ubuntu bionic / main amd64 libreadline7 amd64 7.0-3 [124 kB]

احصل على: 3 http://archive.ubuntu.com/ubuntu bionic-updates / main amd64 libsqlite3-0 amd64 3.22.0-1ubuntu0.1 [497 كيلوبايت]

احصل على: 4 http://archive.ubuntu.com/ubuntu bionic-updates / main amd64 libssl1.1 amd64 1.1.1-1ubuntu2.1 ~ 18.04.4 [1300 كيلوبايت]

debconf: تأخير تكوين الحزمة ، نظرًا لأن apt-utils غير مثبت

تم جلبه 5187 كيلو بايت في 12 ثانية (416 كيلو بايت / ثانية)

تحديد خط قراءة الحزمة غير المحدد مسبقًا شائع.

(قراءة قاعدة البيانات … 4040 ملفًا وأدلة مثبتة حاليًا.)

جارٍ التحضير لتفريغ … / 00-readline-common_7.0-3_all.deb …

تفريغ خط القراءة المشترك (7.0-3) …

اختيار libreadline7: amd64 للحزمة التي لم يتم اختيارها سابقًا.

جارٍ التحضير لتفريغ … / 01-libreadline7_7.0-3_amd64.deb …

تحديد dirmngr الحزمة التي لم يتم اختيارها من قبل.

إعداد libnpth0: amd64 (1.5-3) …

إعداد libksba8: amd64 (1.3.5-2) …

إعداد gnupg-l10n (2.2.4-1ubuntu1.2) …

مشغلات معالجة libc-bin (2.27-3ubuntu1) …

إزالة الحاوية الوسيطة de3706328761

—> a32533894ed1

الخطوة 3/10: RUN apt-key adv –keyserver hkp: //keyserver.ubuntu.com: 80 –recv 7F0CEB10

—> يعمل في 69c4dba38983

تحذير: لا يجب تحليل إخراج apt-key (stdout ليست محطة طرفية)

التنفيذ: /tmp/apt-key-gpghome.MuT5BDWwKZ/gpg.1.sh –keyserver hkp: //keyserver.ubuntu.com: 80 –recv 7F0CEB10

gpg: المفتاح 5F8F93707F0CEB10: المفتاح العام "تماما مفتاح التوقيع الشرعي <[البريد الإلكتروني محمي]>" مستورد

gpg: المفتاح 9ECBEC467F0CEB10: لم يتم التحقق من توقيع واحد بسبب مفتاح مفقود

gpg: المفتاح 9ECBEC467F0CEB10: المفتاح العام "ريتشارد كروتر <[البريد الإلكتروني محمي]>" مستورد

gpg: العدد الإجمالي المعالج: 2

gpg: مستورد: 2

إزالة الحاوية الوسيطة 69c4dba38983

—> cffbe06c1b50

الخطوة 4/10: RUN echo ‘deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen’ > tee /etc/apt/sources.list.d/mongodb.list

—> يعمل في 40630fd7b0a9

إزالة الحاوية الوسيطة 40630fd7b0a9

—> a1bd9d8d7e51

الخطوة 5/10: RUN apt-get update

—> يعمل في 750717d9c0ea

ضرب: 1 http://archive.ubuntu.com/ubuntu bionic InRelease

ضرب: 2 http://archive.ubuntu.com/ubuntu bionic-updates InRelease

ضرب: 3 http://security.ubuntu.com/ubuntu bionic-security InRelease

ضرب: 4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease

قوائم حزمة القراءة…

إزالة الوعاء الوسيط 750717d9c0ea

—> 397d6501db58

الخطوة 6/10: RUN apt-get install -y mongodb

—> يعمل في 88609c005e73

قوائم حزمة القراءة…

بناء شجرة التبعية…

قراءة معلومات الحالة…

سيتم تثبيت الحزم الجديدة التالية:

libboost-filesystem1.65.1 libboost-iostreams1.65.1

libboost-program-options1.65.1 libboost-system1.65.1 libgoogle-perftools4

libpcap0.8 libpcrecpp0v5 libsnappy1v5 libstemmer0d libtcmalloc-الأدنى 4

libunwind8 libyaml-cpp0.5v5 أدوات مونغو mongodb mongodb-customers

خادم mongodb خادم خادم mongodb-core

0 ترقية ، 17 تثبيت حديثًا ، 0 للإزالة و 0 لم تتم ترقيته.

تحتاج للحصول على 53.7 ميغابايت من المحفوظات.

بعد هذه العملية ، سيتم استخدام 218 ميجابايت من مساحة القرص الإضافية.

احصل على: 1 http://archive.ubuntu.com/ubuntu bionic-updates / universe amd64 mongodb-clients amd64 1: 3.6.3-0ubuntu1.1 [20.2 ميغابايت]

احصل على: 2 http://archive.ubuntu.com/ubuntu bionic-updates / universe amd64 mongodb-server-core amd64 1: 3.6.3-0ubuntu1.1 [20.3 ميغابايت]

احصل على: 3 http://archive.ubuntu.com/ubuntu bionic-updates / universe amd64 mongodb-server all 1: 3.6.3-0ubuntu1.1 [12.6 كيلوبايت]

احصل على: 4 http://archive.ubuntu.com/ubuntu bionic-updates / universe amd64 mongodb amd64 1: 3.6.3-0ubuntu1.1 [9968 B]

تم جلب 53.7 ميغابايت في 10 ثوانٍ (5485 كيلوبايت / ثانية)

اختيار حزمة libpcap0.8 غير المحددة مسبقًا: amd64.

(قراءة قاعدة البيانات … 4390 ملفًا وأدلة مثبتة حاليًا.)

اختيار عملاء mongodb لم يتم اختيارهم من قبل.

جارٍ التحضير لتفريغ … / 13-mongodb-customers_1٪ 3a3.6.3-0ubuntu1.1_amd64.deb …

تفريغ عملاء mongodb (1: 3.6.3-0ubuntu1.1) …

اختيار حزمة mongodb-server-core غير المحددة مسبقًا.

جارٍ التحضير لتفريغ … / 14-mongodb-server-core_1٪ 3a3.6.3-0ubuntu1.1_amd64.deb …

تفريغ mongodb-server-core (1: 3.6.3-0ubuntu1.1) …

اختيار خادم mongodb لم يتم تحديده مسبقًا.

جارٍ التحضير لتفريغ … / 15-mongodb-server_1٪ 3a3.6.3-0ubuntu1.1_all.deb …

تفريغ خادم mongodb (1: 3.6.3-0ubuntu1.1) …

اختيار mongodb الحزمة غير المحددة سابقا.

جارٍ التحضير لتفريغ … / 16-mongodb_1٪ 3a3.6.3-0ubuntu1.1_amd64.deb …

تفريغ mongodb (1: 3.6.3-0ubuntu1.1) …

إعداد خادم mongodb-core-core (1: 3.6.3-0ubuntu1.1) …

إنشاء أدوات مونغو (3.6.3-0ubuntu1) …

إنشاء عملاء mongodb (1: 3.6.3-0ubuntu1.1) …

إعداد خادم mongodb (1: 3.6.3-0ubuntu1.1) …

invoke-rc.d: تعذر تحديد مستوى التشغيل الحالي

invoke-rc.d: نفى policy-rc.d تنفيذ البدء.

إعداد mongodb (1: 3.6.3-0ubuntu1.1) …

مشغلات معالجة libc-bin (2.27-3ubuntu1) …

إزالة الحاوية الوسيطة 88609c005e73

—> d9c072cb1f84

الخطوة 7/10: RUN mkdir -p / data / db

—> يعمل في f817778f69ab

إزالة الحاوية الوسيطة f817778f69ab

—> a3fbdb3def5c

الخطوة 8/10: عرض 27017

—> يعمل في 8d070e2a1e07

إزالة الحاوية الوسيطة 8d070e2a1e07

—> f770776a538c

الخطوة 9/10: CMD ["–المنفذ 27017"]

—> يعمل في ab612410df77

إزالة الوعاء الوسيط ab612410df77

—> e5830b80934f

الخطوة 10/10: ENTRYPOINT usr / bin / mongod

—> يعمل في 95f574727aab

إزالة الحاوية الوسيطة 95f574727aab

—> 095d17727ca0

تم بناء 095d17727ca0 بنجاح

تم وضع علامة بنجاح على geekflare_mongodb: الأحدث

دعونا نتحقق مما إذا تم إنشاء صورة عامل الميناء باسم geekflare_mongodb.

[البريد الإلكتروني محمي]: ~ صور عامل الميناء $

تم إنشاء حجم صورة معرف علامة المستودع

geekflare_mongodb آخر 095d17727ca0 منذ 3 دقيقة 325 ميجابايت

ubuntu الأحدث 3556258649b2 قبل 4 أيام 64.2MB

mean_express أحدث 35dcb3df9806 منذ 6 أيام 923 ميجابايت

mean_angular أحدث 9f8d61db600c قبل 6 أيام 1.29GB

قم بتشغيل geekflare_mongodb صورة عامل الإرساء داخل حاوية mongo_container.

[البريد الإلكتروني محمي]: ~ $ docker run –name mongo_container -i -t geekflare_mongodb

2019-07-27T19: 38: 23.734 + 0000 I CONTROL [initandlisten] بدء MongoDB: pid = 6 port = 27017 dbpath = / data / db 64-bit host = b0095c1e5536

2019-07-27T19: 38: 23.735 + 0000 I CONTROL [initandlisten] إصدار ديسيبل v3.6.3

2019-07-27T19: 38: 23.735 + 0000 I CONTROL [initandlisten] إصدار git: 9586e557d54ef70f9ca4b43c26892cd55257e1a5

2019-07-27T19: 38: 23.736 + 0000 I CONTROL [initandlisten] إصدار OpenSSL: OpenSSL 1.1.1 11 سبتمبر 2018

2019-07-27 T19: 38: 23.739 + 0000 I CONTROL [initandlisten] تخصيص: tcmalloc

2019-07-27T19: 38: 23.739 + 0000 I CONTROL الوحدات [initandlisten]: بلا

2019-07-27T19: 38: 23.739 + 0000 أنا أتحكم في بيئة الإنشاء [initandlisten]:

2019-07-27T19: 38: 23.739 + 0000 I CONTROL [initandlisten] distarch: x86_64

2019-07-27T19: 38: 23.739 + 0000 أتحكم [initandlisten] target_arch: x86_64

2019-07-27T19: 38: 23.739 + 0000 أنا أتحكم في خيارات [initandlisten]: {}

2019-07-27T19: 38: 23.745 + 0000 أقوم بتخزين [initandlisten] wiredtiger_open config: إنشاء ، cache_size = 2038M ، session_max = 20000 ، الإخلاء = (thread_min = 4 ، thread_max = 4) ، config_base = false ، إحصائيات = (سريع) ، تسجيل = (ممكّن = صحيح ، أرشيف = صحيح ، مسار = دفتر اليومية ، ضاغط = snappy) ، file_manager = (close_idle_time = 100000) ، Statistics_log = (انتظار = 0) ، مطوّل = (recovery_progress),

2019-07-27T19: 38: 24.733 + 0000 أتحكم [initandlisten]

2019-07-27T19: 38: 24.734 + 0000 I CONTROL [initandlisten] ** تحذير: لم يتم تمكين التحكم في الوصول لقاعدة البيانات.

2019-07-27T19: 38: 24.735 + 0000 I CONTROL [initandlisten] ** الوصول للقراءة والكتابة إلى البيانات والتكوين غير مقيد.

2019-07-27T19: 38: 24.736 + 0000 أتحكم [initandlisten] ** تحذير: أنت تقوم بتشغيل هذه العملية كمستخدم أساسي ، وهذا غير مستحسن.

2019-07-27T19: 38: 24.736 + 0000 أتحكم [initandlisten]

2019-07-27T19: 38: 24.736 + 0000 أتحكم [initandlisten] ** تحذير: هذا الخادم مرتبط بالمضيف المحلي.

2019-07-27T19: 38: 24.737 + 0000 I CONTROL [initandlisten] ** لن تتمكن الأنظمة البعيدة من الاتصال بهذا الخادم.

2019-07-27T19: 38: 24.737 + 0000 I CONTROL [initandlisten] ** ابدأ تشغيل الخادم باستخدام –bind_ip لتحديد IP

2019-07-27T19: 38: 24.737 + 0000 أتحكم في [initandlisten] ** العناوين التي يجب أن تقدم ردودًا منها أو –

2019-07-27T19: 38: 24.737 + 0000 I CONTROL [initandlisten] ** ربط جميع الواجهات. إذا كان هذا السلوك مرغوبًا ، فابدأ

2019-07-27T19: 38: 24.738 + 0000 I CONTROL [initandlisten] * خادم مع –bind_ip 127.0.0.1 لتعطيل هذا التحذير.

2019-07-27T19: 38: 24.738 + 0000 أتحكم [initandlisten]

2019-07-27T19: 38: 24.739 + 0000 أقوم بتخزين [initandlisten] createCollection: admin.system.version مع UUID المقدم: 4b8b509d-633a-46c1-a302-cb8c82b0d5d3

2019-07-27T19: 38: 24.788 + 0000 I COMMAND [initandlisten] ميزة الضبط التوافق النسخة 3.6

2019-07-27T19: 38: 24.818 + 0000 أقوم بتخزين [initandlisten] createCollection: local.startup_log باستخدام UUID الذي تم إنشاؤه: 6c1c0366-4b1b-4b92-9fcd-d18acc126072

2019-07-27T19: 38: 24.862 + 0000 I FTDC [initandlisten] تهيئة التقاط البيانات التشخيصية بدوام كامل باستخدام الدليل “/data/db/diagnostic.data”

2019-07-27T19: 38: 24.866 + 0000 I NETWORK [initandlisten] في انتظار الاتصالات على المنفذ 27017

افتح محطة طرفية جديدة وتحقق مما إذا كان mongo_container قيد التشغيل.

[البريد الإلكتروني محمي]: ~ $ docker ps

صورة معرف هوية الحاوية تم إنشاؤها أسماء منافذ الحالة

b0095c1e5536 geekflare_mongodb   "/ bin / sh -c usr / bin /…"   قبل 35 ثانية بزيادة 33 ثانية 27017 / tcp mongo_container

كما ترون ، فإن الحاوية التي تم إنشاؤها من صورة geekflare_mongodb جاهزة وتعمل.

آمل أن يمنحك هذا فكرة عن ملف إرساء وفوائده. يمكنك أيضا التحقق من هذه الوثائق على أفضل الممارسات في Dockerfile لتعلم المزيد.

العلامات:

  • عامل ميناء

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map