Home SE Note

Docker on Raspberry PI: VMWare Harbor 이용한 Local Registry 서비스 구성

0

docker 와 docker-compose 가 기초적인 docker 사용 환경입니다. 이제 다양한 docker image 를 이용해서 여러 가지 서비스를 쉽게 시험해 볼 수 있습니다. 기본 사용법에 익숙해지고 나면 docker 기본 image 파일을 사용 환경 변화에 따라 수정하여 사용하고 싶어집니다. Instance 를 가지고 수정 가능하지만 수정 사항은 실행 중일 때만 효과가 있습니다. 매 번 Instance 에서 동일한 수정 작업을 하는 것은 불편하고 불필요한 작업입니다. SE라면 반복적인 일을 줄이고 자동화 할 방안을 고민해야 합니다. Instance 에서 수정한 내용을 Docker Image 형태로 저장할 수 있습니다. Docker 가 제공하는 Docker HUB라는 공공 등록 저장소에 등록하는 형태입니다. Docker HUB는 모든 사람이 접근 가능한 저장소입니다. 나만의 저장소를 만들고 싶다면 어떻게 하면 좋을까요? 그 방법을 정리해 보았습니다.

구축 배경

  • 공공 Docker Image 저장소인 Docker HUB 에 내부 서비스용 Docker Image 를 저장하는 것은 적절하지 않음.
  • 마이크로 서비스 이미지 관리 및  빠른 배포 가능한 Local 저장소 필요.
  • 무료 registry 구축 솔루션 검토 필요

구축 환경

  • H/W: Raspberry PI 3
  • OS: Raspbian GNU/Linux 9 (stretch)
  • docker version 18.05.0-ce, build f150324
  • docker-compose version 1.21.2, build 0898c783

※ docker & docker-compose 설치 관련해서는 “Raspberry PI 에서 docker 설치와 실행하기” 와 “Raspberry PI 에서 docker-compose 설치하기” 를 참고하십시오.

Docker Registry vs. VMWare Harbor

사용 가능한 저장소 솔루션으로 Docker Registry 2.x 와 VMWare Harbor 가 있습니다. 두 가지 모두 Docker image 형태로 제공하고 있어서 간단하게 Docker 로 기동 가능합니다.

Docker Registry 2.x

  • docker 공식 솔루션임.
  • docker-registry-1.x 는 삭제되었으므로 최신 2.x 를 사용 검토.
  • 별도의 Web UI container 설치 필요.
  • Replication 지원 않함. (2018.5 현재)

VMWare Harbor

장점

  • Registry + Web UI + DB + Job control  로 구성.
  • install.sh (docker-compose) 제공으로 쉽게 구축 가능함.
  • 추가적인 Harbor instance 를 별도 서버에 구축함으로써 쉽게 Repository Replication 이 가능.

단점

  • Replication 구성에서 사용자(User) 정보는 공유하지 않음.

Harbor 설치

  1. 최신 버전의 Harbor installer 다운로드
$ wget https://storage.googleapis.com/harbor-releases/release-1.5.0/harbor-offline-installer-v1.5.1.tgz

2. 이미지 저장소용 신규 Volume 생성

$ docker volume create --name registry_data
$ docker volume ls
DRIVER              VOLUME NAME
local               registry_data

3. registry 에 보안 (TLS) 접속을 위해 사설 인증서(Self-signed Certificate) 생성

 $ mkdir -p /etc/certs && openssl req \
>    -newkey rsa:4096 -nodes -sha256 -keyout /etc/certs/domain.key \
>    -x509 -days 365 -out /etc/certs/domain.crt
Generating a 4096 bit RSA private key

4. 사설 인증서를 Docker 가 참조 할 수 있도록 이동

$ sudo mkdir -p /etc/docker/certs.d/pi3.boolsee.pe.kr:5000
$ sudo cp certs/domain.crt /etc/docker/certs.d/pi3.boolsee.pe.kr:5000/ca.crt
$ sudo ls -l /etc/docker/certs.d/pi3.boolsee.pe.kr:5000

5. Docker 시작 옵션 추가 후, 서비스 재기동

$ sudo vi /etc/default/docker 
DOCKER_OPTS="--insecure-registry pi3.boolsee.pe.kr:5000"
$ sudo systemctl restart docker

6. harbor.cfg 파일 수정

_version = 1.5.0
hostname = pi3.boolsee.pe.kr
ui_url_protocol = http
max_job_workers = 50
customize_crt = on
secretkey_path = /data
admiral_url = NA
log_rotate_count = 50
log_rotate_size = 200M
http_proxy =
https_proxy =
no_proxy = 127.0.0.1,localhost,ui
email_identity =
email_server = mail.boolsee.pe.kr
email_server_port = 25
email_username =
email_password =
email_from = regadmin <regadmin@boolsee.pe.kr>
email_ssl = false
email_insecure = true
harbor_admin_password = Harbor12345
auth_mode = db_auth
ldap_url = ldaps://ldap.mydomain.com
ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com
ldap_search_pwd = password
ldap_basedn = ou=people,dc=mydomain,dc=com
ldap_filter = (objectClass=person)
ldap_uid = uid
ldap_scope = 2
ldap_timeout = 5
ldap_verify_cert = true
ldap_group_basedn = ou=group,dc=mydomain,dc=com
ldap_group_filter = objectclass=group
ldap_group_gid = cn
ldap_group_scope = 2
self_registration = on
token_expiration = 30
project_creation_restriction = everyone
db_host = mysql
db_password = root123
db_port = 3306
db_user = root
registry_storage_provider_name = filesystem
crt_country = KO
crt_state =
crt_location = KO
crt_organization = boolsee
crt_organizationalunit = HOME
crt_commonname = pi3.boolsee.pe.kr
crt_email = regadmin@boolsee.pe.kr

7. harbor 설치

$ sudo ./install.sh

 

 

Exit mobile version