部署Nexus作為docker的私有倉庫


 

目錄

Docker搭建Nexus私有倉庫... 1

一、安裝部署... 1

1、安裝... 2

2、訪問網頁端... 2

二、配置使用... 2

1、創建本地倉庫... 2

2、docker配置... 3

3、上傳、拉取鏡像... 4

4、上傳、拉取鏡像... 4

5、權限管理... 5

Docker搭建Nexus私有倉庫

 

Nexus3是Sonatype提供的倉庫管理平台,Nuexus Repository OSS3能夠支持Maven、npm、Docker、YUM、Helm等格式數據的存儲和發布;並且能夠與Jekins、SonaQube和Eclipse等工具進行集成。Nexus3支持作為宿主和代理存儲庫的Docker存儲庫,可以直接將這些存儲庫暴露給客戶端工具;也可以以存儲庫組的方式暴露給客戶端工具,存儲庫組是合並了多個存儲庫的內容的存儲庫,能夠通過一個URL將多個存儲庫暴露給客戶端工具,從而便於用戶的使用。通過nexus3自建能夠有效減少訪問獲取鏡像的時間和對帶寬使用,並能夠通過自有的鏡像倉庫共享企業自己的鏡像。在本文中,采用Docker方式安裝部署Nexus3。
注意:目前的版本有2.x和 3.x ,3.x的支持范圍更廣,支持ruby和docker。如果單純的maven私服,建議使用2.x

一、安裝部署

1、安裝nexus

[root@localhost ~]# docker run -d --user root -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 8084:8084 -v /opt/nexus-data:/nexus-data --name nexus3 sonatype/nexus3:3.14.0

 

#映射端口對應的用途:

8081:可以通過http訪問nexus應用

8082:docker(hosted)私有倉庫,可以pull和push

8083:docker(proxy)代理遠程倉庫,只能pull

8084:docker(group)私有倉庫和代理的組,只能pull

#使用參數 -v 建立宿主機與Docker目錄映射關系,/nexus-data:docker里存nexus數據目錄,所以將數據目錄存放到宿主機/opt/nexus-data

2、訪問網頁端

http://192.168.100.163:8081 默認賬號密碼: admin/admin123

二、創建私有鏡像倉庫

1、repository的類型

  • hosted,本地倉庫,通常我們會部署自己的構件到這一類型的倉庫。比如公司的第二方庫。
  • proxy,代理倉庫,它們被用來代理遠程的公共倉庫,如maven中央倉庫。
  • group,倉庫組,用來合並多個hosted/proxy倉庫,當你的項目希望在多個repository使用資源時就不需要多次引用了,只需要引用一個group即可。

 

2、創建 docker(hosted) 類型的倉庫

在創建鏡像倉庫的頁面中,設置鏡像倉庫的相關信息,包括名稱、HTTP端口、是否允許匿名拉取鏡像等信息。這里需要注意的是,此處的HTTP端口(此處的值為8082)很重要,后續拉取和推送進行是使用此端口進行的,而不是nexus本身對外暴露的端口。

 

3、修改docker配置

在/etc/docker/daemon.json文件中添加下面的內容:

[root@localhost ~]# cat /etc/docker/daemon.json

{

    "insecure-registries":["192.168.100.163:8082"]

}

[root@localhost ~]# systemctl daemon-reload

[root@localhost ~]# systemctl restart docker

[root@localhost ~]# docker info

Insecure Registries:

   192.168.100.163:8082  #生效了

   127.0.0.0/8

 

4、上傳、拉取鏡像

[root@localhost ~]# docker login 192.168.100.163:8082

Username: admin

Password: admin123

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  #登錄成功

注意:登錄時,需要提供用戶名和密碼。認證的信息會被保存在~/.docker/config.json文件,在后續與私有鏡像倉庫交互時就可以被重用,而不需要每次都進行登錄認證。

[root@localhost ~]# docker pull hello-world

[root@localhost ~]# docker tag hello-world 192.168.100.163:8082/helloworld:1.0

[root@localhost ~]# docker push 192.168.100.163:8082/helloworld:1.0

 

 

 

 

[root@localhost ~]# docker pull 192.168.100.163:8082/helloworld:1.0  #拉取鏡像

1.0: Pulling from helloworld

1b930d010525: Pull complete

Digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a

Status: Downloaded newer image for 192.168.100.163:8082/helloworld:1.0

192.168.100.163:8082/helloworld:1.0

 

 

5、權限管理

創建用戶:

默認是使用admin登錄的,權限太高,可以給用戶單獨創建賬號

建立 docker 角色組,權限為 nx-repository-view-docker-*-*

 

 

 

建立新用戶,並加入為 docker角色組

 

 

 

登錄

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM