使用 Docker 建立 Nexus3 的 Image Registry

Nexus 全名是 nexus repository oss 是套免費 (有付費的 pro 版,差異請參考 COMPARE to PRO VERSION) 產出物倉庫,支援多種類型產出物(摘錄至 Manage these formats)

  • Bower
  • Docker
  • Git LFS
  • Maven
  • npm
  • NuGet
  • PyPI
  • Ruby Gems
  • Yum
  • APT
  • Conan
  • R
  • CPAN
  • Raw (Universal)
  • P2
  • Helm
  • ELPA
  • Go
  • CocoaPods

雖然之前為了處理 CI/CD 相關要已經安裝過好幾次,雖然安裝過程簡單,也就是因為簡單讓我每次想紀錄時都覺得沒什麼內容,但每次安裝在設定時還是不免會忘東忘西,而這次安裝的間隔更久,忘得更徹底,於是興起了筆記的念頭

基本環境說明

  1. macOS Catalina 10.15.2
  2. docker community 19.03.5
  3. nexus 3.20.1

使用 Docker 安裝

我的出發點是為了測試,所以沒有將實際的 artifact 儲存位置透過 volume 保留下來,這點要注意,詳細內容可以參考 docker hub 上的使用說明 Sonatype Nexus3 Docker: sonatype/nexus3

docker run -d -p 8081:8081 -p 8082:8082 --name nexus sonatype/nexus3

上面的指令,與 docker hub 上的使用說明多開了 8082 port,這個部份留在後面設定 image registry 時再詳細說明

建立並設定 Image Registry

  1. 首次登入需使用先取得密碼

    預設帳號:admin,成功登入後會要求修改密碼

    docker exec -it nexus more /nexus-data/admin.password
    

    1login

  2. 建立 Image Registry

    2creattterepository

    3dockerhosted

    repository 有三種模式

    • hosted:建立 private Docker registry
    • proxy:可以指向其他外部的 Docker registry
    • group:(官方建議模式) 將 hostedproxy 綁在一起,讓 client 透過 group 來連線
  3. 設定 Image Registry

    4setup

    • 設定 repository name
    • 設定 HTTP connector

      這個就是 docker 多個一個 8082 port 的原因,如果沒有設定 http connector,我在執行 docker login 時一直出錯

      5loginerror

心得

果然實際紀錄起來沒什麼內容,希望改天還有相關需求用到時可以節省一些環境建置的時間囉

不過 Nexus 我個人覺得應該是存在著某些 bug 或是我沒有找到正確的使用方法,因為 UI 沒有強制需要設定 connector,但不設定 connector ,就無法正確執行 docker login,這樣根本不能算是個可用的 docker registrry 呀

參考資訊

  1. COMPARE to PRO VERSION
  2. Manage these formatsManage these formats
  3. Sonatype Nexus3 Docker: sonatype/nexus3
  4. Hosted Repository for Docker (Private Registry for Docker)
  5. Proxy Repository for Docker
  6. Grouping Docker Repositories