CentOS7下使用Sonatype Nexus3搭建Docker私有仓库
相关资料:
Sonatype Nexus3官方网站:https://www.sonatype.com/download-oss-sonatype
Sonatype Nexus3 Docker Hub地址:https://hub.docker.com/r/sonatype/nexus3/
Sonatype Nexus3一些介绍及使用:https://yeasy.gitbooks.io/docker_practice/repository/nexus3_registry.html
本文参考文章
- https://www.cnblogs.com/holdengong/archive/2019/09/05/11468290.html
- https://blog.csdn.net/supertor/article/details/83146596
1.安装Docker(必要条件)
请参考https://www.cnblogs.com/fanqisoft/p/10439620.html安装Docker
2.Docker安装Nexus3仓储
1.拉取sonatype/nexus3镜像
docker pull sonatype/nexus3
2.启动容器
docker run -d --name nexus3 --restart=always -p 5000:5000 -p 8081:8081 -v /mnt/docker/nexus-data:/nexus-data sonatype/nexus3
5000端口是用于镜像仓库的服务端口 8081 端口是nexus的服务端口
3.访问管理页面
http://localhost:8081
4.登录
# 在docker目录下查找admin.password文件并查看
cat `find /var/lib/docker -name admin.password -print`
# 这一串guid就是默认密码
d374c028-9760-4dd8-b911-3cb67ebddba5
5.创建仓储
点击齿轮 - Repositories - Create repository - 选择 docker (hosted)
Name: 仓库的名称
HTTP: 仓库单独的访问端口
Enable Docker V1 API: 如果需要同时支持 V1 版本请勾选此项(不建议勾选)。
Hosted -> Deployment pollcy: 请选择 Allow redeploy 否则无法上传 Docker 镜像。
其它的仓库创建方法请各位自己摸索,还可以创建一个 docker (proxy) 类型的仓库链接到 DockerHub 上。再创建一个 docker (group) 类型的仓库把刚才的 hosted 与 proxy 添加在一起。主机在访问的时候默认下载私有仓库中的镜像,如果没有将链接到 DockerHub 中下载并缓存到 Nexus 中。
编写信息完成后选择“Create repository”按钮
6.安全设置
官方介绍:https://help.sonatype.com/repomanager3/formats/docker-registry/authentication
点击Realms菜单 - 把 Docker Bearer Token Realm 移到右边的框中点击Save保存。
添加用户规则:菜单 Security->Roles->Create role 在 Privlleges 选项搜索 docker 把相应的规则移动到右边的框中然后保存。
添加用户:菜单 Security->Users->Create local user 在 Roles 选项中选中刚才创建的规则移动到右边的窗口保存。
7.访问仓储(二选一)
1.Nginx加密代理,使用SSL访问(需要生成证书),略。
2.配置Docker http可信地址
//编辑docker服务端设置
vim /etc/docker/daemon.json
//将下面内容加到配置文件中
"insecure-registries":["http://localhost:5000"]
//重载配置文件
systemctl daemon-reload
//重启Docker
systemctl restart docker
//查看设置是否生效
docker info
8.登录nexus私有仓库,测试是否可以连接成功
//输入admin账号密码
docker login http://localhost:5000
登录后用户信息保存在$HOME/.docker/config.json,如果需要切换账号就清空该文件内容即可。
9.测试
1.制作image
# 拉取hello-world镜像作为示例
docker pull hello-world
# 制作私有镜像
docker tag hello-world localhost:5000/hello-world
2.推送到私有仓库
# 推送到私有服务器
docker push localhost:5000/hello-world
10.查看
nexus还可以管理nuget,maven和其他包,可以作为企业集中资源管理中心。