shiva.Ganji
shiva.Ganji
خواندن ۴ دقیقه·۳ سال پیش

Docker Registry (اضافه کردن صفحه ui )


1- مقدمه

1-1- چرا docker-registry نصب کنیم؟

یک منبع (repository) برای ایمیج های داکری است.

وقتی شما به صورت local اقدام به راه اندازی docker-registry کنید، مشکل تحریم ها و لاگین در docker Hub را نخواهید داشت. همچنین ترافیک کمتری برای دریافت image ها مصرف خواهید کرد و هربار برای دانلود از اینترنت استفاده نخواهید کرد.



2- پیشنیازها نصب

2-1- نصب docker

برای نصب docker در ubuntu (توزیع Debian) دستورات زیر را بزنید

sudo apt update sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common curl -fSsL https://download.docker.com/linux/ubuntu/gpg| sudo apt-key add - sudo add-apt-repository &quotdeb [arch=amd64] https://download.docker.com/linux/ubuntu$(lsb_release -cs) stable&quot sudo apt-get update sudo apt-cache policy docker-ce sudo apt-get install -y docker-ce

2-2- نصب git

برای دریافت پروژه از پیش طراحی شده از گیت استفاده می کنیم.

برای نصب git در ubuntu (توزیع Debian) دستور زیر را بزنید

sudo apt-get install -y git


*حالا شما باید از بین شماره های 3 و 4، یکی از روش ها را برای نصب انتخاب کنید*



3- مراحل نصب بصورت Containerهای مجزا

3-1- نصب Authentication Container

3-1-1- یک دایرکتوری برای ذخیره پسوردها بسازید

sudo mkdir auth


3-1-2- دستور زیر را برای ساخت کانتینر بزنید (می توانید Username و Password مورد نظر را جایگزین کنید)

docker run --entrypoint htpasswd httpd:2 -Bbn testuser testpassword > auth/htpasswd


3-2- نصب Registry Container

3-2-1- برای ساخت کانتینر registry کامند زیر را بزنید (environment variable ها به دلیل احراز هویت است)

docker run -d -p 5000:5000 --name registry --restart=always --network registry-net --restart always -v &quot$(pwd)&quot/auth:/auth -e &quotREGISTRY_AUTH=htpasswd&quot -e &quotREGISTRY_AUTH_HTPASSWD_REALM=Registry Realm&quot -e &quotREGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd&quot -v /images/registry:/var/lib/registry registry:2

*-p برای اتصال پورت هاست و کانتینر

*-v برای mount یک دایرکتوری به کانتینر

*- e برای شناساندن متغییرهای محیطی به کانتینر


3-2-2- مراحل دریافت image از docker-hub و ارسال به Docker-registry خودتان

sudo docker pull hello-world ##pull image frome Docker-Hub sudo docker tag hello-world localhost:5000/myhello ##tag image sudo docker push localhost:5000/myhello ##push image to docker-registry


3-2-3- برای ارتباط با داکر رجیستری (ارتباط سیستم ها با Docker-registry)

- برای اینکه سیستم های دیگر بتوانند از Docker-registry شما استفاده کنند، باید یک فایل .json در سمت سرور docker-registry، ایجاد شود

در مسیر زیر

/etc/docker/daemon.json ##for Docker-registry server

محتویات زیر را درون فایل ایجاد شده کپی کنید

{ &quotallow-nondistributable-artifacts&quot: [&quotlocalhost:5000&quot] }


- همچنین باید در سیستم هایی که میخواهند image دریافت کنند نیز یک فایل .json ایجاد شود

- متناسب با سیستم عامل در یکی از مسیر های زیر

C:\ProgramData\docker\config\daem.json ##for windows
/etc/docker/daemon.json ##for linux


- محتویات زیر را درون فایل ایجاد شده کپی کنید (IP سرور Docker-registry را جایگزین کنید)

{ &quotallow-nondistributable-artifacts&quot: [&quot$ip-address:5000&quot] }


3-3- نصب UI Container

برای ساخت کانتینر و همچنین استفاده از username و password های ساخته، دستور زیر را وارد کنید

docker run -d --name registry_ui --network registry-net -p 8081:80 --restart always -e "REGISTRY_TITLE=Private Docker Registry" -e "NGINX_PROXY_PASS_URL=http://registry-srv:5000" -e "DELETE_IMAGES=true" -e "SINGLE_REGISTRY=true" joxit/docker-registry-ui:latest

3-4- میتوانید با مراجعه به آدرس زیر نتیجه کار خود را ببینید:

http://[ip-address]:8081



4- مراحل نصب بصورت Docker-compose

4-1- برای نصب از این روش ابتدا docker-compose را نصب کنید

sudo curl -L &quothttps://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)&quot -o /usr/local/bin/docker-compose


4-2- برای ایجاد permision، دستور زیر را بزنید

sudo chmod +x /usr/local/bin/docker-compose


4-3- برای authentication Container

  • یک دایرکتوری بسازید
sudo mkdir auth
  • دستور زیر را وارد کنید (username و password مورد نظر خود را جایگزین کنید)
docker run --entrypoint htpasswd httpd:2 -Bbn testuser testpassword > auth/htpasswd


4-4- یک فایل .yml ایجاد کنید و برای ویرایش واردش شوید

sudo touch docker-compose.yml
sudo nano docker-compose.yml


4-5- محتویات زیر را داخل فایل ایجاد شده کپی کنید

version: '2' services: registry-srv: image: registry:2 restart: always ports: - 5000:5000 volumes: - /data/registry:/var/lib/registry - /data/auth:/auth - ./config.yml:/etc/docker/registry/config.yml:ro environment: - &quotREGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd&quot - &quotREGISTRY_AUTH=htpasswd&quot - &quotREGISTRY_AUTH_HTPASSWD_REALM=Registry Realm&quot networks: - registry-net container_name: registry-srv registry-ui: image: joxit/docker-registry-ui:latest restart: always ports: - 8081:80 environment: - REGISTRY_TITLE=Private Docker Registry - NGINX_PROXY_PASS_URL=http://registry-srv:5000 - DELETE_IMAGES=true - SINGLE_REGISTRY=true networks: - registry-net container_name: registry-ui networks: registry-ui-net: volumes: storage: driver: local


4-5- اجرای Docker-compose

sudo docker-compose up -d

4-6- میتوانید با مراجعه به آدرس زیر نتیجه کار خود را ببینید:

http://[ip-address]:8081



5- منابع:

https://hub.docker.com/
https://docs.docker.com/engine/install/ubuntu/
https://github.com/Joxit/docker-registry-ui/blob/1c88ad57f8339f3b9ad27dc46aef6e4769f1de7c/examples/issue-88/docker-compose.yml
devopsdocker
کارشناس DevOps و علاقمند به یادگیری
شاید از این پست‌ها خوشتان بیاید