در این پست قرار است با نحوه‌کارکرد مخازن داکر بیشتر آشنا شویم. توضیح کوتاه در مورد نحوه تعامل با «مخازن ابری داکر» آشنا می‌شویم. سپس در یک نمونه عملی، یک برنامه تحت وب در زبان NET CORE. را بر روی مخازن ابر یوتاب قرار داده و در نهایت آن را بر روی ابر یوتاب اجرا می‌کنیم.

مخازن image داکر

برای اینکه بتوانید image مورد نظر خودتان را روی یک سرویس‌دهنده ابری داکر (CaaS) اجرا کنید، می‌بایست در ابتدا image خود را در یک «مخزن ابری داکر» بارگذاری کنید. مهمترین مزیت مخازن، امکان نگهداری ورژن‌های مختلف و تنظیمات مختلف یک نرم‌افزار است. شما می‌توانید در شرایطی که در هنگام سرویس‌دهی به یک باگ برخوردید، سریع به ورژن پایدار قبلی از برنامه خودتان برگردید. یا برای مشتریان مختلف، تنظیمات متفاوت را در image‌های مختلف قرار دهیم و بر حسب نیاز، کانتینر مورد نیاز را برای آن‌ها بسازیم.

اگر آشنایی کافی با داکر ندارید، می‌توانید اول این پست را مطالعه کنید: حالا این داکر چی هست؟

آماده‌سازی انتقال به مخازن

من فرض را بر این گرفتم که شما بر روی دستگاه خود داکر را نصب کردید و یک image بر روی آن با داکر فایل ساختید. البته شما هم برای تست اولیه می‌توانید مثل من از ‌imageهای آماده استفاده کنید.

برای این مثال از یک image حاوی اپلیکیشن تحت وب که در زبان NET CORE. توسط ماکروسافت توسعه داده شده، استفاده می‌کنم. همچنین این یک مثال کاربردی می‌تواند باشد که که برنامه‌های توسعه داده‌ شده با NET CORE. در لینوکس و ابر یوتاب، به سادگی قابل اجرا هستند.

در ابتدا image مورد نظر را با دستور docker pull بر روی دستگاه خود دانلود می‌کنیم. (اگر image خودتان را با داکر فایل می‌سازید، نیاز به دانلود چیزی نیست)

1
2
# docker pull NAME[:TAG]
> docker pull mcr.microsoft.com/dotnet/core/samples:aspnetapp

اگر مشکل تـحـریـم داکر را دارید، می‌توانید سرویس رایگان mirror ابر یوتاب استفاده کنید: ابر یوتاب و دور زدن تحریم داکر

با دستور docker login وارد حساب کاربری خود در مخزن مورد نظر می‌شویم. در اینجا از مخزن ابر یوتاب با آدرس hub.YOTTAb.io به همراه مشخصات حساب کاربری وارد می‌شویم:

1
2
3
4
# docker login  [SERVER]
> docker login  hub.yottab.io \
      --username=<USER_ID> \
      --password=*********

برای ارسال یک image از مبدأ یا همان کامپیوتر شخصی خودمان به مقصد یا همان «مخزن ابری»، در ابتدا می‌بایست نام image مورد نظر را در مقصد تعریف کنیم. این کار با دستور docker tag انجام می‌شود:

1
2
3
4
# docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
> docker tag \
         mcr.microsoft.com/dotnet/core/samples:aspnetapp \
         hub.yottab.io/test/dotnetcore:aspnetapp

فرمت نام‌گذاری image مورد نظر در مقصد یا TARGET_IMAGE به صورت زیر می‌باشد؛ در واقع بعد از آدرس مخزن، شناسه کاربری و سپس اسم و برچسب مورد نظر برای ذخیره‌ در مخزن ذکر می‌شود.

 hub.yottab.io/< USER_ID >/<IMAGE_Name>:<TAG>

ارسال image به مخزن

بعد از مشخص شدن نام image در مقصد یا مخزن ابری، آن را ارسال می‌کنیم. برای ارسال از دستور docker push به همراه نام image در مقصد، فرایند ارسال را انجام می‌دهیم. (مطمئن باشید قبل از ارسال، با حساب کاربری معتبر وارد سرویس مخزن شدید)

1
2
3
# docker push TARGET_IMAGE[:TAG]
> docker push \
         hub.yottab.io/test/dotnetcore:aspnetapp

اجرای image بر روی ابر یوتاب

هر ارائه دهنده «مخزن ابری داکر» و سرویس «اجرا کننده داکر» به شما امکان لیست شدن و اجرای imageهای موجود در مخزن خصوصی خودتان را می‌دهد. ابر یوتاب از طریق خط فرمان و رابط کاربری وب امکان لیست کردن ‌‌imageها و اجرای آن‌ها را دارد، به طور مثال شما می‌توانید با دستور yb image لیست imageهای موجود در مخزن خصوصی خودتان را ببینید:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
> yb image
# Count: 4	
# - Name: hub.yottab.io/test/dotnetcore
#   Created: 2019-05-03T16:08:04+04:30 , Updated: 2019-05-03T16:08:04+04:30
# - Name: hub.yottab.io/test/hello-worl
#   Created: 2019-05-03T16:08:08+04:30 , Updated: 2019-05-03T16:08:08+04:30
# - Name: hub.yottab.io/test/phpmyadmin
#   Created: 2019-05-03T16:08:16+04:30 , Updated: 2019-05-03T16:08:16+04:30
# - Name: hub.yottab.io/test/nginx
#   Created: 2019-05-03T16:08:32+04:30 , Updated: 2019-05-03T16:08:32+04:30
 

برای اجرای هر image بر روی ابر یوتاب، می‌توانید آن را به صورت یک application با دستور yb create application اجرا کنید و خروجی آن را بر روی مرورگر خود مشاهده کنید:

1
2
3
4
5
# yb create  [COMMAND]
> yb create application \
     --image="hub.yottab.io/test/dotnetcore:aspnetapp" \
     --name="myaspnetapp" \
     --port=80

application در آدرس اینترنتی https://myaspnetapp.test.app.yottab.io از طریق مرورگر در دسترس می‌باشد: yottab cloud - dotnetcore - aspnetapp

آدرس اینترنتی application به شکل https://myaspnetapp.test.app.yottab.io می‌باشد، چون در مثال بالا این application را با حساب کاربری test اجرا کردم و اسم آن را myaspnetapp گذاشتم، این موارد به ابتدای دامنه app.yottab.io اضافه می‌شود و به سادگی می‌توان این application را در دسترس عموم قرار داد.