DevOps/Docker

[Docker] private registry 구축 및 사용하기

KIM DEON 2021. 4. 8. 19:23
개인 private registry를 구축해서 생성한 도커 이미지를 private하게 관리할 수 있다. docker hub에서 제공하는 registry 이미지를 사용하여 간단하게 private registry를 구축하는 과정을 정리하였다.

Docker registry 설치

registry 이미지를 가져온다. 

$ docker pull registry

Private registry 실행

pull받은 registry 이미지를 실행한다. 

 $ docker run -dit --name registry -p 5000:5000 registry
  • --name : 컨테이너에 할당할 이름
  • -p : host에 컨테이너 port 5000번 publish
  • -d : daemon으로 실행(background)
  • -i : 표준 입력(STDIN)을 활성화하고, 컨테이너와 연결되어 있지 않더라도 표준 입력 유지
  • -t : TTY모드 사용(bash를 사용하려면 설정)

docker ps 또는 windows docker ui를 확인하면 다음과 같이 registry가 실행 중인 것을 확인할 수 있다.

Private registry에 푸시하기

테스트를 위해 도커 파일을 빌드한다.

localhost 또는 ip를 포함한 이름으로 docker image를 생성한다. 

$ docker build --tag {hostIP}:5000/test:0.1 .

생성된 이미지를 push하면 다음과 같이 private registry에 push가 되는 것을 확인할 수 있다. 

$ docker push {hostIP}:5000/test:0.1

Insecure registry 추가

push할 때 다음과 같은 에러 메시지가 나오는 경우, insecure registry를 추가해야한다.

Get https://{hostIP}:5000/v2/: http: server gave HTTP response to HTTPS client

 

/etc/docker/daemon.json 파일에 다음과 같이 insecure-registries를 추가해준다.

(나머지 항목은 무시하고 insecure-registries에 추가해주면 된다.)

{
  "registry-mirrors": [],
  "insecure-registries": [
    "{hostIP}:5000"
  ],
  "debug": true,
  "experimental": false
}

수정 후 docker를 restart 해주면 정상적으로 private registry를 사용할 수 있다.