رجیستری (Registry) و مخزن (Repository) داکر چیست؟

در این نوشته قصد داریم به توضیح مفاهیم رجیستری (Registry) و مخزن (Repository) داکر بپردازیم و همچنین تعدادی از سرویسهای آنلاین ارایه شده برای انتشار تصاویر داکر را معرفی کنیم.

جهت اجرای دستورات گفته شده در این مقاله نیاز دارید قبلا داکر را نصب کرده باشید. روش نصب داکر روی ویندوز یا لینوکس CentOS را میتوانید در همین سایت مطالعه کنید. همچنین برای یادگیری بهتر این مطلب ممکن است آشنایی با مفاهیم پایه ای داکر به شما کمک کند.

رجیستری (Registry)

رجیستری سرویسی برای ذخیره و نگهداری تصاویر (image) داکر است که بسته به پیاده سازی آن ممکن است به صورت عمومی برای تمام کاربران اینترنت یا به صورت خصوصی تنها در شبکه داخلی یک شرکت قابل دسترسی باشد. هر رجیستری همیشه دارای یک آدرس یکتا مانند docker.io یا hub.elastico.io است و علاوه بر آن ممکن است از طریق یک واسط کاربری آنلاین مشابه ‍داکر هاب یا الستیکو هاب قابل مدیریت باشد. این واسطهای کاربری در واقع امکان مشاهده تصاویر منتشر شده در یک رجیستری و دسترسی به اطلاعات بیشتر درباره هر تصویر را فراهم میکنند.

قسمتی از سرویس رجیستری داکر به صورت یک نرم افزار متن باز موجود است که شرکتها میتوانند آن را برای مصارف داخلی خود اجرا کنند. امکان دیگری نیز وجود دارد که خریداری اشتراک این سرویس از شرکتهای ارایه دهنده آن است. مثلا Docker Hub و AWS Container Registry نمونه های معروفی از این سرویس هستند که داکر هاب علاوه بر سرویس خصوصی، اجازه انتشار عمومی تصاویر را به صورت مجانی میدهد. سرویس الستیکو هاب نیز امکانی مشابه داکر هاب را برای کاربران فراهم میکند. رجیستریهای حرفه ای تر علاوه بر نگهداری تصاویر، ویژگیهایی مانند بررسی امنیت، کنترل دسترسیها و ساخت خودکار تصاویر را هم ارایه میکنند.

مخزن (Repository)

هر تصویر (image) داکر علاوه بر یک شناسه عددی، بوسیله یک برچسب (tag) نیز قابل شناسایی است. برچسبها در واقع مهمترین راه برای کار با تصاویر داکر هستند و در عمل میتوان به هر تعداد که مورد نیاز است به یک تصویر برچسب اختصاص داد. با اجرای دستور docker images میتوانید برچسبهای تصاویری را که در حال حاضر روی سیستم شما وجود دارند مشاهده کنید و با کمک دستور docker tag به هر کدام از آنها یک برچسب جدید اختصاص دهید.

با کمک برچسب مناسب میتوان یک تصویر را به هر رجیستری دلخواه منتقل کرد و در نهایت تمام تصاویری که در رجیستری منتشر شده اند از طریق آدرسهایی با ساختار مشخص در دسترس همه کاربران قرار میگیرند. برای ساده تر کردن مدیریت این تصاویر امکانی فراهم شده است تا مجموعه ای از تصاویر با استفاده از آدرسهایی شبیه به هم تحت عنوان یک مخزن (repository) منتشر شوند. در این حالت بخش ابتدایی آدرسهای این تصاویر که نام مخزن (repository) را مشخص میکند، کاملا یکسان است. به عنوان مثال آدرسهای hub.elastico.io/library/nginx:stable و hub.elastico.io/library/nginx:latest دو برچسب به نامهای stable و latest‍ از یک مخزن یکسان به نام lib/nginx را مشخص میکنند. در این حالت این مخزن در رجیستری الستیکو به آدرس hub.elastico.io قرار داده شده است. در این مثال هر یک از این برچسبها معادل یک تصویر جداگانه است که نسخه متفاوتی از نرم افزار Nginx را در بر دارد.

انتشار تصاویر در رجیستری

تصاویر داکر را میتوانید با استفاده از دستور docker pull از رجیستری دریافت و با دستور docker push به آن منتقل کنید. این دستورات یک پارامتر ورودی میگیرند که ساختار آن به شکل repository:tag یا registry/repository:tag است. در حالت اول که آدرس registry مشخص نشده است، داکر به صورت پیش فرض از کتابخانه موجود در رجیستری داکر هاب (Docker Hub) استفاده میکند.

اگر به عنوان مثال با استفاده از یک Dockerfile و دستور docker build، مشابه آنچه در مقاله [روش نوشتن داکرفایل]() گفته شده است، یک تصویر داکر با نام my-first-image بسازید، میتوانید با اجرای دستورات زیر آن را روی الستیکو هاب منتشر کنید:

    docker tag my-first-image hub.elastico.io/username/my-first-image:test
    docker login hub.elastico.io
    docker push hub.elastico.io/username/my-first-image:test

پس از اجرای این دستورات هر کاربر داکر حتی بدون نیاز به login میتواند این تصویر را با اجرای دستور docker pull hub.elastico.io/username/my-first-image:test از رجیستری الستیکو دانلود کرده و سپس با دستور docker run اجرا کند. اما به خاطر داشته باشید که همیشه لازم است قبل از انتشار تصاویر، با اجرای docker login registry-url دسترسی لازم به رجیستری مورد نظرتان را کسب کنید. همانطور که بالاتر گفته شد برای سرویس الستیکو هاب این دستور به صورت docker login hub.elastico.io خواهد بود.

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