도커 개인 저장소 만들기

 

도커는 기본적으로 퍼블릭 저장소를 제공해 줍니다. 도커 허브에 로그인 하고 리포지토리를 확인하면 우측에 PUBLIC이라고 써있는걸 확인할 수 있습니다.

 

위의 이미지처럼 간단한 테스트 프로젝트면 상관없겠지만 공개되어선 안되는 프로젝트도 있죠. 다른사람은 접근할 수 없는 개인 저장소를 만들어 봅시다.

 

 

도커 허브 이용하기

 

도커 허브 서버를 이용하는 방법입니다. 별도 서버 구성이 필요하지 않으나 무료 계정에서는 하나만 사용할 수 있다는 단점이 있습니다.

Create Repository버튼을 클릭 후 Visibility옵션을 Private로 생성하면 끝입니다.

 

위와 같이 생성하면 간단하게 개인 저장소로 생성됩니다.

 

 

더 사용하고 싶으시면 돈을 내면 됩니다. Billing 메뉴의 Upgrade Plan 버튼을 클릭하면 사용할 개인저장소 개수에 따른 월별 금액이 나와있습니다.

 

 

개인 서버 이용하기

 

개인이 관리하고 있는 서버가 있거나, 다른 사유로 인해 직접 이미지들을 관리하고 싶다면 도커 레지스트리를 사용하시면 됩니다. 

도커 레지스트리(Docker Registry)는 이미지를 업로드하거나 다운로드 하는 공용/개인 저장소입니다. 도커 클라이언트를 통해 게시된 이미지를 검색해 다운로드 할 수 있습니다. 도커 허브가 제공하는 공개/개인 저장소들도 도커 레지스트리라고 할 수 있습니다.

 

우선 도커 레지스트리를 설치합니다.

$ docker pull registry:latest

$ docker images

이미지가 설치된 것을 확인한 후 컨테이너를 실행시킵니다.

$ docker run -name private-reg -d -p 5000:5000 registry:latest

각각의 명령어가 의미하는바는 별도로 언급하지 않겠습니다.

 

컨테이너가 제대로 동작하는지 확인해봅니다.

$ docker ps -l

레지스트리도 한번 확인해봅니다.

$ curl -X GET http://0.0.0.0:5000/v2/_catalog

정상적으로 응답이 오는것을 확인할 수 있습니다. 현재 생성한 리포지토리가 없으므로 공백이 리턴됩니다.

별도의 설정파일을 건드리지 않는 이상 로컬에 데이터를 저장합니다. 이에 대한 내용은 별도로 포스팅할 예정이며 공식 홈페이지를 참조해 주시기 바랍니다.

이제 레지스트리에 올릴 이미지를 준비합니다.

$ docker tag mintkiwi/test-image:0.1 0.0.0.0:5000/private-test-image

새로운 이미지가 제대로 생겼는지 확인 하고 push를 해봅니다.

$ docker push 0.0.0.0:5000/private-test-image

실패합니다. 연결이 거부되었다고 나옵니다. 레지스트리의 주소를 insecure-registries에 추가해줍시다. /etc/docker/daemon.json 파일을 다음과 같이 생성합니다.

Docker 17.x버전 이후부터는 Insecure registry를 수정하기 위해 daemon.json파일을 사용합니다. 이전버전은 /etc/init.d/docker파일의 DOCKER_OPTS를 수정해 주세요.

도커를 재시작하고 Insecure registries가 변경된 것을 확인합니다.

$ suto service docker restart
$ docker info

도커를 재시작했으므로 컨테이너를 실행하는것을 잊지마세요. 컨테이너를 실행하고 레지스트리에 push해봅시다.

$ docker push 0.0.0.0:5000/private-test-image:0.1

이제 정상적으로 push되는것을 확인할 수 있습니다. push완료 후에 레지스트리도 한번 조회해 보세요.

$ curl -X GET http://0.0.0.0:5000/v2/_catalog

제대로 업로드 된 것을 확인할 수 있습니다.

이제 업로드 한 이미지를 다운받아 볼 차례입니다. 기존 이미지를 지우고 pull을 통해 이미지를 다운받습니다.

$ docker rmi -f ####
$ docker pull 0.0.0.0:5000/private-test-image
$ docker images

정상적으로 다운로드 된 것을 확인할 수 있습니다.

+ Recent posts