یک راهنمای گام به گام برای کمک به شما در شروع استفاده از ظروف Docker با برنامه های Node.js خود.

پیش نیازها

برای تکمیل این آموزش ، به موارد زیر احتیاج دارید:

  • حساب Docker رایگان [19659005] Docker بصورت محلی اجرا می شود
  • Node.js نسخه 12.18 یا بالاتر
  • یک IDE یا ویرایشگر متن برای ویرایش پرونده ها. من VSCode

Docker Overview

Docker یک بستر باز برای توسعه ، حمل و اجرای برنامه ها است. Docker شما را قادر می سازد تا برنامه های خود را از زیرساخت خود جدا کنید تا بتوانید سریع نرم افزار تحویل دهید.

با استفاده از Docker ، می توانید زیرساخت خود را به همان روشی که برنامه های خود را مدیریت می کنید ، مدیریت کنید. با بهره گیری از روش های داکر برای ارسال ، آزمایش و استقرار سریع کد ، می توانید تاخیر بین نوشتن کد و اجرای آن را در تولید به طور قابل توجهی کاهش دهید.

نمونه نمونه

بیایید یک برنامه ساده Node.js ایجاد کنیم که ما " من به عنوان مثال استفاده می کنم. برای ایجاد یک API ساده REST یک فهرست در ماشین محلی خود ایجاد کنید و مراحل زیر را دنبال کنید.

 $ cd [path to your node-docker directory]
$ npm مقدار آغازین
$ npm نصب ronin-server ronin-mocks
$ touch server.js 

اکنون اجازه دهید چند کد برای رسیدگی به درخواستهای REST ما اضافه کنیم. ما از یک سرور مسخره استفاده خواهیم کرد ، بنابراین می توانیم بر روی Dockerizing برنامه و نه کد واقعی آن تمرکز کنیم.

این دایرکتوری کاری را در IDE مورد علاقه خود باز کرده و کد زیر را در پرونده server.js وارد کنید.

 const ronin = نیاز ('ronin-server')
مسخره ساختن = نیاز ('ronin-mocks')
 
سرور const = ronin.server ()
 
server.use ('/'، mocks.server (server.Router ()، false، true))
server.start () 

سرور مسخره Ronin.js نامیده می شود و به طور پیش فرض در پورت 8000 لیست می شود. می توانید درخواست POST را به نقطه پایانی root / / ارسال کنید و هر ساختار JSON که به سرور ارسال می کنید در حافظه ذخیره می شود. همچنین می توانید درخواست های GET را به همان نقطه پایانی ارسال کنید و آرایه ای از اشیا J JSON را که قبلاً ارسال کرده اید دریافت کنید.

آزمایش برنامه ما

بیایید برنامه خود را شروع کنیم و مطمئن شویم که به درستی اجرا می شود. ترمینال خود را باز کرده و به فهرست کار خود که ایجاد کرده اید بروید.

$ node server.js

برای بررسی اینکه برنامه به درستی کار می کند ، ابتدا برخی از json را به API ارسال کرده و سپس درخواست GET می کنیم تا ببینیم داده ها ذخیره شده اند . ترمینال جدیدی را باز کنید و دستورات زیر را پیدا کنید:

 $ curl - درخواست POST 
  --url http: // localhost: 8000 / test 
  --header 'type-type: application / json' 
  --داده ها '{
"msgstr": "آزمایش"
} "
{"کد": "موفقیت" ، "محموله": [{"msg":"testing","id":"31f23305-f5d0-4b4f-a16f-6f4c8ec93cf1","createDate":"2020-08-28T21:53:07.157Z"}]}

$ curl http: // localhost: 8000 / تست
{"کد": "موفقیت" ، "متا": {"کل": 1 ، "شمارش": 1} ، "محموله": [{"msg":"testing","id":"31f23305-f5d0-4b4f-a16f-6f4c8ec93cf1","createDate":"2020-08-28T21:53:07.157Z"}]}

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

 2020-XX-31T16: 35: 08: 4260 اطلاعات: POST / آزمون
