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

相关推荐
程序员黑豆2 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
hey_sml3 小时前
JAVA每日一学---CompletableFuture中thenApply与thenCompose区别详解
java·开发语言
Doraemomo3 小时前
数据结构-环形链表
java·数据结构·链表
萧瑟余晖5 小时前
Java深入解析篇十七之SpringCloud
java·开发语言
是未才5 小时前
从输入 URL 到页面返回:DNS、路由、TLS 与 HTTP 完整链路
java·后端·计算机网络
ttod_qzstudio5 小时前
Java 常用语法极简通关(五):类与对象——字段、方法、构造器、this 与 static
java·开发语言·python
萧瑟余晖6 小时前
Java深入解析篇十七之Spring Security
java·开发语言·spring
不老刘7 小时前
【Java入门】Java服务部署方式全景对比:从java -jar到K8s
java·kubernetes·jar
童槿顏丶8 小时前
docker自动化部署脚本
docker·eureka·自动化
离陌在学C#9 小时前
C# 重载与重写:深入理解面向对象编程的核心概念
java·c#