1. Nexus搭建docker私有仓库说明
1.1. 端口分配
Nexus配置docker私有仓库需要两个端口,一个用来上传镜像,一个用来下载镜像。
因此hosted
仓库使用5000端口,用来上传镜像;group
仓库使用8082端口,用来下载镜像。
使用docker命令启动Nexus即可:
docker run -d -p 8081:8081 -p 5000:5000 -p 8082:8082 --name nexus -v /home/data/nexus-data:/nexus-data sonatype/nexus3
1.2. 启用Docker Bearer Token Realm
该功能是为了使用Nexus的用户名密码登录docker。
进入系统后,点击左上角的齿轮图标,接下来依次点击Security->Realms,
将Docker Bearer Token Realm
加入到Active
中。
1.3. 配置仓库
配置docker仓库的过程跟配置maven仓库很相似,只不过要针对docker做些配置。
1.4. 配置proxy仓库
选择docker(proxy),具体配置如下:
- Name:docker-central
- Allow anonymous docker pull: 勾选
- Remote storage: https://registry-1.docker.io(这是docker官方地址)
- Docker Index: Use Docker Hub
1.4.1. 配置hosted仓库
选择docker(hosted),具体配置如下:
- Name:docker-hosted
- HTTP:勾选,输入5000(该端口用来上传镜像)
- Allow anonymous docker pull:是否允许匿名下载镜像,建议不要勾选,因为该仓库存放都是公司内部镜像
1.4.2. 配置group仓库
选择docker(group),具体配置如下:
- Name:docker-public
- HTTP:勾选,输入8082(该端口用来下载镜像)
- Allow anonymous docker pull:勾选,允许匿名下载镜像
- Group:将
docker-central
和dcoker-hosted
加入其中。
1.5. 配置docker
1.5.1. 修改配置文件
因为nexus使用是http,而docker上传下载镜像要使用https访问,所以要配置下,让docker可以接受http访问。
编辑docker配置文件/etc/docker/daemon.json
,增加以下内容:
{
"insecure-registries":["http://127.0.0.1:5000","http://127.0.0.1:8082"]
}
修改完成后,重启docker
# 重启docker
systemctl restart docker
# 查看docker中的Insecure Registries
docker info
1.5.2. 下载镜像
# 使用nexus的用户名密码登录docker,这里使用的是8082端口,是在docker-public中配置的
# 因为docker-public中配置了允许匿名下载镜像,所以也可以不用登录
docker login http://127.0.0.1:8082
# 下载ubuntu镜像
docker pull 127.0.0.1:8082/ubuntu
# 查看镜像
docker images
1.5.3. 上传镜像
# 使用nexus的用户名密码登录docker,这里使用的是5000端口,这是在docker-hosted中配置的
docker login 127.0.0.1:5000
# 将已有镜像打标签,因为要上传到docker-hosted仓库,所以要使用5000端口
docker tag 127.0.0.1:8082/ubuntu:latest 127.0.0.1:5000/ubuntu:test
# 查看镜像
docker images
# 上传镜像
docker push 127.0.0.1:5000/ubuntu:test