2020-XX-31T16: 35: 21: 3560 اطلاعات: GET / test 

ایجاد Dockerfiles برای Node.js

اکنون که برنامه ما به درستی اجرا می شود ، بیایید نگاهی به ایجاد Dockerfile بیندازیم.

A Dockerfile یک سند متنی است که شامل تمام دستوراتی است که کاربر می تواند در خط فرمان برای جمع آوری یک تصویر فراخوانی کند. وقتی به داکر می گوییم با اجرای دستور docker build تصویر ما را بسازد ، داکر این دستورالعمل ها را می خواند و آنها را یکی یکی اجرا می کند و در نتیجه یک تصویر داکر ایجاد می کند.

بیایید با ایجاد یک Dockerfile برای برنامه ما. در ریشه فهرست کار خود ، فایلی با نام Dockerfil e ایجاد کرده و این فایل را در ویرایشگر متن خود باز کنید.

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

اولین کاری که باید انجام دهیم این است که در Dockerfile خود خطی اضافه کنیم که به داکر بگوید از چه تصویر پایه ای می خواهیم برای برنامه خود استفاده کنیم.

Dockerfile:

 FROM node: 12.18.1 

تصاویر داکر را می توان از تصاویر دیگر به ارث برد. بنابراین به جای ایجاد تصویر پایه خود ، از تصویر رسمی Node.js استفاده خواهیم کرد که از قبل دارای تمام ابزارها و بسته هایی است که برای اجرای یک برنامه Node.js نیاز داریم. شما می توانید به این فکر کنید که به همان روشی که در مورد وراثت کلاس در برنامه نویسی شی گرا فکر می کنید وجود دارد. به عنوان مثال اگر می توانستیم تصاویر Docker را در JavaScript ایجاد کنیم ، ممکن است چیزی مانند موارد زیر را بنویسیم. که عملکرد را از کلاس پایه NodeBaseImage به ارث برده است.

به همین ترتیب ، هنگامی که ما از دستور FROM استفاده می کنیم ، به docker می گوییم تمام عملکردهای گره: 12.18.1 تصویر .

توجه : اگر می خواهید در مورد ایجاد تصاویر پایه خود بیشتر بیاموزید ، لطفاً اسناد ما را در مورد ایجاد تصاویر پایه بررسی کنید.

برای ساخت هنگام اجرای بقیه دستورات ، همه چیز راحت تر است ، بیایید یک فهرست کار ایجاد کنیم.

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

 WORKDIR / app 

معمولاً اولین کاری که پس از بارگیری یک پروژه نوشته شده در Node انجام می دهید. js نصب بسته های npm است. این اطمینان می دهد که برنامه شما تمام وابستگی های خود را به فهرست node_modules نصب کرده است که در آن زمان اجرا گره می تواند آنها را پیدا کند.

قبل از اینکه بتوانیم نصب npm را اجرا کنیم ، باید خود را دریافت کنیم. فایل pack.json و packet-lock.json را در تصاویر ما وارد کنید. برای این کار از دستور COPY استفاده خواهیم کرد. دستور COPY دو پارامتر را می گیرد. اولین پارامتر به داکر می گوید چه پرونده هایی را می خواهید در تصویر کپی کنید. پارامتر دوم به داکر می گوید که کجا می خواهید آن پرونده (ها) در کپی شوند. ما پرونده package.json و packet-lock.json را در فهرست کار خود کپی خواهیم کرد – /app.-1019659013 برگزیده COPY pack.json package.json
COPY packet-lock.json packet-lock.json

هنگامی که فایل های package.json را در داخل تصویر قرار دادیم ، می توانیم از دستور RUN برای اجرای دستور npm install استفاده کنیم . این دقیقاً همان کاری را انجام می دهد که اگر npm به صورت محلی روی دستگاه خود نصب کنیم اما این بار این ماژول های گره در فهرست node_modules داخل تصویر ما نصب می شوند.

 RUN npm install 

