0x0102
KDT - 도커 레지스트리 구축해보기 본문
1. 프라이빗 레지스트리 구축의 필요성
기업의 경우 프라이버시를 위해 퍼블릭 레포지토리를 사용하지 않고, 프라이빗 저장소를 직접 구축하기도 한다.
도커허브 서버를 유료로 사용해도 되지만 도커허브에 공개된 registry 라는 공식 이미지로 구축하는 경우가 더 많다.
2. registry 이미지를 이용해 host1에 구축해보기
$ docker pull registry
$ docker images | grep registry
registry 이미지 pull
볼륨 설정 // 호스트의 저장폴더와 컨테이너 저장폴더 동기화
$ docker run -d \
-v /home/유저명/registry_data:/var/lib/registry \
-p 5000:5000 \
--restart=always \
--name=private-registry \
registry
호스트의 /home/유저명/registry_data 파일을 컨테이너의 /var/lib/registry 폴더와 즉시 동기화
포트 5000번으로 5000번 포트에 대한 바인딩을 꺼질 때마다 재시작하도록 하는 registry 컨테이너 띄우기
$ docker ps | grep private
현재 저장된 레포지토리 검색
$ curl -X GET http://로컬컨테이너주소:5000/v2/_catalog
저장된 요소 검색
$ docker image tag ~~
특정 도커허브에 올릴 때 레포지토리 명을 따로 이미지에 반영했듯, 사설 레포지토리 내부망 주소도 태그로 붙여줌
$ docker push 192.168.?.101:5000/myweb:1.0
해당 주소로 push
+ 아직 도커 엔진이 신뢰할 수 없는 저장소이므로 거절당할 수 있기에 컨테이너를 저장소로 등록 및 반영해야 함
$ sudo vi /etc/init.d/docker
의 31번 라인의 도커 옵션 설정창 확인
수정 모드로 우변에
--insecure-registry 아이피주소:5000
입력 및 저장
$ sudo vi /etc/docker/daemon.json
파일 생성
{ "insecure-registries": ["192.168.31.101:5000"] }
해당 파일에 key값 (좌변)과 value값(우변) 작성
$ sudo systemctl restart docker.service
해당 내역 갱신을 위한 도커 재시작
$ docker info
프라이빗 레지스토리가 잘 등록되었는지 확인
다시 push 진행
**`$ curl -X GET http://레지스트리아이피:5000/v2/_catalog`**
이미지 목록 조회
$ curl -X GET http://레지스트리아이피:5000/v2/이미지명/tags/list
태그 목록 조회
3. 구축한 레지스트리를 이용해 이미지 다운 및 업로드
host1에 구축한 사설 레지스트리를 host2에서 활용해 push와 pull을 수행
시나리오
1. host2에 host1의 주소를 기반으로 해서 DOCKER_OPS 에 환경설정을 하고 갱신
2. host2에서 이미지 생성하기
3. 해당 이미지를 host1 기반 private 레지스트리에 업로드
4. 업로드된 내역을 catalog로 조회하기
5. pull도 받아보기
'Study > System Engineer' 카테고리의 다른 글
KDT - 컨테이너를 CLI에서 디테일하게 관리하기 2 (1) | 2024.02.05 |
---|---|
KDT - 컨테이너를 CLI에서 디테일하게 관리하기 (0) | 2024.02.02 |
KDT - 도커 이미지 구조 이해 및 업로드 (0) | 2024.01.29 |
KDT - Portainer를 이용해 GUI로 컨테이너 관리 (1) | 2024.01.29 |
KDT - 로컬 환경에서 도커 다루기 (1) | 2024.01.26 |