داکر در عمل :: راه اندازی کانتینرهای تعاملی (ادامه پروژه پایش وب مشتری)

برنامه‌هایی که تعامل بیشتری با کاربران را دارند، احساس تعاملی بودن بیشتری را منتقل می‌کنند. یک وایرایشگر متن تحت ترمینال می‌تواند مثال بسیار خوبی برای این امر باشد. ابزار خط فرمان داکر یک مثال کامل از یک برنامه ترمینال تعاملی است. این نوع برنامه‌ها ممکن است دریافت ورودی از کاربر و یا نمایش خروجی در ترمینال را داشته باشند. برای اجرای برنامه‌های تعاملی داخل کانتینرها نیازمند این هستید که بخشی از ورودی و خروجی‎های کانتینریتان را به ترمینال، از طریق داکر متصل کنید.

با دستور زیر شروع به ایجاد کانتینرهای تعاملی می‌کنیم:

docker run --interactive --tty --link web:web --name web_test busybox:lastest /bin/sh

در فرمان بالا ما run را با دو گزینه interactive و tty استفاده کردیم که می‌توانستیم به جای آنها از (i-) و (t-) هم استفاده کنیم.

  • گزینه interactive به داکر می‌گوید که جریان ورودی استاندارد(stdin) برای کانتینرها ظاهر شود حتی اگر ترمینالی وصل نشده باشد.
  • گزینه tty به داکر می‌گوید که یک ترمینال مجازی برای کانتینر من اجرا کن.ترمینال مجازی به شما اجازه می‌دهد تا سیگنال‌ها را به کانتینر منتقل کنید.

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

در دستور زیر یک کانتینر را اجرا و آن را به ترمینال و به کانتینر ngnix متصل می‌کنیم، این دستور را اجرا کنید تا بتوانید صحت عملکرد کانتینرها را ببنید.

wget -O - http://web:80/

برنامه‌ای که ما از آن استفاده می‌کنیم برنامه wget است که به جهت ارسال درخواست http به وب سرور استفاده می‌شود(NGINX سرور شما در قالب کانتینر پیش‌تر و در پست قبلی اجرایی شده است) و پس از اجرای آن محتوای صفحه وب روی ترمینال استاندارد چاپ خواهد شد.

درمیان متن‌های چاپ شده متنی مانند این خواهید دید “Welcome to NGINX!” اگر پیام گفته شده را مشاهده می‌کنید، همه چیز به درستی کار می‌کند و شما می‌توانید با تایپ فرمان exit از کانتینر خارج شوید. با این کار فعالیت ترمینال کانتینر خاتمه می‌باید و کانتینر متوقف می‌شود.

شما می‌توانید یک کانتینر تعاملی ایجاد کنید ، یک فرآیند در داخل آن کانتینر شروع کنید و سپس آن را از ترمینال خود جدا کنید. شما این کار را می‌توانید با نگهداشتن دکمه کنترل ctrl و بعد دکمه P و سپس Q انجام دهید. از این کلید تنها زمانی می‌توانید استفاده کنید که از گزینه tty-- استفاده کرده باشید.

تکمیل سفارش مشتری
تکمیل سفارش مشتری

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

docker run -it  --name agent  --link web:insideweb   --link mailer:insidemailer dockerinaction/ch2_agent

پس از اجرای فرمان بالا کانتینر ناظر اجرا شده و پس از بررسی هرباره در هر ثانیه پیام زیر را چاپ می‌کند:

System up.

حالا که دیدید کانتینر ناظر چگونه کار می‌کند، کانتینر را از ترمینال با روش گفته شده جدا کنید، یعنی ابتدا کلید کنترل ctrl و بعد P و سپس Q. بعد از انجام این کار قطعا به ترمینال سیستم خودتان باز خواهید گشت. اگر برنامه ناظر را متوقف کنید ، روند بررسی وب سرور بطور کامل متوقف خواهد شد.

اگر چه با حالت detach و daemon قادر خواهید بود برنامه‌های کانتینری خود را روی سرورها تحت شبکه اجرا کنید ، اما استفاده تعاملی کانتینرها برای استفاده در رایانه شخصی و اجرا دستی بسیار موثر و کاربردی می‌باشد.

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

در پست بعدی به آن خواهیم پرداخت