개인 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를 사용할 수 있다.
'DevOps > Docker' 카테고리의 다른 글
[Docker] dind(Docker-in-Docker) 컨테이너 띄우기 (0) | 2021.04.05 |
---|