اگر از افرادی هستید که در جریان توسعه و استقرار نرم افزارهایتان از داکر استفاده میکنید مطمئنا برای یک بار هم که شده واژه داکر هاب به گوشتان خورده است.
داکر هاب را میتوان یک الگوی کلی مانند گیتهاب در نظر بگیرید با این تفاوت که در داکر هاب شما بهجای به اشتراک گذاشتن یا استفاده از کدهای متن باز، ایمیجهای داکری استاندارد و یا سازمانی را در اختیار خواهید داشت.
فکرش را بکنید! بهجای اینکه همواره بهدنبال ایمیجهای استاندارد از نرم افزارها و سرویسهای مختلف باشید بهسادگی میتوانید تمام این موارد را از یک مخزن دریافت کنید.
توجه کنید که من از واژه مخزن استفاده کردم چرا که همانطور پیشتر گفته شد، داکر هاب نیز بر اساس ساختار مفهومی Repository گیتهاب ایجاد شده است.
در این مطلب قصد داریم شما را با چیستی داکرهاب، چگونگی کار کردن آن، مزایا، ویژگیها و… آشنا کنیم.
داکر هاب چیست؟
داکر هاب یک سرویس استاندارد است که از طرف خود Docker ارائه شده است. این سرویس Cloud-Base بوده و کاربران میتوانند ایمیج کانتینرهای داکر خود را در آن Push کنند.
همچنین هر زمان که بخواهند میتوانند براساس نیازشان از منابع متفاوت ایمیج کانتینرهای مختلف را Pull کنند. در نتیجه میتوان بهعنوان یک Docker Registry نیز از آن نام برد.
شما در این سرویس میتوانید ایمیج کانتینرهای خود را به دو حالت عمومی و خصوصی Push کنید. در نتیجه اگر داکر ایمیجی را برای یک تیم کاری ایجاد کردهاید و قصد دارید که تنها آنها به این داکر ایمیج دسترسی داشته باشند میتوانید بهصورت خصوصی آن را منتشر کنید.
این موضوع باعث میشود که Docker Hub به یک ابزار توسعه بهصورت تیمی نیز تبدیل شود و در تیمهای توسعه بین افراد مختلف استفاده شود. بنابراین دیگر نیازی نیست از روشهای غیر استاندارد برای ارسال و دریافت داکر ایمیجها استفاده کنید بلکه با داشتن یک فضای خصوصی که میتوانید آن را با دوستان و هم تیمیهای خود به اشتراک بگذارید، همه فرایندها را در نهایت حرفهای بودن پیش ببرید.
داکر هاب یک ابزار متن باز و البته رایگان است و میتواند روی هر سیستم عاملی نصب شود. برای اینکه به زبان نسبتا سادهتری سوال داکرهاب (Docker Hub) چیست را جواب بدهیم میتوانیم بگوییم که داکر هاب، فروشگاه (البته رایگان) داکر ایمیجهای مختلف است. در نتیجه همه داکر ایمیجهایی که شما برای توسعه نرم افزارتان به آن نیاز دارید را میتوانید در یک مکان پیدا کنید.
به عنوان مثال یک توسعه دهنده میتواند داکر ایمیج رسمی MongoDB را از داکر هاب دریافت کرده و با آن در فضای خصوصی خود (ریپازیتوری) کارهای متفاوتی انجام دهد. همچنین میتواند بهصورت سفارشیسازی شده فرایند Build اپلیکیشن خود را ایجاد کند، Work-Group جدید تعیین کند و وبهوکهای مختلفی را توسعه بدهد.
البته به عنوان یک نکته مهم این را بگوییم که برای کار کردن با داکر هاب شما نیاز دارید که با داکر آشنایی داشته و بتوانید بهخوبی با داکر کار بکنید. در غیر اینصورت استفاده کردن از داکر هاب بیمعنی بوده و کلیت چیزی که قرار است ارائه شود را نیز نمیتوانید فهم کنید.
داکرهاب چگونه کار میکند؟
داکر هاب از یک سیستم مبتنی بر مخزن استفاده میکند و در واقع یک Docker Registry مبتنی بر کلود است. در نتیجه پس از ثبتنام در داکر هاب شما قابلیت ایجاد مخازن جدید و قرار دادن داکر ایمیجهای مورد نظرتان در آن را دارید.
هر مخزن قابلیت به نمایش داده شدن به شکل خصوصی و عمومی را دارد که در حین ایجاد مخزن میتوانید یکی از این گزینهها را انتخاب کنید.بعد از نصب و کانفیگ کردن داکر هاب شما باید با دو مفهوم Pull و Push کردن کار کنید که در ادامه در ارتباط با این دو مورد توضیحاتی خواهیم داد.
اگر با گیت هاب کار کرده باشید مطمئنا با این دو مفهوم آشنایی دارید. به زبان ساده Pull کردن به معنای دریافت یک پروژه و قرارگیری آن روی محیط محلی یا لوکال خودتان است. از طرفی Push کردن به معنی قرار دادن پروژه توسعه یافته یا در حال توسعه شما روی یکی از مخازن مربوط به داکر هاب است.
بعد از نصب داکر هاب شما از طریق رابط کاربری متنی میتوانید دستور زیر را وارد کنید تا اولین پروژه خود را به صورت نمونه Pull کنید:
docker pull hello-world
بعد از این دستور شما خروجی شبیه به زیر را خواهید دید:
docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:7d246653d0511db2a6b2e0436cfd0e52ac8c066000264b3ce63331ac66dca625
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
همانطور که در خروجی بالا مشاهده میکنید، مشخصات مربوط به داکر ایمیج دریافت شده و پروسه مربوط به آن نمایش داده میشود. حال برای اجرا کردن این داکر ایمیج به صورت لوکال یا محلی میتوانید دستور docker run hello-world
را اجرا کنید.
موضوع دیگری که باید بدانید چگونگی Push کردن داکر ایمیج مورد نظرتان است. در این مرحله ابتدا باید بهخوبی با داکر و چگونگی ساختن داکر ایمیج آشنایی داشته باشید که پیشفرض این مقاله این است که شما بهخوبی با این تکنولوژی آشنایی دارید.
برای Push کردن ابتدا شما نیاز دارید تا برای داکر ایمیج خود تگ ایجاد کنید. برای مثال در صورتی که یک داکر ایمیج در اختیار دارید میتوانید با اضافه کردن نام کاربری و نام مخزن مورد نظرتان در سیستم داکر هاب اولین قدمها برای Push کردن را بردارید. برای این کار از دستور زیر استفاده کنید:
docker tag ngnix:latest username/repo-name
در مثال بالا ngnix داکر ایمیج ما و latest تگ ما خواهد بود. بعد از وارد کردن دستور بالا حال اگر دستور docker images را وارد کنید میتوانید ngnix به همراه نام تگ و مشخصاتی دیگر را مشاهده کنید. در نهایت برای push کردن پروژه مورد نظرتان میتوانید دستور زیر را وارد کنید:
docker push username/repo-name:tagname
به صورت کلی استفاده از داکر هاب ساده است و برای کسی که با داکر پیشتر کار کردهاند و با کلیت سیستم و چگونگی داکر آشنایی دارند بهسادگی میتوانند وارد پروسه کاری آن شوند.
چرا از داکرهاب استفاده میکنیم؟
حال سوالی که پیش میآید این است که داکر هاب دقیقا به چه دردی میخورد و چه نیازی را حل میکند. برای این موضوع باید به چند نکته کلی اشاره کنیم و پس از آن در ادامه مطلب به ویژگیها و مزایای آن خواهیم پرداخت.
داکر هاب یک سیستم متمرکز برای ذخیره سازی داکر ایمیجهاست. از این جهت توسعهدهندگان و متخصصین DevOps میتوانند بهسادگی از یک مکان مشخص، نیازمندیهای پروژهشان را دریافت کنند.
همچنین تیمهایی که قصد همکاری روی یک داکر ایمیج را دارند میتوانند از فضای ریپازیتوری این سرویس بهخوبی استفاده کنند.
افرادی که قصد ایجاد داکر ایمیج جدید را دارند و میخواهند آن را با دیگران نیز به اشتراک بگذارند نیز میتوانند از داکر هاب استفاده کنند. همانطور که گفته شد در ادامه نیز از مزایا و استفادههای بیشتر Docker Hub صحبت خواهیم کرد.
ویژگیهای داکر هاب
از آنجایی که داکر هاب یک ایده جدید در دنیای داکر ایمیجها بوده، در نتیجه ویژگیهای منحصر به فردی را ارائه کرده که در ادامه از آنها صحبت میکنیم:
پیادهسازی مفهوم مخازن
از آنجایی که در معماری داکر هاب از مفهوم مخزن یا Repository استفاده شده در نتیجه شما امکان Push/Pull کردن داکر ایمیجهای مختلف را دارید.
فراهم کردن امکان کار تیمی
وجود مخازن خصوصی این قابلیت را به توسعه دهندگان و تیمهای برنامهنویسی میدهد تا بتوانند به صورت کار تیمی روی یک اپلیکیشن کار بکنند و داکر ایمیجهای خود را در ساختار یک سازمان یا تیم کاری به اشتراک بگذارند.
داکر ایمیجهای استاندارد
وجود داکر ایمیجهای استاندارد و البته رسمی از نرم افزارها و سرویسهای مختلف این امکان را به شما میدهد که در نهایت سرعت و البته امنیت به داکر ایمیجهای اصلی که توسط Docker تایید شدهاند دسترسی داشته باشید.
قابلیتهای Build کردن
در داکر هاب مکانیزمهایی در نظر گرفته شده تا شما بتوانید بهصورت خودکار کانتینر ایمیجهایی را از طریق GitHub یا Bitbucket ایجاد کرده و آنها را به داکر هاب Push کنید.
وبهوک
با استفاده از وب هوکها میتوانید بعد از یک Push موفق کارهای مشخصی را انجام داده و همچنین داکر هاب را به سرویسهای دیگری متصل کنید.
امنیت
داکر هاب بهصورت خودکار بررسیهای امنیتی را روی داکر ایمیجها انجام داده و در صورت وجود مشکل امنیتی آن را به ما اطلاع میدهد.
مزایای استفاده از داکر هاب
در کنار ویژگیهایی که داکر هاب دارد، یکسری مزایا نیز وجود دارد که باعث میشود بیشتر از هر زمانی برای توسعه دهندگان و متخصصین DevOps مناسب و مفید باشد. در ادامه به چند مورد از اصلیترین مزایای داکر هاب خواهیم پرداخت:
- داکر ایمیجهایی که در داکر هاب قرار میگیرند از این حیث که استاندارد هستند به صورت سبک و کم حجم عرضه میشوند. در نتیجه از عدم وجود اضافات میتوانید مطمئن شوید.
- از آنجایی که داکر ایمیجها بهصورت رسمی عرضه میشوند شما امکان آن را دارید از امنترین ایمیجها استفاده کنید. همچنین وجود فضای شخصی به شما این امکان را میدهد تا بتوانید با حفظ دادههای خود، داکر ایمیجها را بین افرادی که میشناسید به اشتراک بگذارید
- مکان جداسازی فضای مدیریت کانتینرها با سرویسهای دیپلویمنت یکی دیگر از مزیتهای اصلی داکر هاب است. با استفاده از داکر هاب میتوانید فرایند انجام هر کدام از این موارد را به صورت جداگانه پیش بگیرید.
- وجود قابلیت Auto Test در داکر هاب این امکان را میدهد تا در صورتی که در فرایند Push کردن مشکلی وجود داشته باشد، همه چیز متوقف شود. بنابراین اگر شما از وجود یک مشکل خاص اطلاع ندارید داکر هاب میتواند آن را تشخیص دهد
چالشهای استفاده از داکر هاب
یکی از اصلیترین مشکلات استفاده از داکر هاب مربوط به کاربران ایرانی میشود. از آنجایی که داکر هاب در ایران تحریم است و توسعه دهندگان نمیتوانند به صورت مستقیم از آن استفاده کنند، دسترسی داشتن به آن بسیار سخت خواهد بود.
جدای از مشکل اساسی که برای کاربران ایرانی وجود دارد چند مشکل دیگر نیز توسط کاربران در StackOverFlow ذکر شده که در ادامه به آنها خواهیم پرداخت:
- نبود یک سیستم قدرتمند برای بررسی میزان استفاده از Registry به عنوان یکی از مشکلات اساسی بیان شده است
- نبود پشتیبانی از LDAP، SAML و OAuth.
- کارایی یا پرفورمنس Registry میتواند ناسازگار و متنقاض باشد.
- وجود ویژگیهای پیکربندی محدود – برای مثال شما در داکر هاب با محدودیت در تعیین دسترسی روبهرو هستید. شما امکان تعیین دسترسی براساس داکر ایمیجها را نخواهید داشت مگر اینکه هر داکر ایمیج را در یک مخزن یا ریپازیتوری جداگانه قرار دهید.
جمعبندی
داکر هاب براساس یک نیازمندی بسیار حیاتی ایجاد شده و آن وجود یک مکان متمرکز برای مدیریت و نگهداری از داکر ایمیجهای مختلف است.
البته همانطور که در مطلب اشاره شد مزایا و اهداف بسیار بیشتری را دنبال میکند. برای بسیاری از توسعه دهندگان و متخصصین DevOps داکر هاب به عنوان یکی از ارزشمندترین سیستمهای مدیریت مخزن برای داکر ایمیج در نظر گرفته شده و از این جهت میتوان نتیجه گرفت که برای اپلیکیشنهای مبتنی بر داکر میتواند بسیار مفید باشد.
در این مطلب ما به پرسش داکرهاب (Docker Hub) چیست پاسخ دادیم و همچنین چگونه کار کردن و چرایی استفاده از آن، مزایا و معایب و نکات بسیار دیگری را بررسی کردیم.
اگر بخشی از این موضوعات از قلم افتادهاند خوشحال میشویم که آن را از طریق نظرات با ما به اشتراک بگذارید.