目录
[1.1 创建网络](#1.1 创建网络)
[2.2 创建私服容器](#2.2 创建私服容器)
[2.1 部署web-UI](#2.1 部署web-UI)
[2.2 修复这个已知错误](#2.2 修复这个已知错误)
[四、Jenkins 怎么用?(完整流程)](#四、Jenkins 怎么用?(完整流程))
[4.1 给镜像打标签(指向私服)](#4.1 给镜像打标签(指向私服))
[4.2 推送到私服](#4.2 推送到私服)
[4.3 其他服务器拉取](#4.3 其他服务器拉取)
[五、最终版 Jenkins 前端部署脚本](#五、最终版 Jenkins 前端部署脚本)
前言:一键快速部署私服,快速实现CI/CD。免费、开箱即用、Jenkins 天然支持
一、部署docker版本
1.1 创建网络
这个主要是为了和后面的webui配合 如果你不需要,可以不使用。 或者直接不要这个,直接取修改那个web-ui的已知错误
docker network create registry-net
2.2 创建私服容器
直接上命令
docker run -d \
--name registry \
--network registry-net \
-p 5000:5000 \
--restart=always \
-v /opt/registry:/var/lib/registry \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
registry:2
✅ 私服就启动了!
- 地址:
192.168.1.134:5000 - 存储目录:
/opt/registry - 端口:
5000
二、弄个web-UI页面访问
2.1 部署web-UI
docker run -d \
-p 8899:80 \
--restart=always \
--name registry-ui \
--network registry-net \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-e REGISTRY_TITLE="我的私有仓库" \
-e NGINX_PROXY_PASS="http://registry:5000" \
joxit/docker-registry-ui:latest
访问
http://IP:8899/

2.2 修复这个已知错误
# 进入容器
docker exec -it registry-ui sh
# 备份原配置
cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
# 创建正确的配置
cat > /etc/nginx/conf.d/default.conf << 'EOF'
server {
listen 80;
server_name localhost;
location /v2/ {
proxy_pass http://registry:5000/v2/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
}
}
EOF
# 测试配置
nginx -t
# 重新加载
nginx -s reload
# 退出
exit
# 测试
curl http://127.0.0.1:8899/v2/_catalog
三、配置使用
因为私服是 http 非安全,Docker 默认不让拉,必须加配置:
每台要使用私服的机器都执行:
cat > /etc/docker/daemon.json <<EOF
{
"insecure-registries": ["192.168.1.134:5000"]
}
EOF
重启 Docker:
systemctl daemon-reload
systemctl restart docker
四、Jenkins 怎么用?(完整流程)
4.1 给镜像打标签(指向私服)
docker build -t webui-frontend:latest .
docker tag webui-frontend:latest 私服ip:5000/webui-frontend:latest
4.2 推送到私服
docker push 私服ip:5000/webui-frontend:latest
4.3 其他服务器拉取
docker pull 私服ip:5000/webui-frontend:latest
五、最终版 Jenkins 前端部署脚本
Groovy
pipeline {
agent any
stages {
stage('拉代码') {
steps {
git url: 'github仓库地址', branch: 'master'
}
}
stage('构建镜像') {
steps {
dir('frontend') {
sh 'docker build -t 私服IP:5000/webui-frontend:latest .'
}
}
}
stage('推送到私服') {
steps {
sh 'docker push 私服IP:5000/webui-frontend:latest'
}
}
stage('部署到目标服务器') {
steps {
sshScript remote: [host: '目标服务器IP', user: 'root', credentialsId: '135私钥'], script: '''
docker pull 私服IP:5000/webui-frontend:latest
docker stop webui-frontend || true
docker rm webui-frontend || true
docker run -d \
--name webui-frontend \
--restart=always \
-p 8880:80 \
私服IP:5000/webui-frontend:latest
'''
}
}
}
}
六、解决问题
你现在的问题全部解决
✅ Gitee 大小超限 → 不用传大文件了,镜像走私服
✅ SCP 传文件失败 → 不再传文件,只传镜像
✅ 多服务器部署 → 全部从私服拉取
✅ Jenkins 自动流程 → 一键完成