در این مرحله ما تصویری داریم که بر اساس گره نسخه 12.18.1 است و ما وابستگی های خود را نصب کرده ایم. مورد بعدی که باید انجام دهیم افزودن کد منبع به تصویر است. ما همانند آنچه در پرونده های pack.json در بالا انجام دادیم از دستور COPY استفاده خواهیم کرد.

 COPY. . 

این دستور COPY تمام پرونده های واقع در فهرست فعلی را می گیرد و آنها را در تصویر کپی می کند. حال تنها کاری که ما باید انجام دهیم این است که به داکر بگوییم وقتی تصویر ما درون ظرف قرار می گیرد ، چه دستوری را می خواهیم اجرا کنیم. این کار را با دستور CMD انجام می دهیم.

 CMD [ "node", "server.js" ] 

در زیر Dockerfile کامل وجود دارد.

 FROM گره: 12.18.1
 
WORKDIR / برنامه
 
بسته COPY.json package.json
کپی بسته قفل.json بسته قفل. json
 
نصب npm نصب کنید
 
کپی 🀄 . .
 
CMD [ "node", "server.js" ] 

تصاویر ساختمان

اکنون که Dockerfile خود را ایجاد کردیم ، بیایید تصویر خود را بسازیم. برای این کار از دستور docker build استفاده می کنیم. دستور docker build تصاویر Docker را از یک Dockerfile و یک "زمینه" ایجاد می کند. زمینه ساخت مجموعه ای از پرونده ها است که در PATH یا URL مشخص شده قرار دارند. روند ساخت Docker می تواند به هر یک از پرونده های واقع در متن دسترسی پیدا کند.

دستور build به صورت اختیاری یک پرچم برچسب می گیرد. برچسب برای تنظیم نام تصویر و یک برچسب اختیاری در قالب "name: tag" استفاده می شود. ما در حال حاضر "برچسب" اختیاری را برای کمک به ساده کردن موارد کنار خواهیم گذاشت. اگر برچسبی عبور نکنید ، docker از "جدیدترین" به عنوان برچسب پیش فرض استفاده می کند. این را در آخرین خط خروجی ساخت خواهید دید.

بیایید اولین تصویر Docker خود را بسازیم.

 $ docker build - برچسب node-docker.
ارسال متن ساخت به Docker daemon 82.94kB
مرحله 1/7: از گره: 12.18.1
---> f5be1883c8e0
مرحله 2/7: کد WORKDIR /
...
e03018e56163 با موفقیت ساخته شد
node-docker با موفقیت برچسب گذاری شد: آخرین 

مشاهده تصاویر محلی

برای دیدن لیستی از تصاویر موجود در دستگاه محلی خود ، دو گزینه پیش رو داریم. یکی استفاده از CLI و دیگری استفاده از Docker Desktop. از آنجا که ما در حال کار در ترمینال هستیم ، بیایید نگاهی به لیست تصاویر با CLI بیندازیم.

برای لیست کردن تصاویر ، به سادگی دستور images را اجرا کنید.

 $ docker images
REPOSITORY TAG ID Image اندازه ایجاد شده
node-docker آخرین 3809733582bc حدود یک دقیقه قبل 945 مگابایت
گره 12.18.1 f5be1883c8e0 2 ماه پیش 918 مگابایت

شما باید حداقل دو تصویر لیست شده را مشاهده کنید. یکی برای تصویر پایه گره: 12.18.1 و دیگری برای تصویر ما فقط node-docker را می سازیم: جدیدترین.

برچسب گذاری تصاویر

همانطور که قبلاً ذکر شد ، نام تصویر از م nameلفه های اسلش جدا شده تشکیل شده است. اجزای نام ممکن است شامل حروف کوچک ، رقم و جدا کننده باشند. جدا کننده به عنوان یک دوره ، یک یا دو زیرخط یا یک یا چند خط تعریف می شود. ممکن است یک م mayلفه نام با یک جدا کننده شروع یا پایان یابد.

