هنگام کار روی پروژه های docker ، بیشتر اوقات ، تصاویر داکر موجود نمی توانند شرایط شما را برآورده کنند.

این جایی است که Dockerfile به تصویر می آید. این کمک خواهد کرد که تصاویر Docker سفارشی ایجاد کنید. از این رو آگاهی از Dockerfile امری ضروری است.

Dockerfile چیست?

این یک فایل متنی ساده با یک مجموعه دستور یا دستورالعمل است. این دستورات / دستورالعمل ها به طور پیاپی اجرا می شوند تا اقدامات را بر روی تصویر پایه انجام دهند تا یک تصویر داکر جدید ایجاد شود.

نظرات و دستورات + آرگومانها دو نوع بلوک خط اصلی در نحو Dockerfile هستند

نظرات نحو

# بلوک های خطی که برای اظهار نظر استفاده می شود

آرگومان فرمان argument1 …..

دستورات + مثال های آرگومان

# بلوک های خطی که برای اظهار نظر استفاده می شود

آرگومان فرمان argument1 …..

در زیر نحوه گردش کار شما مشاهده می شود.

  • یک Dockerfile ایجاد کنید و دستورالعمل هایی را برای ایجاد تصویر docker خود ذکر کنید
  • دستور docker build را اجرا کنید که یک تصویر docker ایجاد می کند
  • اکنون تصویر docker آماده استفاده است ، از دستور docker run برای ایجاد ظروف استفاده کنید

گردش کار dockerfile

دستورات اساسی

از جانب – تصویر پایه را برای استفاده و شروع فرایند ساخت تعریف می کند.

اجرا کن – دستور و استدلالات آن را می گیرد تا آن را از روی تصویر اجرا کنید.

CMD – عملکردی مشابه یک دستور RUN است ، اما فقط پس از آنکه ظروف از آن استفاده می شوند ، اجرا می شوند.

نقطه ورود – در هنگام ایجاد ظرف ، برنامه پیش فرض شما را در تصویر هدف قرار می دهد.

اضافه کردن – این پرونده ها را از مبدأ به مقصد دیگر (درون ظرف) کپی می کند..

ENV – متغیرهای محیط را تنظیم می کند.

نحوه ایجاد تصویر Docker با Dockerfile?

در مرحله اول ، اجازه دهید یک Dockerfile ایجاد کنیم.

[ایمیل محافظت شده]: ~ $ gedit Dockerfile

دستورات / دستورالعمل های زیر را در آن قرار داده و آن را ذخیره کنید.

# تصویر پایه را روی اوبونتو تنظیم کنید
از اوبونتو

# لیست منابع مخزن را به روز کنید و gnupg2 را نصب کنید
به روزرسانی مناسب دریافت کنید && نصب-gnupg2 را نصب کنید

# کلید تأیید بسته را اضافه کنید
RUN apt-key prom –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/source.list.d/mongodb.list

# لیست منابع مخزن را به روز کنید
به روزرسانی مناسب دریافت کنید

# نصب بسته MongoDB (.deb)
نصب سریع و نصب mongodb را انجام دهید

# دایرکتوری داده پیش فرض ایجاد کنید
RUN mkdir -p / data / db

# درگاه پیش فرض را قرار دهید
EXPOSE 27017

# پورت پیش فرض برای اجرای ورودی ورودی (MongoDB)
CMD ["–بندر 27017"]

# فرمان پیش فرض ظرف را تنظیم کنید
ENTRYPOINT usr / bin / mongodb

در این Dockerfile ، ubuntu به عنوان تصویر پایه تنظیم می شود. سپس دستورات و آرگومان های لازم برای نصب MongoDB ذکر شده است. بندر 27017 با فرمان پیش فرض ظرف به عنوان usr / bin / mongodb در معرض MongoDB قرار دارد

بعد ، من آن را اجرا می کنم تا یک تصویر docker ایجاد کنم.

در حال اجرا Dockerfile

دستور زیر بعد از اجرای موفقیت آمیز ، یک تصویر docker با نام geekflare_mongodb ایجاد می کند.

[ایمیل محافظت شده]: ~ docker build -t geekflare_mongodb .

ارسال زمینه ساخت به Demoner Daemon 667.2MB

مرحله 1/9: از ubuntu

آخرین: در حال کشیدن از کتابخانه / اوبونتو

7413c47ba209: بکشید کامل

0fe7e7cbb2e8: کامل بکشید

