Cloud/Docker

[docker] docker registry-image 서버 구축

jinkwon.kim 2023. 8. 10. 12:47
728x90
반응형

개요

docker image는 저장 관리 해주는 사설 private registgry 구축 해보겠습니다. 

구성 

registry : docker image를 보관하는 용도

joxit/docker-registry-ui : registry를 web에서 볼수 있게 해주는 UI

실행

아래 site에서 "Recommended Docker Registry Usage" 부분을 찾아서 image를 push 가능하게 설명하면 하면 끝입니다.

https://hub.docker.com/r/joxit/docker-registry-ui 

 

Docker

 

hub.docker.com

docker-compose.yaml 수정 버전

docker registery에 push 하기위해서 registry-server에 docker registry에서 사용하는 port를 portforwarding 해줍니다.

추가 설정

    ports:       
      - 5000:5000

최종 YAML

version: '3.8'

services:
  registry-ui:
    image: joxit/docker-registry-ui:main
    restart: always
    ports:
      - 80:80
    environment:
      - SINGLE_REGISTRY=true
      - REGISTRY_TITLE=Docker Registry UI
      - DELETE_IMAGES=true
      - SHOW_CONTENT_DIGEST=true
      - NGINX_PROXY_PASS_URL=http://registry-server:5000
      - SHOW_CATALOG_NB_TAGS=true
      - CATALOG_MIN_BRANCHES=1
      - CATALOG_MAX_BRANCHES=1
      - TAGLIST_PAGE_SIZE=100
      - REGISTRY_SECURED=false
      - CATALOG_ELEMENTS_LIMIT=1000
    container_name: registry-ui

  registry-server:
    image: registry:2.8.2
    restart: always
    ports:       
      - 5000:5000
    environment:
      REGISTRY_HTTP_HEADERS_Access-Control-Origin: '[http://registry.example.com]'
      REGISTRY_HTTP_HEADERS_Access-Control-Allow-Methods: '[HEAD,GET,OPTIONS,DELETE]'
      REGISTRY_HTTP_HEADERS_Access-Control-Credentials: '[true]'
      REGISTRY_HTTP_HEADERS_Access-Control-Allow-Headers: '[Authorization,Accept,Cache-Control]'
      REGISTRY_HTTP_HEADERS_Access-Control-Expose-Headers: '[Docker-Content-Digest]'
      REGISTRY_STORAGE_DELETE_ENABLED: 'true'
    volumes:
      - ./registry/data:/var/lib/registry
    container_name: registry-server

docker-compose 실행

아래 명령으로 실행합니다. 

docker-compose up -d 

접속

loacalhost:80 으로 접속하면 아래와 같이 화면이 보입니다. 

IMAGE PUSH

Image 생성

image를 올리기 위해서는 localhost:5000/ 앞에 붙여서 image 이름을 다시 변경후 push 하면 올라갑니다.

docker tag 원본이미지(:tag) {리모트주소:포트/}{프로젝트)/이미지(:tag)

Ex) docker tag busybox:latest localhost:5000/busybox:latest

Image push

docker push localhost:5000/busybox:latest

Registry 등록된 Image 확인

Registry 등록된 Image Pull

docker pull localhost:5000/busybox

향후 서비스를 위해 해야 할것

IP에 대한 DNS 처리하면 해주면 될 듯 싶습니다.

정리

docker image관리하는 registry는 UI를 제공하지 않기 때문에 joxit/docker-registry-ui 같은 tool을 추가록 설치해서 써야 한다.

728x90
반응형