یک تصویر از یک مانیفست و یک لیست از لایه ها تشکیل شده است. در این مرحله زیاد نگران مانیفست ها و لایه ها نباشید ، به غیر از اینکه "برچسب" به ترکیبی از این مصنوعات اشاره دارد. برای یک تصویر می توانید چندین برچسب داشته باشید. بیایید یک برچسب دوم برای تصویری که ساخته ایم ایجاد کنیم و به لایه های آن نگاهی بیندازیم.

برای ایجاد یک برچسب جدید برای تصویری که در بالا ساخته ایم ، دستور زیر را اجرا کنید.

$ docker tag node-docker : latest node-docker: v1.0.0

دستور docker tag یک برچسب جدید برای تصویر ایجاد می کند. این یک تصویر جدید ایجاد نمی کند. این برچسب به همان تصویر اشاره می کند و فقط راهی دیگر برای ارجاع تصویر است.

اکنون دستور docker images را اجرا کنید تا لیستی از تصاویر محلی ما را ببینید.

 $ docker images
REPOSITORY TAG ID Image اندازه ایجاد شده
node-docker جدیدترین 3809733582bc 24 دقیقه قبل 945 مگابایت
node-docker v1.0.0 3809733582bc 24 دقیقه قبل 945 مگابایت
گره 12.18.1 f5be1883c8e0 2 ماه پیش 918 مگابایت 

می بینید که ما دو تصویر داریم که با node-docker شروع می شوند. ما می دانیم که آنها همان تصویر هستند زیرا اگر به ستون IMAGE ID نگاه کنید ، می بینید که مقادیر برای دو تصویر یکسان است.

اجازه دهید برچسبی را که به تازگی ایجاد کردیم حذف کنیم. برای انجام این کار ، ما از دستور rmi استفاده خواهیم کرد. دستور rmi c مخفف "حذف تصویر" است.

 $ docker rmi node-docker: v1.0.0
Untagged: node-docker: v1.0.0 

توجه کنید که پاسخ Docker به ما می گوید که تصویر حذف نشده است بلکه فقط "بدون برچسب" است. با اجرای دستور images این مورد را دوبار بررسی کنید.

 $ docker images
REPOSITORY TAG ID Image اندازه ایجاد شده
node-docker آخرین 3809733582bc 32 دقیقه پیش 945 مگابایت
گره 12.18.1 f5be1883c8e0 2 ماه پیش 918 مگابایت 

تصویر ما که با برچسب گذاری شده بود: v1.0.0 برداشته شده است اما هنوز برچسب node-docker: آخرین را در دسترس داریم ماشین ما.

در حال اجرا کردن کانتینرها

یک کانتینر یک فرایند سیستم عامل عادی است با این تفاوت که این فرایند به این دلیل جدا می شود که دارای سیستم پرونده خود ، شبکه خود و درخت فرایند جدا شده جدا از میزبان باشد. [19659010] برای اجرای تصویر درون ظرف ، از دستور docker run استفاده می کنیم. دستور docker run به یک پارامتر نیاز دارد و آن نام تصویر است. اجازه دهید تصویر خود را شروع کنیم و مطمئن شویم که به درستی اجرا می شود. دستور زیر را در ترمینال خود اجرا کنید.

$ docker run node-docker

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

بیایید با استفاده از دستور curl یک درخواست GET از سرور ارائه دهیم. [19659013] curl $ – درخواست POST
–url http: // localhost: 8000 / test
–header 'type-type: application / json'
–داده ها '{
"msgstr": "آزمایش"
} "
curl: (7) اتصال به پورت localhost 8000 انجام نشد: اتصال رد شد

