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

相关推荐
憧憬成为java架构高手的小白8 分钟前
langchain4j手敲理解
java·langchain
Nontee42 分钟前
K3s vs K8s:差的不是功能,是交付方式
云原生·容器·kubernetes
10mAh1 小时前
【Java】ArrayList 遍历删除为什么报错?三种写法与漏删复现
java·开发语言·windows
做运维的阿瑞1 小时前
Docker常见故障全方位排查指南
运维·docker·云原生·容器
thefool1122661 小时前
多线程 4
java
木子欢儿1 小时前
Zabbix 7.4 Alpine 版 Docker Compose 部署
android·运维·docker·容器·zabbix
朱包林1 小时前
iTerm2终端配置指南
linux·javascript·python·云原生·容器·kubernetes·云计算
Rain的Java大神之路1 小时前
[特殊字符]8年Java老兵转型AI Agent:90%的人挂在同一个坑,根本不用学Python!(万字实战复盘,建议收藏)
java·数据库·人工智能·后端·python·spring·ai编程
高级程序源2 小时前
springboot大学生体测系统72170-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·django·课程设计
IT研究室2 小时前
最新计算机毕业设计选题推荐-基于spring boot的文学名著分享系统-网站-文档指导-Java-springboot
java·spring boot·课程设计