目录一、部署docker版本1.1 创建网络2.2 创建私服容器二、弄个web-UI页面访问2.1 部署web-UI2.2 修复这个已知错误三、配置使用四、Jenkins 怎么用完整流程4.1 给镜像打标签指向私服4.2 推送到私服4.3 其他服务器拉取五、最终版 Jenkins 前端部署脚本六、解决问题前言一键快速部署私服快速实现CI/CD。免费、开箱即用、Jenkins 天然支持一、部署docker版本1.1 创建网络这个主要是为了和后面的webui配合 如果你不需要可以不使用。 或者直接不要这个直接取修改那个web-ui的已知错误docker network create registry-net2.2 创建私服容器直接上命令docker run -d \ --name registry \ --network registry-net \ -p 5000:5000 \ --restartalways \ -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-UIdocker run -d \ -p 8899:80 \ --restartalways \ --name registry-ui \ --network registry-net \ -v /etc/localtime:/etc/localtime:ro \ -v /etc/timezone:/etc/timezone:ro \ -e REGISTRY_TITLE我的私有仓库 \ -e NGINX_PROXY_PASShttp://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重启 Dockersystemctl daemon-reload systemctl restart docker四、Jenkins 怎么用完整流程4.1 给镜像打标签指向私服docker build -t webui-frontend:latest . docker tag webui-frontend:latest 私服ip:5000/webui-frontend:latest4.2 推送到私服docker push 私服ip:5000/webui-frontend:latest4.3 其他服务器拉取docker pull 私服ip:5000/webui-frontend:latest五、最终版 Jenkins 前端部署脚本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 \ --restartalways \ -p 8880:80 \ 私服IP:5000/webui-frontend:latest } } } }六、解决问题你现在的问题全部解决✅ Gitee 大小超限 → 不用传大文件了镜像走私服✅ SCP 传文件失败 → 不再传文件只传镜像✅ 多服务器部署 → 全部从私服拉取✅ Jenkins 自动流程 → 一键完成