Docker Private Hub란?
Docker는 개발자들이 컨테이너화된 애플리케이션을 쉽게 만들고, 배포하고, 실행할 수 있도록 도와주는 플랫폼입니다. 이 플랫폼의 핵심 요소 중 하나는 Docker Hub라고 불리는 서비스로, 여기서 사용자는 Docker 이미지를 저장하고 공유할 수 있습니다. Docker Hub의 공개 저장소는 누구나 접근하여 이미지를 다운로드할 수 있으며, 사용자는 무제한으로 공개 이미지를 호스팅 할 수 있습니다. 반면에, 비공개 저장소는 선택된 사용자만이 접근할 수 있으며, Docker는 각 사용자에게 하나의 비공개 저장소를 무료로 제공합니다.
Docker Private Hub의 장점은 무엇인가요?
비공개 저장소의 가장 큰 장점은 보안입니다. 기업이나 개발자는 자신들의 소프트웨어를 비공개로 유지하면서도 Docker의 편리함을 누릴 수 있습니다. 이는 특히 상업적인 소프트웨어나 민감한 데이터를 다루는 경우 중요합니다. 또한, 팀 내에서 이미지를 공유하면서도 외부에는 노출되지 않도록 관리할 수 있습니다. 또한 개인 프로젝트나 기업의 비밀스러운 데이터를 안전하게 관리하고 싶은 사용자에게 이상적인 선택입니다. 비공개 저장소를 통해 Docker의 모든 이점을 누리면서도, 필요한 사람들에게만 접근을 허용하는 것이 가능합니다.
사용하려고 결정한 이유
개인적인 프로젝트를 공개하고 싶지 않아 비공개 저장소를 사용하려 했으나 무료로 여러 개 사용할 수 없었던 이유 때문에 방법을 찾던 중 직접 구축방식으로 가능하다는 방법을 알게 되었고 마침 MinIO를 사용 중이기도 하여 직접 구축하기로 하였습니다.
Docker Private Hub 이미지 설치 ( Registry V2 )
AWS S3 API와 호환되기 때문에 S3 환경변수 값에 MinIO의 미리 생성한 Access Key, Secret Key를 docker-compose 환경변수에 추가합니다.
version: "3"
services:
registry:
image: registry:2
container_name: registryv2
restart: always
environment:
REGISTRY_STORAGE: s3
REGISTRY_STORAGE_S3_ACCESSKEY: [ ACCESS KEY ]
REGISTRY_STORAGE_S3_SECRETKEY: [ SECRET KEY ]
REGISTRY_STORAGE_S3_REGIONENDPOINT: [ MINIO CONSOLE URL ]
REGISTRY_STORAGE_S3_BUCKET: docker-registry
REGISTRY_STORAGE_S3_SECURE: "false"
REGISTRY_STORAGE_S3_region: ignored-for-minio
REGISTRY_STORAGE_REDIRECT_DISABLE: "true"
ports:
- "5000:5000"
Docker Private Hub에 Docker Image 추가하기
이제 Docker Image를 Private Hub에 추가해보도록 하겠습니다.
Docker Private Hub 동작 확인
먼저 등록된 Repository 확인하여 저장소가 정상적으로 동작하는지 확인합니다. Docker Private Hub의 주소와 포트를 입력합니다. 아무것도 등록하지 않았다면 아래와 같이 입력결과가 나오면 정상적으로 동작중인 것입니다.
{"repositories":[""]}
Docker Image 목록 확인
REPOSITORY TAG IMAGE ID CREATED SIZE minio_minio latest 35e3cf4629e4 22 hours ago 134MB registry 2 a2d58c145a45 11 days ago 24.9MB mysql latest e68e2614955c 2 months ago 638MB
명령어의 결과목록에서 Docker Private Hub에 추가할 Image의 Repository와 Tag를 확인합니다.
저는 여기서는 "mysql"의 "latest" Tag를 선택해보겠습니다.
Docker Image Tag 변경
docker tag mysql:latest localhost:5000/mysql:latest
mysql:latest는 docker hub로부터 Image를 받게 됩니다. 이 태그를 localhost:5000/mysql:latest로 수정합니다.
Docker Private hub에 Docker Image 등록
The push refers to repository [localhost:5000/mysql:latest] 6bccc91aa757: Pushed 4acbb5c7049e: Pushed 30fb0b4ec8c1: Pushed 65f56cbc875b: Pushed ef853745e16d: Pushed latest: digest: sha256:e31a54e0afb4d65345568f2fffd2da13bccc4bd72ed67c57d3fba66b153867f5 size: 5550
명령어를 이용해 docker image를 Push 합니다.
Docker Image 확인
이전에 입력해 봤었던 Docker Private Hub의 Repository 확인 명령어를 입력합니다.
{"repositories":["mysql"]}
이전에 추가한 Image가 있다면 Push에 성공한 것입니다.
Docker Private Hub에 Docker Image 사용하기
이전 단계를 잘 따라오셨다면 Private Hub에 Docker Image를 추가하는 것에 성공하셨을 것입니다. 이제 해당 Image를 실제 사용해 보도록 하겠습니다.
Docker Image 삭제
Docker hub로부터 받은 Docker Image가 있다면 삭제합니다.
Docker Private Hub의 Docker Image 추가
Docker Image 확인
기존 mysql:latest의 Image가 localhost:5000/mysql:latest로 변경되었다면 끝입니다.
REPOSITORY TAG IMAGE ID CREATED SIZE minio_minio latest 35e3cf4629e4 22 hours ago 134MB registry 2 a2d58c145a45 11 days ago 24.9MB localhost:5000/mysql latest e68e2614955c 2 months ago 638MB
마치며
지금까지 Docker Private Hub에 Image를 등록하고 사용하는 방법을 알아보았습니다.
감사합니다.
*오타 혹은 잘못된 내용이 있다면 부담 없이 댓글로 알려주세요 :)
'Development > Docker' 카테고리의 다른 글
[Docker] 안전하고 최적화된 Dockerfile 만들기 (0) | 2024.06.17 |
---|---|
[Docker] Self-hosted Obsidian 설치 및 짧은 사용기 (1) | 2024.06.17 |
[Docker] 즉시 종료되는 docker contatiner 해결방법 (0) | 2024.06.17 |
[Docker] 사용하지 않는 이미지, 컨테이너, 볼륨 정리하기 (0) | 2024.06.17 |
[Docker] MinIO 소개 및 설치 (0) | 2024.06.17 |