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

相关推荐
有味道的男人9 小时前
1688 跨境 API:多语言、跨境代采、独立站商品同步方案
java·服务器·前端
兩尛9 小时前
C++多线程,并发
java·开发语言
栀椩9 小时前
Docker 命令速查手册
spring cloud·docker
逆境不可逃9 小时前
Hello-Agents 第二部分-第六章:框架开发实践
java·人工智能·分布式·学习·架构·rabbitmq
我不是8神9 小时前
面试题:Gorutine泄露的条件有哪些?
java·开发语言
爱好物理的一名程序员XiaoK9 小时前
搭建网站时遇到的只显示空白界面
java
AC赳赳老秦9 小时前
OpenClaw与思维导图工具联动:自动生成工作规划脑图、拆解任务节点,适配职场管理
java·大数据·服务器·数据库·python·php·openclaw
吴声子夜歌9 小时前
状态机——枚举实现简单状态机
java·枚举·状态机
Rick19939 小时前
【无标题】
java