همانطور که مشاهده می کنید ، دستور curl ما از کار افتاد زیرا اتصال به سرور ما رد شد. به این معنی که ما قادر به اتصال به localhost در پورت 8000 نبودیم. این انتظار می رود زیرا کانتینر ما بصورت جداگانه اجرا می شود که شامل شبکه می شود. بیایید کانتینر را متوقف کنیم و با پورت 8000 که در شبکه محلی ما منتشر شده است ، دوباره راه اندازی کنیم.

برای متوقف کردن محفظه ، ctrl-c را فشار دهید.

برای انتشار درگاه کانتینر خود ، ما از پرچم – انتشار (به اختصار -p ) در داکر استفاده خواهیم کرد. فرمان دادن قالب دستور – انتشار [host port] است: [container port]. بنابراین اگر می خواستیم پورت 8000 داخل ظرف را در معرض پورت 3000 خارج از ظرف قرار دهیم ، 3000: 8000 را به پرچم – منتشر می كنیم .

کانتینر را شروع کنید و پورت 8000 را در معرض پورت 8000 قرار دهید.

$ docker run - انتشار 8000: 8000 node-docker

حالا بیایید دستور curl را از بالا دوباره اجرا کنیم.

 $ curl - درخواست POST 
  --url http: // localhost: 8000 / test 
  --header 'type-type: application / json' 
  --داده ها '{
"msgstr": "آزمایش"
} "
{"code": "موفقیت" ، "محموله": [{"msg":"testing","id":"dc0e2c2b-793d-433c-8645-b3a553ea26de","createDate":"2020-09-01T17:36:09.897Z"}]} 

موفقیت! ما قادر به اتصال به برنامه موجود در داخل ظرف خود در پورت 8000 بودیم. به ترمینالی که کانتینر شما در آن در حال اجرا است برگردید و باید درخواست POST را که به کنسول وارد شده مشاهده کنید.

2020-09-01T17 : 36: 09: 8770 اطلاعات: POST / test

ctrl-c را فشار دهید تا ظرف متوقف شود.

اجرا در حالت جدا شده

این بسیار خوب است اما برنامه نمونه ما سرور وب است و لازم نیست که ترمینال خود را به کانتینر متصل کنیم. Docker می تواند ظرف شما را در حالت جدا یا در پس زمینه اجرا کند. برای این کار ، می توانیم از – detach یا به اختصار -d استفاده کنیم. داکر همانند قبل کانتینر شما را شروع می کند اما این بار "از کانتینر جدا شده" و شما را به صفحه ترمینال بازمی گرداند.

 $ docker run -d -p 8000: 8000 node-docker
ce02b3179f0f10085db9edfccd731101868f58631bdf918ca490ff6fd223a93b 

Docker ظرف ما را در پس زمینه شروع کرد و شناسه Container را روی ترمینال چاپ کرد.

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

 $ curl - درخواست POST 
  --url http: // localhost: 8000 / test 
  --header 'type-type: application / json' 
  --داده ها '{
"msgstr": "آزمایش"
} "
{"code": "موفقیت" ، "محموله": [{"msg":"testing","id":"dc0e2c2b-793d-433c-8645-b3a553ea26de","createDate":"2020-09-01T17:36:09.897Z"}]} 

ظروف لیست

از آنجا که کانتینر خود را در پس زمینه اجرا کردیم ، از کجا بفهمیم کانتینر ما در حال اجرا است یا ظروف دیگر در حال اجرا هستند دستگاه ما؟ خوب ، ما می توانیم دستور docker ps را اجرا کنیم. دقیقاً مانند لینوکس ، برای دیدن لیستی از فرایندهای دستگاه شما ، دستور ps را اجرا می کنیم. با همین روحیه ، می توانیم دستور docker ps را اجرا کنیم که لیستی از ظروف در حال اجرا روی دستگاه ما را نشان می دهد.

 $ docker ps
شناسه کانتینر IMAGE COMRE CREATED STOR STORS NAMES
ce02b3179f0f node-docker "docker-entrypoint.s" 6 دقیقه قبل بالاتر از 6 دقیقه 0.0.0.0:8000->8000/tcp great_kalam 

