目录
一、目的
二、安装nexus
1、购买香港云主机编辑
2、安装nexus
3、启动nexus 服务
4、放行安全组
三、配置nexus
1、登录nexus管理页面
2、修改nexus密码
3、创建 Blob 存储空间(可选)
4、创建 镜像代理仓库
5、Realms配置
四、拉取镜像
1、配置docker
2、拉取镜像
一、目的
nexus不仅可以作为docker镜像的代理仓库还常用于作为maven的中央仓库,解决开发过程中直接访问外网或者国外网络的代理,加快了开发代码构建的速度和解决网络问题。
为了解决国内docker无妨访问dockerhub官方镜像仓库,或者docker部署与内网无法访问公网的问题,通常可以使用nexus作为中央仓库来实现。
1、当docker部署在内网无法访问公网的仓库,需要在可访问公网的服务器部署nexus服务,并且打通docker访问nexus服务的网络。
2、当docker需要访问国外的dockerhub等镜像仓库,可通过在国外或香港区域服务器部署nexus服务来作为docker的代理服务器( nexus 3版本之后才支持docker镜像代理)。
二、安装nexus
由于香港可以直接访问境外网络,则我直接购买腾讯云香港区域的云主机用来部署nexus服务,用来作为docker镜像代理服务器。(你也可以直接购买非中国的境外云服务器部署nexus)。
购买云主机务必记得分配公网IP并开通对应的安全组,nexus管理页面端口默认是8081。docker镜像代理端口可自定义,该端口我用的是 8443,所以安全组需要放行8081和8443端口。
1、购买香港云主机
2、安装nexus
由于nexus需要依赖jdk,所以安装nexus前,需要先安装jdk。若是使用docker安装nexus,则不需要安装jdk。本文我使用docker安装nexus
Nexus的官方网站:Download Nexus Repository OSS | Sonatype
Nexus的官方帮助文档:Sonatype Nexus Repository
Nexus的Docker安装介绍:Installation Methods
# 安装docker 和 docker-compose
yum install -y docker-compose.noarch docker.x86_64
systemctl enable docker && systemctl start docker
# 创建用户安装 nexus 的目录,可自定义
mkdir -p /root/nexus/data && chmod 777 -R /root/nexus/data
cd /root/nexus/ && touch docker-compose.yaml
# docker-compose.yaml 文件的内容见:
# cd /root/nexus/
version: '3'
services:
nexus:
image: sonatype/nexus3:latest
restart: always
ports:
- 8081:8081
- 8443:8443
volumes:
- ./data:/nexus-data
3、启动nexus 服务
# 启动 nexus 服务
cd /root/nexus
docker-compose up -d
# 查看 nexus 容器
cd /root/nexus
docker-compose ps
# 查看 nexus 日志
cd /root/nexus
docker-compose logs
4、放行安全组
nexus默认端口是: 8081
我自定义的docker代理服务端口是: 8443
三、配置nexus
1、登录nexus管理页面
登录地址: 云主机IP/域名:8081
登录用户: admin
我的环境密码: cat /root/nexus/data/admin.password
2、修改nexus密码
修改后的账号密码分别是: admin/nexus
3、创建 Blob 存储空间(可选)
可选是否要创建 Blob,若不创建blob,则使用默认的default。
4、创建 镜像代理仓库
默认情况下,Nexus 会帮我们创建几个仓库:
- maven-central:代理仓库,一般会连接外部的中央仓库;
- maven-public:仓库组,一般提供这个仓库给公司内部的同事使用;
- maven-release:本地仓库,一般用于存放公司内部开发的Jar包;
- maven-snapshots:本地仓库,存放公司开发的snapshot版本的包;
- maven-3rd-party:本地仓库,存放第三方的Jar包。
docker镜像仓库代理说明:
- docker(hosted)私有仓库,可以pull和push
- docker(proxy)代理远程仓库,只能pull
- docker(group)私有仓库和代理的组,只能pull
- hosted,本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库。
- proxy,代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
- group,仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。
5、Realms配置
四、拉取镜像
1、配置docker
由于docker-proxy 镜像代理是http非安全的协议,所以需要配置docker。若是通过nginx代理配置docker-proxy为可信的https,则不需要再配置docker。
在国内的docker主机配置docker的配置文件: /etc/docker/daemon.json
touch /etc/docker/daemon.json
# 重启 docker 使配置生效
systemctl reload docker.service