Cloud/docker

[docker] 도커 사설 저장소 생성 및 UI 설정 (docker registry, web ui) on rocky9

근육곰돌이 2024. 1. 22. 11:50
728x90

도커 사설 저장소 (레지스트리) 생성 및 UI

도커는 docker hub를 자유롭게 많이들 쓴다.

하지만, 기업이나 개인이 공유하고 싶지않는 경우 사설로 저장소를 만들어서 사용할 수 있다.

도커 사설 저장소 구성에는 다양한 서버 (protus, harbor...)들이 존재하는데,

이번 글에서는 가장 간단하게 할 수 있는 docker container형태로 registry를 이용해볼까 한다.

물론 레지스트리 뿐만 아니라 UI도 함께 설정 해보자. (UI없으면 관리 힘드므로..)

 

 

- 도커 설치

Rocky9에 도커를 설치하여, 실제 podman으로 사용함 (docker 명령어 완전호환으로 이질감 없음)

dnf install podman-docker
dnf install podman

 

- Docker Registry 설치 (컨테이너 형태)

Access-Control-Allow-Origin 설정을 해야 joxit/docker-registry-ui 설정이 가능하다..

# config.yml 파일 작성
echo "version: 0.1
log:
  fields:
    service: registry
storage:
  delete:
    enabled: true
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
#    Access-Control-Allow-Origin: ['http://127.0.0.1:8000']
    Access-Control-Allow-Origin: ['*']
    Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE']
    Access-Control-Allow-Headers: ['Authorization', 'Accept', 'Cache-Control']
    Access-Control-Max-Age: [1728000]
    Access-Control-Allow-Credentials: [true]
    Access-Control-Expose-Headers: ['Docker-Content-Digest']" > config.yml
# Docker 컨테이너 실행
docker run -d -p 5000:5000 --name registry --restart=always -v `pwd`/config.yml:/etc/docker/registry/config.yml registry

 

 

- 레포지터리 cli 확인 방법

# 레포지터리 
curl -X GET http://<registry_host:port>/v2/_catalog

curl -s GET http://<registry_host:port>/v2/<repo_name>/tags/list

curl -sI GET http://<registry_host:port>/v2/<repo_name>/manifests/<tag_name>

 

 

- UI 설정

도커 레지스트리를 관리하기 위한 Web UI는 Github를 보면 다양하게 있다.

그 중 2개 정도만 소개한다.

. 방법 1 :  Joxit/docker-registry-ui

https://github.com/Joxit/docker-registry-ui 를 이용한 Web UI 생성

docker run -d --name registry-ui -p 9000:80 -e REGISTRY_URL=http://<registry-ip>:5000 -e DELETE_IMAGES=true --restart=always joxit/docker-registry-ui

 

. 방법2 : docker-registry-frountend

[docker-registry-frontend](https://github.com/kwk/docker-registry-frontend)를 이용하여 UI 생성
여기 UI는 이상하게 registry에서 repo들이 삭제되지않는다.. (비추)

docker run \
  -d \
  -e ENV_DOCKER_REGISTRY_HOST=[호스트 IP] \
  -e ENV_DOCKER_REGISTRY_PORT=5000 \
  --name docker-registry-ui \
  -p 8080:80 \
  --restart=always  \ 
  konradkleine/docker-registry-frontend:v2

 

 

- 위의 설정 후 도커 push가 안될때

참고로 도커 레지스트리를 http로 하였을 경우 docker 설정에서 아래와 같이 damon에 추가해야함..!!

/etc/docker/daemon.json

{
    "insecure-registries": ["<registry-ip>:<registry-port>"]
}

 

 

 

참고 문헌

https://pkuwwt.github.io/techniques/2020-04-04-setup-a-private-docker-registry/

https://hihellloitland.tistory.com/63

https://github.com/kwk/docker-registry-frontend/issues/203

 

반응형