1d425c982345: بکشید کامل

344da5c95cec: کامل بکشید

هضم: sha256: c303f19cfe9ee92badbbbd7567bc1ca47789f79303ddcef56f77687d4744cd7a

وضعیت: تصویر جدیدتر برای بارگیری: بارگیری شده است

—> 3556258649b2

مرحله 2/10: بروزرسانی مناسب و بدست آور RUN && نصب-gnupg2 را نصب کنید

—> در حال اجرا در de3706328761

دریافت: 1 http://security.ubuntu.com/ubuntu bionic-Security InRelease [88.7 kB]

دریافت: 2 http://archive.ubuntu.com/ubuntu bionic InRelease [242 kB]

16.9 مگابایت در 38s (445 کیلوبایت در ثانیه)

لیست بسته های خواندن…

لیست بسته های خواندن…

درخت وابستگی ساختمان…

خواندن اطلاعات دولت…

نیاز به بایگانی 5187 kB دارید.

پس از این عمل ، 15.8 مگابایت فضای دیسک اضافی استفاده خواهد شد.

دریافت: 1 http://archive.ubuntu.com/ubuntu bionic / اصلی amd64 readline-مشترک همه 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 / اصلی amd64 libsqlite3-0 amd64 3.22.0-1ubuntu0.1 [497 kB]

دریافت: 4 http://archive.ubuntu.com/ubuntu bionic-updates / main amd64 libssl1.1 amd64 1.1.1-1ubuntu2.1 .04 18.04.4 [1300 kB]

debconf: تأخیر در پیکربندی بسته ، زیرا ابزارهای نرم افزاری نصب نشده اند

5187 kB در 12s (416 kB / s) دريافت شده است

انتخاب بسته خوانده نشده انتخاب شده خط خوانی معمول است.

