목차

Nexus Repository Manager 3 (OSS Version) 설치

Private Container Image 저장소를 만들기 위해 Nexus Registory Manager(이하 Nexus) 구성을 하려고 합니다.

Nexus Data 저장 공간 생성

Use Docker

  • Docker 를 이용할 경우, 아래와 같이 명령을 수행합니다.
    $ docker run -d -p 8081:8081 -p 5000:5000 --name nexus -v /data:/nexus-data sonatype/nexus3
    

Use Podman

  • Podman 을 이용할 경우, 아래와 같이 명령을 수행합니다.
    $ podman run -d -p 8081:8081 -p 5000:5000 --name nexus -v /data:/nexus-data sonatype/nexus3
    

Nexus 초기 설정

  • 위와 같이 http://<Server-IP>:8081 로 접속합니다.

  • admin 계정 password 를 다음과 같은 경로에서 확인하여 입력합니다.
    $ cat /data/admin.password
    

    Container Volume 을 /data 로 연결을 해서 해당 경로로 확인합니다.

  • Next 를 누르고 다음을 진행합니다.

  • admin 계정의 Password 를 신규로 생성합니다.

  • anonymous 계정 활성화 여부를 선택하고 진행합니다.

  • 설치가 완료 되었습니다.

Private Container Image 저장소 생성

  • 관리 페이지에서 Repository 메뉴를 선택합니다.

  • Create Repository 를 선택합니다.

  • 생성 가능한 Repository 종류가 나오며, Docker (Hosted) 를 선택합니다.

  • Repository 의 이름을 지정하고, Repositoty 에 사용할 Port 를 지정합니다.

  • 추가로 HTTPS Port, Docker V1 API 활성화, 익명 사용자 Pull 권한 등을 용도에 맞게 설정합니다.

  • 만약 anonymous Pull 기능이 필요하다면, Realms 메뉴에서 Docker Bearer Token Realm 를 추가합니다.

Container Image Push

  • 아래와 같이 Docker Host 에서 /etc/docker/daemon.json 를 수정하여 Private Image Repository 를 사용 할 수 있도록 추가합니다.
    $ cat /etc/docker/daemon.json 
    {
          "insecure-registries" : ["192.168.200.92:5000"]
    }
    
  • Docker login 을 진행합니다.
$ docker login 192.168.200.92:5000
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
   
Login Succeeded
  • Container Image 를 Push 하기 위해 tag 를 수정합니다.
$ docker tag test-go-web 192.168.200.92:5000/test-go-web:latest
$ docker images
REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE
<none>                            <none>              6a111295a403        8 days ago          386MB
test-go-web                       latest              4aa4b4c6d791        8 days ago          7.49MB
192.168.200.92:5000/test-go-web   latest              4aa4b4c6d791        8 days ago          7.49MB
golang                            alpine              760fdda71c8f        3 weeks ago         370MB
  • Container Image 를 Push 합니다.
    $ docker push 192.168.200.92:5000/test-go-web
    The push refers to repository [192.168.200.92:5000/test-go-web]
    3417e2abcc0c: Pushed
    latest: digest: sha256:35e67bc46ce93066a042e97954afeff9a7f2c6498783040703a32efa1a4c4e21 size: 528
    

    위와 같이 Push 가 완료가 되고, 아래와 같이 Nexus GUI 에서 Container Image 저장 상태를 확인 할 수 있습니다.

참고 자료

chhanz's profile image

chhanz

2020-04-17

Read more posts by this author