دستور ps به شما یک سری موارد مربوط به ظروف در حال اجرا را می گوید. می توانیم Container ID ، تصویری که درون ظرف در حال اجرا است ، دستوری که برای راه اندازی ظرف استفاده شده است ، وضعیت ، پورت هایی که در معرض آن است و نام ظرف را مشاهده کنیم.

احتمالاً فکر می کنید نام کانتینر ما از کجا آمده است. از آنجایی که هنگام راه اندازی کانتینر ، نامی برای آن در نظر نگرفتیم ، داکر نام تصادفی ایجاد کرد. ما ظرف یک دقیقه این مشکل را برطرف می کنیم اما ابتدا باید ظرف را متوقف کنیم. برای متوقف کردن ظرف ، دستور docker stop را اجرا کنید که این کار را انجام می دهد ، ظرف را متوقف می کند. شما باید نام ظرف را منتقل کنید یا می توانید از شناسه ظرف استفاده کنید.

 $ docker stop wonderful_kalam
فوق العاده_کلام 

اکنون دستور docker ps را مجدداً اجرا کنید تا لیستی از کانتینرهای در حال اجرا را مشاهده کنید.

 $ docker ps
شناسه کانتینر IMAGE COMAND CREATED STORUS PORTS NAMES 

Stopped، Started and Naming Containers

ظروف داکر را می توان شروع ، متوقف و دوباره راه اندازی کرد. هنگامی که یک ظرف را متوقف می کنیم ، آن برداشته نمی شود اما وضعیت به حالت ایستاده تغییر می کند و روند داخل ظرف متوقف می شود. وقتی دستور docker ps را اجرا کردیم ، خروجی پیش فرض این است که فقط ظروف در حال اجرا را نشان دهد. اگر به طور خلاصه – یا یا a را تصویب کنیم ، همه کانتینرها را در سیستم خود می بینیم که متوقف شده اند یا شروع به کار می کنند.

 $ docker ps -a
ID کانتینر IMAGE COMAND CREATED STATUS PORTS NAMES
ce02b3179f0f node-docker "docker-entrypoint.s" 16 دقیقه قبل خارج شده (0) 5 دقیقه قبل great_kalam
ec45285c456d node-docker "docker-entrypoint.s" 28 دقیقه قبل خارج شده (0) 20 دقیقه قبل agitated_moser
fb7a41809e5d node-docker "docker-entrypoint.s" 37 دقیقه قبل خروج (0) 36 دقیقه پیش goofy_khayyam 

اگر دنبال کرده اید ، باید چندین ظرف را در لیست مشاهده کنید. این کانتینرهایی است که ما شروع به کار کرده و متوقف کرده ایم اما برداشته نشده اند.

اجازه دهید ظرفی را که تازه متوقف کردیم دوباره راه اندازی کنیم. نام کانتینر را که متوقف کردیم بیابید و نام کانتینر زیر را در دستور restart جایگزین کنید. 19659013] $ docker ps – همه
شناسه کانتینر IMAGE COMAND CREATED STOR STORS NAMES
ce02b3179f0f node-docker "docker-entrypoint.s" 19 دقیقه قبل بالاتر از 8 ثانیه 0.0.0.0:8000->8000/tcp فوق العاده_کلام
ec45285c456d node-docker "docker-entrypoint.s" 31 دقیقه قبل خارج شده (0) 23 دقیقه قبل agitated_moser
fb7a41809e5d node-docker "docker-entrypoint.s" 40 دقیقه قبل خروج (0) 39 دقیقه پیش goofy_khayyam

توجه داشته باشید که کانتینری که ما مجدداً راه اندازی کردیم در حالت جداگانه آغاز شده و درگاه 8000 در معرض آن قرار دارد. همچنین مشاهده کنید وضعیت ظرف "Up X seconds" است. هنگامی که یک کانتینر را دوباره راه اندازی می کنید ، با همان پرچم ها یا دستوراتی که در ابتدا با آن شروع شده بود ، شروع می شود.

