Nexus3를 이용한 Docker Private Registry 생성 및 활용
아래 두가지의 내용을 이제 합쳐서 단순한 private registry를 만드는것이 아니라 Nexus3를 활용한 private registry를 만들어 보도록 하자.
https://chicode.tistory.com/189
https://chicode.tistory.com/188
사실 만드는 방법은 너무나 간단하다. 이미 Docker images로 Nexus3가 업로드 되어 있기에, 이것을 다운로드 받고 실행만 하면 된다.
실습환경은 Centos7이며, Docker가 설치되어 있는것을 가정한다.
# mkdir /nexus-data
==> nexus가 만들어질 폴더를 미리 생성해 둔다.
# docker run --name nexus -d -p 5000:5000 -p 8081:8081 -v /nexus-data:/nexus-data -u root sonatype/nexus3
==> nexus를 설치할 건데 5000번 포트로 접근해 8081로 송출할 것이다 라는 의미이다. 포트는 자유롭게 변경 가능하다.
단 2줄이면 아래의 화면처럼 docker를 활용해서 nexus를 설치할 수 있다. GUI를 지원해주니 Nexus를 설치한 ip:8081번으로 접근하자. 잘 되는것을 확인할 수 있다. 이제 로그인을 해 보도록 하자.
먼저 ID 와 Password를 입력해야한다. 하지만 우리는 이런것을 사전에 만들어 둔 적이 없지만, 최초 설치시 admin계정을 같이 생성해 준다. 아래의 명령어를 입력해서 admin에 대한 password를 확인하도록 하자.
# cat /nexus-data/admin.password
==> nexus에 접근하기 위한 암호를 확인할 수 있다.
로그인을 한다면 설치 마법사가 실행되며, 다양한 도움을 준다. 가장 먼저는 password를 변경할 수 있도록 해 준다. cat명령어로 확인하기에는 굉장히 번거로우니 변경하도록 하자.
익명액세스와 관련된 설정이다. 반드시 아래의 내용을 확인한 후 본인의 상황에 맞게 설정하도록 하자.
이제 Docker를 통해 공유되는 페키지 파일을 저장할 수 있는 blob store를 생성해 보도록 하자. 좌측 상단의 톱니바퀴를 클릭한 후 blob stores를 클릭하자. 이 후 create blob store를 생성해 보자.
blob store에 대한 설정화면이다. 타입과 이름, 저장위치, 경고 등 을 지정할 수 있다.
타입은 AWS S3도 지원하고 있으며, 소프트 할당량에 대한 경고는 남은공간과 사용된 공간, 2가지 중 하나를 택일해 알람을 받을 수 있다.
잘 만들어진것을 확인할 수 있으며, 이것을 바탕으로 repository를 생성해 보도록 하자.
왼쪽의 repositories를 클릭한 후 create repository를 클릭하여 생성하자. 이때 주의할 점은 docker는 group(repos), Hosted(local), proxy(remote)3가지의 타입을 생성할 수 있다. 가장 보편적으로 사용하는 방법은 hosted와 proxy를 각각 생성한 후 group으로 이 2가지를 묶어두는 것 이다.
익숙한 helm과 maven, go도 보이지만 docker와 관련된 repositories를 생성하자.
먼저 Hosted에 대한 설정이다. hosted는 local의 기능을 가지고 있기 때문에, 기존의 BlobStore와 같은 이름이여도 딱히 상관은 없다. http/s에 대한 포트번호를 열 수 있다. 예시로는 5001번을 사용했다. 기존에 생성된 BlobStore를 선택해 저장소를 사용하도록 하자.
이제 Proxy 서버를 설정하도록 하자. 이름을 지정한 후 외부외부 저장소를 지정했다. 이때 저장소 링크인 http://registry-1.docker.io는 docker의 공식 이미지 저장소이며, 또한 docker index는 docker hub를 사용했다. 또한 기타 설정과 Storage를 지정했다.
마지막으로 Group을 설정했다. 기본적인 port인 5000번을 사용했으며, 편의성을 위한 설정을 몇몇 체크한 후 상단에서 만든 2개의 repositories(hostes, proxy)를 연동했다
이 후 docker pull을 해 보도록하자. error가 발생할 것이다.
docker 인증을 위한 토큰을 발급해 주도록 하자.
이 후 pull명령을 한다면 잘 되는것을 확인할 수 있으며, 당연히 gui화면에서도 확인할 수 있다.