(خواندن پایگاه داده … 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 –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: کلید عمومی "کلید امضای کاملا Legit <[ایمیل محافظت شده]>" وارداتی

gpg: key 9ECBEC467F0CEB10: 1 امضا به دلیل یک کلید گمشده بررسی نشده است

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/source.list.d/mongodb.list

—> در حال اجرا در 40630fd7b0a9

از بین بردن ظرف واسطه 40630fd7b0a9

—> a1bd9d8d7e51

مرحله 5/10: بروزرسانی مناسب و بدست آور RUN

—> در حال اجرا در 750717d9c0ea

آمار: 1 http://archive.ubuntu.com/ubuntu Bionic InRelease

آمار: 2 http://archive.ubuntu.com/ubuntu bionic- به روزرسانی InRelease

آمار: 3 http://security.ubuntu.com/ubuntu bionic-Security InRelease

آمار: 4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease

لیست بسته های خواندن…

از بین بردن ظرف واسطه 750717d9c0ea

—> 397d6501db58

مرحله 6/10: نصب سریع و نصب 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-minim4

libunwind8 libyaml-cpp0.5v5 mongo-ابزار mongodb mongodb-клиенти

mongodb-server mongodb-server-core

0 به روزرسانی شده ، 17 نصب جدید ، 0 برای حذف و 0 به روز نشده است.

باید 53.7 مگابایت بایگانی بدست آورید.

پس از این عمل از 218 مگابایت فضای دیسک اضافی استفاده می شود.

دریافت: 1 http://archive.ubuntu.com/ubuntu bionic-updates / world amd64 mongodb-клиенти amd64 1: 3.6.3-0ubuntu1.1 [20.2 MB]

دریافت: 2 http://archive.ubuntu.com/ubuntu bionic-updates / world amd64 mongodb-server-core amd64 1: 3.6.3-0ubuntu1.1 [20.3 MB]

دریافت: 3 http://archive.ubuntu.com/ubuntu bionic-updates / world amd64 mongodb-server all 1: 3.6.3-0ubuntu1.1 [12.6 kB]

دریافت: 4 http://archive.ubuntu.com/ubuntu bionic-updates / world amd64 mongodb amd64 1: 3.6.3-0ubuntu1.1 [9968 B]

53.7 مگابایت در 10 ثانیه (5485 kB / s) دریافت شده

انتخاب بسته انتخاب نشده قبلی libpcap0.8: amd64.

(خواندن پایگاه داده … 4390 پرونده و دایرکتوری در حال حاضر نصب شده است.)

انتخاب سرویس گیرنده بسته های انتخاب نشده mongodb.

در حال آماده سازی برای باز کردن قفل … / 13-mongodb-клиенти_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-server (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: EXPOSE 27017

—> در حال اجرا در 8d070e2a1e07

از بین بردن ظرف واسطه 8d070e2a1e07

—> f770776a538c

مرحله 9/10: CMD ["–بندر 27017"]

—> در حال اجرا در ab612410df77

از بین بردن ظرف واسطه ab612410df77

—> e5830b80934f

مرحله 10/10: ENTRYPOINT usr / bin / mongod

—> در حال اجرا در 95f574727aab

برداشتن ظروف میانی 95f574727aab

—> 095d17727ca0

با موفقیت 095d17727ca0 ساخته شد

با موفقیت برچسب گذاری شده geekflare_mongodb: آخرین

بگذارید بررسی کنیم که آیا تصویر docker با نام geekflare_mongodb ایجاد شده است یا خیر.

[ایمیل محافظت شده]: d تصاویر docker

اندازه ایجاد شده ID ID REPOSITORY TAG

geekflare_mongodb آخرین 095d17727ca0 3 دقیقه پیش 325MB

ubuntu آخرین 3556258649b2 4 روز پیش 64.2MB

mean_express آخرین 35dcb3df9806 6 روز پیش 923MB

mean_angular آخرین 9f8d61db600c 6 روز پیش 1.29 گیگابایت

تصویر docker geekflare_mongodb را درون یک ظرف mongo_container اجرا کنید.

[ایمیل محافظت شده]: ~ docker run – نام mongo_container -i -t geekflare_mongodb

2019-07-27T19: 38: 23.734 + 0000 I CONTROL [initandlisten] MongoDB start: pid = 6 port = 27017 dbpath = / data / db میزبان 64 بیتی = b0095c1e5536

2019-07-27T19: 38: 23.735 + 0000 I CONTROL [initandlisten] db نسخه 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-27T19: 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 I CONTROL [initandlisten] محیط ساخت:

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

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

2019-07-27T19: 38: 23.739 + 0000 I CONTROL [initandlisten] گزینه ها: {}

2019-07-27T19: 38: 23.745 + 0000 I STORAGE [initandlisten] wiredtiger_open پیکربندی: ایجاد ، cache_size = 2038M ، session_max = 20000 ، بیرون کشیدن = (موضوعات_مین = 4 ، موضوع_مکس = 4) ، پیکربندی_باز = غلط ، آمار = (سریع) ، log = (فعال شده = صحیح ، بایگانی = صحیح ، مسیر = ژورنال ، کمپرسور = خرابکار) ، پرونده_منجر = (close_idle_time = 100000) ، statistics_log = (منتظر = 0) ، فعل = = (بازیابی_ پیشرفت),

2019-07-27T19: 38: 24.733 + 0000 I CONTROL [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 I CONTROL [initandlisten] ** اخطار: شما این فرآیند را به عنوان کاربر اصلی اجرا می کنید ، که توصیه نمی شود.

2019-07-27T19: 38: 24.736 + 0000 I CONTROL [initandlisten]

2019-07-27T19: 38: 24.736 + 0000 I CONTROL [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 I CONTROL [initandlisten] ** آدرسهایی را که باید پاسخ دهد از طریق ، یا با –bind_ip_all به

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 I CONTROL [initandlisten]

2019-07-27T19: 38: 24.739 + 0000 I STORAGE [initandlisten] ایجاد مجموعه: admin.system.version با UUID ارائه شده: 4b8b509d-633a-46c1-a302-cb8c82b0d5d3

2019-07-27T19: 38: 24.788 + 0000 I دستور [initandlisten] ویژگی تنظیم تنظیمات سازگاری به 3.6

2019-07-27T19: 38: 24.818 + 0000 I STORAGE [initandlisten] ایجاد مجموعه: 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

CONTAINER ID IMAGE Command ایجاد نامهای PATAT STATUS

b0095c1e5536 geekflare_mongodb   "/ bin / sh -c usr / bin /…"   35 ثانیه پیش تا 33 ثانیه 27017 / tcp mongo_container

همانطور که می بینید ، ظرفی که از تصویر geekflare_mongodb ایجاد شده است در حال اجرا است.

امیدوارم که این ایده در مورد dockerfile و مزایای آن به شما ایده دهد. همچنین می توانید این اسناد را بررسی کنید بهترین روش Dockerfile برای کسب اطلاعات بیشتر.

برچسب ها:

  • داکر

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me