بیایید تمام ظروف خود را متوقف کرده و حذف کنیم و نگاهی به رفع مشکل نامگذاری تصادفی بیندازیم.

Stop the ظرفی که تازه شروع کردیم. نام کانتینر در حال اجرا خود را پیدا کنید و نام موجود در دستور زیر را با نام کانتینر موجود در سیستم خود جایگزین کنید.

 $ docker stop great_kalam
great_kalam 

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

 $ docker ps - all
ID کانتینر IMAGE COMAND CREATED STATUS PORTS NAMES
ce02b3179f0f node-docker "docker-entrypoint.s…" 19 دقیقه قبل بالاتر از 8 ثانیه 0.0.0.0:8000->8000/tcp فوق العاده_کلام
ec45285c456d node-docker "docker-entrypoint.s" 31 دقیقه قبل خارج شده (0) 23 دقیقه قبل agitated_moser
fb7a41809e5d node-docker "docker-entrypoint.s" 40 دقیقه قبل خروج (0) 39 دقیقه پیش goofy_khayyam 

برای حذف یک کانتینر ، دستور docker rm را با عبور از نام ظرف اجرا کنید. می توانید در یک دستور چندین نام کانتینر را به فرمان منتقل کنید. باز هم ، نام کانتینرها را در دستور زیر با نام کانتینرهای سیستم خود جایگزین کنید.

 $ docker rm great_kalam agitated_moser goofy_khayyam
فوق العاده_کلام
agosited_moser
goofy_khayyam 

دستور docker ps - all را دوباره اجرا کنید تا ببینید همه ظرف ها از بین رفته اند.

حال بیایید به مسئله نام تصادفی مزاحم بپردازیم. روش استاندارد این است که به ظروف خود نامگذاری کنید به این دلیل ساده که تشخیص اینکه چه چیزی در این کانتینر اجرا می شود و با چه برنامه یا خدماتی مرتبط است آسان تر است. درست مانند قراردادهای نامگذاری مناسب برای متغیرهای کد شما ، خواندن آن را ساده تر می کند.

برای نامگذاری یک کانتینر ، فقط باید پرچم –name را به دستور run منتقل کنیم.

 $ docker run -d -p 8000: 8000 - name rest-server node-docker
1aa5d46418a68705c81782a58456a4ccdb56a309cb5e6bd399478d01eaa5cdda
$ docker ps
ID کانتینر IMAGE COMAND CREATED STATUS PORTS NAMES
1aa5d46418a6 node-docker "docker-entrypoint.s" 3 ثانیه قبل Up 3 seconds 0.0.0.0:8000->8000/tcp rest-server 

در آنجا ، بهتر است. اکنون می توانیم کانتینر خود را بر اساس نام به راحتی شناسایی کنیم.

نتیجه گیری

در این پست ، ما در مورد ایجاد تصاویر Docker با استفاده از Dockerfile ، برچسب گذاری تصاویر و مدیریت تصاویر آشنا شدیم. در ادامه نگاهی به اجرای کانتینرها ، انتشار درگاه ها و اجرای ظروف در حالت جداگانه انداختیم. سپس با راه اندازی ، متوقف کردن و راه اندازی مجدد آنها در مورد مدیریت کانتینرها آشنا شدیم. ما همچنین به بررسی نام کانتینرهای خود پرداختیم تا بتوانند به راحتی شناسایی شوند.

در بخش دوم ، نگاهی خواهیم انداخت به اجرای یک پایگاه داده در یک کانتینر و اتصال آن به برنامه خود. ما همچنین می خواهیم محیط توسعه محلی شما را به اشتراک بگذاریم و تصاویر شما را با استفاده از Docker به اشتراک بگذاریم.

اگر س anyالی دارید ، لطفاً در این باره با Twitter pmckee تماس بگیرید و با ما در انجمن خود همراه شوید. سستی.