이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

클라우드/Docker

04. Docker Private Registry 구성하기

이쿠우우 2020. 9. 15. 16:28
반응형

Docker Private Registry 관련 글

Docker Private Registry 구성하기

Docker Private Registry 암호 설정

Docker Private Registry IP가 아닌 Domain으로 접속하기
Docker login 실패 오류 해결법
docker htpasswd 명령 실패 오류


 

 

Docker Private Registry

먼저 Registry에 대해서 설명하자면

Registry는 image 파일이 저장되어어있는 일종의 저장소임.

사용자는 이런 image 저장소에서 원하는 image 파일을 Download (Pull)받아서

본인의 docker 에서 image를 Run 할 수 가 있음.

 

Docker를 처음 접했다면 기본적으로 image를 pull하기 위해 Docker hub를 사용함.

본인이 생성한 image를 Docker Hub에 push할 수도 있는데

Docker Hub는 공개적인 공간이므로 모든 Docker 사용자들이 접속해서 본인이 push 한 image를 pull할 수 있음. 

하지만 본인이 Push한 image를 개인 혹은 회사에서만 사용해야하는 경우가 있음.

그런 경우 Docker hub와 같은 공개된 Registry가 아닌,

개인적으로 사용할 수 있는 Regristry를 구축해야함.

그런 경우 사용해야하는것이 Docker Private Registry.

 

아래에 설치 과정을 설명함.

 


Docker Private Registry 설치과정

 

1. Docker 설치

[명령어]

yum install -y docker

 

[설치 후 version 확인]

Docker version

 

[Docker 실행]

systemctl start Docker && systemctl enable Docker

 

 

 

2. Docker Hub 에서 docker registry image Pull

 

[명령어]

docker pull registry

 

[image Pull 완료 후 image 확인]

Docker images | grep "registry.*"

 

 

3. Pull 받은 Docker Registry image를 실행

 

[명령어]

docker run --name local-registry -d --restart=always -p 5000:5000 -v /data/registry:/var/lib/registry/Docker/registry/v2 registry 

 

[옵션 설명]

( -p 5000:5000 )

외부에서 5000번 포트를 이용해 접근 할 수 있도록 포트 포워딩 설정

 

( -v /data/registry:/var/lib/registry/Docker/registry/v2 )

Container 내부 registry 경로인 /var/lib/registry/Docker/registry/v2와 매핑하여

Container가 다운 되더라도 재기동 시 Local volume에 저장된 데이터를 그대로 로딩할 수 있도록 설정

 

 

Docker Private Registry 설치 및 실행 완료

 

 


 

Docker Private hub 에 image 올리기( Image Push)

 

1. Push 할 Docker images 생성

 

Docker Hub 에서 이미지 가져오기 (pull)

[명령어]

docker pull centos

 

받은 Docker image 에 tag 설정

[명령어]

docker tag centos 10.0.2.5:5000/centos_iksoon

 

[옵션 설명]

10.0.2.5  = Docker registry server 의 ip

 

 

2. Docker tag 이용해서 Docker registry 에 push

 

Docker registries 경로 추가

추가한 신규 registry의 경우 Docker daemon에 insecure-registries를 등록해 주어야 합

[명령어]

vi /etc/docker/daemon.json

파일 생성 후아래 내용 추가

{
        "insecure-registries":["10.0.2.5:5000"]
}

해당 registries 를 사용할 다른 server 에서도 아래와 동일하게 daemon.json 을 추가한 후 재기동해야함

재부팅 : systemctl restart docker

 

 

상위에서 생성한 image push

[명령어]

docker push 10.0.2.5:5000/centos_iksoon

 

(주의 사항)

tag 이름에 Docker registry ip:port를 작성해야

이후 Docker push 시점에 해당 repogitory를 직접 찾아감.

즉 Docker tag의 형식은

[Docker_REGISTRY_IP]:[Docker_REGISTRY_PORT]/[REPOGITORY]/[IMAGE_NAME]:[TAG] 

라고 볼 수 있음

 

 

3. Docker push 된 이미지 조회

 

[registry 목록 조회]

curl -X GET http://localhost:5000/v2/_catalog

 

[registry 의 이미지 tag list 조회]

curl -X GET [Registry Address]/v2/[Image Name]/tags/list

 


 

Docker Private hub 에 이미지 받기

 

1. Private Docker Registry Server 에서images 받기

 

Docker registries 경로 추가

Private Registry server에서 image Pull 할 경우에도 images push 할 때와 마찬가지로

추가한 신규 registry의 경우 Docker daemon에 insecure-registries를 등록해 주어야 합

 

[명령어]

vi /etc/docker/daemon.json

파일 생성 후아래 내용 추가

{
        "insecure-registries":["10.0.2.5:5000"]
}

해당 registries 를 사용할 다른 server 에서도 아래와 동일하게 daemon.json 을 추가한 후 재기동해야함

재부팅 : systemctl restart docker

 

 

pull 명령어

docker pull 10.0.2.5:5000/centos_iksoon

 

 

 

 


제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!





 

 

 

 

 

반응형