도커에서 사설 이미지 레지스트리를 운영하려면 레지스트리 이미지를 사용해야 합니다. 먼저 레지스트리 이미지를 가져와서 컨테이너를 생성합니다.
- 레지스트리 이미지 가져오기 및 컨테이너 생성
# 레지스트리 이미지 가져오기
docker pull registry
# 컨테이너 생성
docker run -d -v /var/lib/my_registry:/var/lib/registry -p 5000:5000 --restart=always --name=my_registry registry
2.daemon.json 구성 수정
daemon.json 파일에 아래 내용을 추가합니다.
{
"insecure-registries": ["localhost:5000"]
}
참고: 리눅스 환경에서는daemon.json 파일이 /etc/docker/daemon.json에 위치합니다. Docker Desktop 사용자는 설정 창을 통해 직접 수정할 수 있습니다.
# 구성 확인
docker info
- 레지스트리 인터페이스 사용 방법
이미지를 업로드하려면 다음 명령을 사용합니다.
3.1 API 사용 가능 여부 확인
curl -I -X GET http://localhost:5000/v2/
200 OK가 반환되면 정상 작동 중입니다.
3.2 등록된 모든 이미지 보기
curl -X GET http://localhost:5000/v2/_catalog
3.3 특정 이미지의 맨IFEST 가져오기
curl -I --header "Accept: application/vnd.docker.distribution.manifest.v2+json" http://localhost:5000/v2/<이미지명>/manifests/<태그>
예를 들어:
curl -I --header "Accept:application/vnd.docker.distribution.manifest.v2+json" "http://localhost:5000/v2/java_ubuntu/manifests/latest"
3.4 이미지 태그 목록 가져오기
curl http://localhost:5000/v2/docker_redis/tags/list
3.5 이미지 삭제 방법
태그만 삭제할 수 있으며 실제 이미지 파일은 삭제되지 않습니다.
단계 1: 삭제 설정 구성
컨테이너 내 /etc/docker/registry/config.yml 파일에 아래 내용을 추가합니다.
#docker cp config.yml my_registry:/etc/docker/registry/config.yml
storage:
delete:
enabled: true
컨테이너를 재시작합니다.
단계 2: 이미지의 DIGEST 확인
curl -I --header "Accept:application/vnd.docker.distribution.manifest.v2+json" "http://localhost:5000/v2/java_ubuntu/manifests/latest"
단계 3: 이미지 삭제
curl -I -X DELETE "http://localhost:5000/v2/java_ubuntu/manifests/sha256:440ac63d5dd85c0c5a2db44fe995f4b53cc4e4c9c4ebe6456f7e89543203da73"
단계 4: 태그 상태 확인
태그가 NULL로 표시됩니다.
단계 5: 실제 파일 삭제
# 실제 파일 삭제
docker exec my_registry rm -rf /var/lib/registry/docker/registry/v2/repositories/java_ubuntu
# 쓰레기 수거
docker exec my_registry bin/registry garbage-collect /etc/docker/registry/config.yml
# 컨테이너 재시작
docker restart my_registry
3.6 쓰레기 수거 수행
docker exec my_registry bin/registry garbage-collect /etc/docker/registry/config.yml
참조자료:
- Docker Registry 상세 설명 - 원래는 무스의 블로그
- Docker 사설 레지스트리에서 이미지 삭제 방법 -知乎