【私服】一步部署 Docker 私服

目录

一、部署docker版本

[1.1 创建网络](#1.1 创建网络)

[2.2 创建私服容器](#2.2 创建私服容器)

二、弄个web-UI页面访问

[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 自动流程 → 一键完成

相关推荐
骄马之死6 小时前
SpringMVC + SpringBoot 核心知识点总结
java·spring boot·后端
ggaofeng7 小时前
glusterfs如何在k8s中使用
云原生·容器·kubernetes·glusterfs
暮云星影8 小时前
个人总结 搭建Docker监控
docker·容器·grafana·prometheus
郑洁文8 小时前
基于Spring Boot的流浪动物救助网站
java·spring boot·后端·毕设·流浪动物救助
螺丝钉code8 小时前
JAVA项目 Claude code CLAUDE.md 到底应该怎么写
java·人工智能·claude code
IT策士9 小时前
第49篇 k8s之服务网格入门:Istio 简介
容器·kubernetes·istio
维度攻城狮10 小时前
在Vscode连接的Docker容器中使用codex,并配置DeepSeek模型
vscode·docker·codex
摇滚侠10 小时前
Maven 入门+高深 单一架构案例 54-59
java·架构·maven·intellij-idea
VidDown10 小时前
Webhook 调试器:让第三方回调“原形毕露”
java·开发语言·javascript·编辑器·postman
折哥的程序人生 · 物流技术专研10 小时前
Java 23 种设计模式:从踩坑到精通 | 原型模式 —— 克隆对象,深拷贝与浅拷贝的坑你踩过吗?
java·设计模式·架构·原型模式·单一职责原则