구축환경
Host
VMware® Workstation 14 Player 14.0.0 build-6661328
OS
Ubuntu 16.04.6 LTS
Application
- Docker : 19.03.5, build 633a0ea838
- docker-compose : 1.11.2, build dfed245
- git : 2.7.4
Docker Image를 활용한 Local Registry 구축
Docker Registry를 구축하는 방법에 대해 살펴보겠습니다. Private Registry를 사용할 경우 다음과 같은 장점이 있습니다.
- Docker Hub등의 Public Registry의 경우 하나의 이미지만 private 등록이 가능하고 organization의 경우 비용을 지불해야 하지만 Private Registry의 경우 제한이 없다.
- 개인 공간에서 보다 많은 권한을 부여하여 사용할 수 있다.위와 같은 사유로 인해 내부 Private Cloud 환경에 적용 가능한 Docker Private Registry를 지금부터 구현해 보도록 하겠습니다.
먼저 Docker 가 설치되어 있어야 합니다.
Docker Registry 설치
Docker registry Images 가져오기
docker pull registry:latest
docker images 를 통해 registry 이미지 확인합니다.
docker images registry
Docker registry 실행
다음 docker run 명령어로 컨테이너 기동 합니다.
docker run --name local-registry \
-d --restart=always \
-p 5000:5000 \
-v /data/registry:/var/lib/registry/docker/registry/v2 \
registry:latest
keyword |
description |
--name |
docker 컨테이너 이름 |
-d |
daemon 으로 (백그라운드) 실행 |
-p |
registry 실행 (local 5000번 포트 -> 이미지 5000번 포트로 바인딩) |
-v |
/data/registry:/var/lib/registry/docker/registry/v2 |
* Docker Registry Volume 관리
Container로 Registry를 구축할 경우 Registry Container가 Down 되면? Container의 휘발성으로 인해 모든 데이터가 삭제 되게 됩니다.
Container가 다운되었을 경우를 대비하여 Registry를 별도로 관리할 수 있는 Volume을 생성하고 이를 Container 내부와 공유할 수 있도록 설정하는 것이 중요합니다. 본 테스트에서는 Local Volume의 경로를 Container 내부 registry 경로인 /var/lib/registry/docker/registry/v2와 매핑하여 Container가 다운되더라도 재기동 시 Local volume에 저장된 데이터를 그대로 로딩할 수 있도록 설정하는 방법에 대해 알아보겠습니다.
-v /data/registry:/var/lib/registry/docker/registry/v2
-v 옵션 부분만 추가하면 끝!
의미는 /data/registry라는 경로의 local volume을 /var/lib/registry/docker/registry/v2라는 경로의 container volume에 마운트 한다 정도로 생각하면 됩니다.
Docker Registry 활용
도커 이미지 생성하기
1) 도커 허브에서 이미지 가져오기(pull)
docker pull ubuntu
받은 도커 이미지에 태그를 설정합니다.
docker tag ubuntu <IP>:5000/ubuntu
2) Dockerfile 작성하여 이미지 생성하기(build)
FROM ubuntu:16.04
MAINTAINER username <email@gmail.com>
CMD echo 'Hello My Friend!'
docker build -t <IP>:5000/hello-ubuntu:1.0 .
여기서 주의할 점은 tag 이름에 docker registry ip:port를 작성하여야 이후 docker push 시점에 해당 repogitory를 직접 찾아간다는 점입니다. 즉 docker tag의 형식은 [DOCKER_REGISTRY_IP]:[DOCKER_REGISTRY_PORT]/[REPOGITORY]/[IMAGE_NAME]:[TAG]라고 볼 수 있습니다.
docker images를 통해 <IP>:5000/ubuntu 이미지가 생성된 것을 확인할 수 있습니다.
docker images
도커 tag를 이용하여 도커 registry에 push
앞서 생성한 Private Registry에 이미지를 올려보도록 하겠습니다.
docker push <IP>:5000/ubuntu
위와 같이 server gave HTTP response to HTTPS client라는
sudo vi /etc/docker/daemon.json
{
"insecure-registries":["<IP>:5000"]
}
이후 docker를 restart 하고 registry를 다시 기동 합니다. 다시 docker push를 실행합니다.
systemctl restart docker
docker push <IP>:5000/ubuntu
Docker Registry Dashboard
지금부터는 GUI를 지원하는 Docker Registry Web을 설치해 보도록 하겠습니다.
docker-registry-web을 설치하기 위한 yaml파일 작성
cd /opt/gopath/src/gitlab/registry/
vi config.yaml
config.yaml 내용
registry:
# 기존에 설치한 docker private registry
url: http://<IP>:5000/v2
# Docker registry name
name: <IP>:5000
# docker 권한 부여
readonly: false
auth:
enabled: false
docker-registry-web 실행
docker run -it -d \
-p 8080:8080 \
--name registry-web \
--link local-registry \
-v /opt/gopath/src/gitlab/registry/config.yaml:/conf/config.yml:ro \
hyper/docker-registry-web
Docker Private Registry GUI 접속
<레지스트리 설치 IP>:8080 접속
참고
https://waspro.tistory.com/532
'기타' 카테고리의 다른 글
GitLab Runner 를 사용하여 GitLab CI 구성하기 (1) | 2019.12.12 |
---|---|
GitLab CE 설치하기 (0) | 2019.12.12 |
IPFS Tutorial: IPFS(InterPlanetary File System) 설치하기 (1) | 2019.02.27 |
Waspmote ZigBee Networking Guide (0) | 2018.05.28 |
Waspmote Quickstart Guide 번역 (0) | 2018.05.28 |