通过nexus构建一个docker私有仓库记录
参考:https://blog.csdn.net/gengkui9897/article/details/127353727
这里就跟着博客一步步来的,简单讲一下步骤,主要记录搭建过程的问题
Nexus Repository Manager
拉镜像
docker pull sonatype/nexus3:latest
# 或者指定版本
docker pull sonatype/nexus3:3.42.0
[!NOTE]
20250609:这里拉最新的镜像碰到坑了,docker login会出问题,降版本后解决
services:
# nexus
nexus:
image: sonatype/nexus3:3.42.0
volumes:
- /$LJL_DOCKER/volume/nexus-data:/nexus-data #宿主机:容器
- /etc/localtime:/etc/localtime:ro # 让容器的时钟与宿主机时钟同步,避免时间的问题,ro是read only的意思,就是只读。
environment:
- "TZ=Asia/Shanghai"
ports:
- "8081:8081" # web服务使用
- "8082:8082" # http仓库使用
- "8083:8083" # https仓库使用,本例不使用
restart: always
container_name: nexus
networks:
- ljl-network
networks:
ljl-network:
name: ljl-network
driver: bridge
external: true
这样就启动起来了
配置
- 新建一个二进制存储(可选)
- 新建一个docker仓库(hosted)并配置
- 创建realms权限
- 创建docker role并赋权(这里在privileges特权这里,只给一个会导致无法推送拉取镜像)
- 添加用户
Docker
配置
修改/etc/docker/daemon.json
{
"registry-mirrors": [
"https://dofaorfy.mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://ccr.ccs.tencentyun.com",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"https://docker.registry.cyou",
"http://192.168.1.4:8082",
"https://192.168.1.4:8083"
],
"insecure-registries": [
"192.168.1.4:8082",
"192.168.1.4:8083"
],
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
sudo sudo systemctl daemon-reload
sudo systemctl restart docker
登录
docker login -u cc -p 123456 192.168.1.4:8082
[!NOTE]
我用最新版的会报错,这里nexus降级后没问题了
get “null://127.0.0.1:8082/v2/token?account=cc&client_id=docker&offline_token=true&service=null%3a%2f%2f127.0.0.1%3a8082%2fv2%2ftoken”: unsupported protocol scheme “null”
推送
docker tag brainy:latest 192.168.1.4:8082/brainy:1.0.0
docker push 192.168.1.4:8082/brainy:1.0.0
[!note]
这里如果按照博客的特权只给一个的话,推送不了,全部加上后完成
拉取
docker pull 192.168.1.4:8082/msxk-brainy:1.0.0