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-ce2-2- نصب gitبرای دریافت پروژه از پیش طراحی شده از گیت استفاده می کنیم.برای نصب git در ubuntu (توزیع Debian) دستور زیر را بزنیدsudo apt-get install -y git*حالا شما باید از بین شماره های 3 و 4، یکی از روش ها را برای نصب انتخاب کنید*3- مراحل نصب بصورت Containerهای مجزا3-1- نصب Authentication Container3-1-1- یک دایرکتوری برای ذخیره پسوردها بسازیدsudo mkdir auth3-1-2- دستور زیر را برای ساخت کانتینر بزنید (می توانید Username و Password مورد نظر را جایگزین کنید)docker run --entrypoint htpasswd httpd:2 -Bbn testuser testpassword > auth/htpasswd3-2- نصب Registry Container3-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-registry3-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:latest3-4- میتوانید با مراجعه به آدرس زیر نتیجه کار خود را ببینید: http://[ip-address]:80814- مراحل نصب بصورت Docker-compose4-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-compose4-2- برای ایجاد permision، دستور زیر را بزنیدsudo chmod +x /usr/local/bin/docker-compose4-3- برای authentication Containerیک دایرکتوری بسازیدsudo mkdir authدستور زیر را وارد کنید (username و password مورد نظر خود را جایگزین کنید)docker run --entrypoint htpasswd httpd:2 -Bbn testuser testpassword > auth/htpasswd4-4- یک فایل .yml ایجاد کنید و برای ویرایش واردش شویدsudo touch docker-compose.ymlsudo nano docker-compose.yml4-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: local4-5- اجرای Docker-compose sudo docker-compose up -d4-6- میتوانید با مراجعه به آدرس زیر نتیجه کار خود را ببینید: http://[ip-address]:80815- منابع: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