이미지를 저장할 도커 레지스트리를 구축해야한다.
nuclio function은 일종의 이미지로 배포과정에서 이미지를 레지스트리에 push하고 pull하는 작업을 거치게 되는데, 해당 작업을 하기 위해서는 도커 레지스트리가 필요하다.
도커레지스토리를 구축하는 방식은 두가지가 있다.
나는 Nexus를 활용하여 Private Docker Registry를 구축하려고 한다.
Nexus?
Nexsus는 현재 가장 인기 있는 오픈 소스 Repository Manager로, Docker, Helm,Pypi,Maven 등 다양한 Format을 지원한다.
Nexus 컨테이너 생성
mkdir nexus-data
docker run --name nexus -d -p 5000:5000 -p 8081:8081 -v /nexus-data:/nexus-data -u root sonatype/nexus3
5000포트는 도커 레포지토리를 접근하기 위한 포트
8081은 웹 UI를 통해 접근하기 위한 포트.
기본적으로 Nexus는 http://localhost:8081에서 실행된다
→ 웹으로 접속!!
최초 admin 계정으로 로그인을 해야하고
admin 비밀번호는 /nexus-data/admin.password 에서 확인한다.
cat /nexus-data/admin.password
비밀번호는 알아서 각자 수정하시길..!
Blob Stores에서 docker-hosted, docker-hub를 생성한다.
Blob store는 Proxy repository 나 hosted repository를 통해 배포된 바이너리를 저장하는 저장소
docker hosted 생성
docker-hosted는 개인이 만든 이미지를 저장하는데 사용한다.
5000번 포트로 통신하고 client는 도커 레지스토리의 API를 통해 interact한다.
docker(proxy) repository 생성
Realms 설정
docker repository에 접근할 수 있는 인증을 추가한다.
Docker Authentication에서 제공하는 기본적인 인증 권한을 사용해 익명으로 docker pull을 허용
docker image pull & push
모든 워커노드에서 Nexus repository에 접근을 허용하기 위한 설정을 진행.
공인 TLS 인증이 되지 않은 Private repository에 HTTP접근을 허용하기 위한 설정이다.
sudo gedit /etc/docker/daemon.json
/etc/docker/daemon.json에 아래 내용을 추가한다.
"insecure-registries" : ["저장소의 경로:5000"]
# 기존 busybox 이미지를 가지고 해볼거임
docker tag 3f57d9401f8d localhost:5000/busybox:v20240207
docker push localhost:5000/busybox:v20240207