در بسیاری از شرکتها و سازمان ها ممکن است، سیاست های امنیتی باعث عدم استفاده از داکرهاب به عنوان یک ریپازیتوری عمومی شود. حتی ممکن است موضوع تحریم ایران از دسترسی به سایت های ارائه کننده ایمیج های استاندارد داکر، سبب شود تا به فکر ایجاد و راه اندازی یک ریپازیتوری شخصی و محلی در سازمان خود باشید. در واقع این مقاله، به فرآیند ایجاد یک رجیستری شخصی در شبکه محلی پرداخته ام و با روشی ساده می توان یک Private Registry ایجاد کرد که جایگزین مناسبی برای Dockerhub باشد. پس از آن قادر خواهید بود ایمیج های مختلف را به/از آن push/pull کنید. 

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

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

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

docker run -d \
  -p 5000:5000 \
  --name registry \
  -v /mylocalrep:/var/lib/registry \
  --restart always \
  registry:2

در ادامه می توانید از صحت اجرای کانتینر فوق با دستور docker ps آگاه شوید. به همین سادگی رجیستری محلی شما ایجاد شده است. در ادامه کافی است ایمیج های دلخواه خود را به آن اضافه کنید.

در ابتدا لازم است یک ایمیج مانند alpine را با کمک Dockerfiler ساخته و یا یک نسخه از آنرا از داکرهاب دانلود کنید. 

docker pull alpine:latest

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

docker tag alpine:latest  localhost:5000/alpine:latest

حال وقت آن رسیده که براحتی با دستور push، ایمیج جدید را به ریپازیتوری و رجیستری محلی خود آپلود کنید.

docker push localhost:5000/alpine:latest

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

docker image rmi alpine:latest
docker image rmi localhost:5000/alpine:latest
docker pull localhost:5000/alpine:latest
docker image ls

 

 

 

 

فرستادن دیدگاه


حامیان