运维|devops|docker|docker私有仓库搭建(nexus)
基于Nexus 3.93 社区版(Community Edition)
主流仓库比较
| 方案 | 核心优势 | 局限性 | 适用场景 |
|---|---|---|---|
| Docker Registry | 部署极其简单,资源占用少 | 功能单一,无UI界面,无用户管理 | 个人学习、小型测试环境 |
| Harbor | 功能强大:支持RBAC权限、漏洞扫描、镜像复制、Web UI | 部署稍复杂,占用资源较多 | 中大型企业生产环境首选 |
| Sonatype Nexus | 一个工具管理所有构建产物(如 Maven, npm, Docker) | Docker 仓库功能相对基础 | 团队已使用 Nexus 管理其他依赖 |
如果Nexus基于docker部署
需要卸载重装,开发8881端口(密码和存储数据会丢失)
重装
docker commit nexus my-nexus-with-data
docker stop nexus
docker rm nexus
docker run -d \
--name nexus \
-p 8082:8081 \
-p 8881:8881 \
my-nexus-with-data
Sonatype Nexus 开启docker
激活 Docker Bearer Token Realm

创建 Docker 专用的 Blob 存储
docker-blob
创建 Docker Hosted 仓库
docker-hosted


验证是否开启
- docker 内部验证
docker exec -it nexus sh
wget -qO- http://localhost:8881/v2/

- 其他服务器验证
curl -v http://192.168.0.68:8881/v2/

打通docker和仓库
sudo nano /etc/docker/daemon.json
增加如下配置
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn"
],
"insecure-registries": ["192.168.0.68:8881"]
}
重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
验证配置是否生效
docker info | grep -A 2 "Insecure Registries"
登录
docker login 192.168.0.68:8881(使用nexus用户名和密码)

推送测试镜像
# 拉取测试镜像
docker pull nginx:alpine
# 打标签
docker tag nginx:alpine 192.168.0.68:8881/nginx:alpine
# 推送
docker push 192.168.0.68:8881/nginx:alpine
拉取测试镜像
# 删除本地镜像
docker rmi 192.168.0.68:8881/nginx:alpine
# 从私有仓库拉取
docker pull 192.168.0.68:8881/nginx:alpine
Nexus Web



