【私服】一步部署 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 自动流程 → 一键完成

相关推荐
Flittly1 分钟前
【AgentScope Java新手村系列】(14)人机交互
java·spring boot·spring
RainCity6 分钟前
Java Swing 自定义组件库分享(十二)
java·笔记·后端
吃饱了得干活16 小时前
Spring Cloud Gateway 微服务网关:路由、断言、过滤器
java·spring cloud
lwx5728018 小时前
探秘InnoDB:搞懂它的内存、线程、磁盘与日志刷盘策略
java·后端
Flynt19 小时前
从Spring Boot 4.0升到4.1,我在Maven和gRPC上栽了跟头
java·spring boot·后端
plainGeekDev20 小时前
Activity 间传值 → Navigation 参数
android·java·kotlin
plainGeekDev20 小时前
onActivityResult → ActivityResult API
android·java·kotlin
Sunia20 小时前
《AgentX 专栏》10-生产部署:3台2C4G云服务器把企业级Agent真正跑起来的完整方案
java·架构
ZhengEnCi21 小时前
J7A-高级Java工程师面试三道灵魂拷问-深度广度与工程素养的终极检验
java·后端
狼爷2 天前
吃透 Java Function 接口,搞定 99% 的 Stream 场景
java·函数式编程