Jenkins+Docker+Harbor全链路CI/CD重温笔记

前言

大环境不好,公司业务量也下降了。几个大项目都延期了,该上线的都online了,能先准备的基本都准备了,应该也再没有技术创新落地的点了。基本其他操作就开始了,实在是没有用武之地了,不如留下美好。

今天纯粹是笔记。

docker磁盘占用清理

注意:清理前备份重要容器/数据!运行中的容器会中断。

如果出现"出现open /var/lib/docker/tmp/xxx: no space left on device",那就是要清理了,或者加盘。

  • 停止所有容器(避免数据丢失)
bash 复制代码
docker stop $(docker ps -q) 
  • 删除所有停止的容器(释放容器层空间)
bash 复制代码
docker container prune -f    # -f 强制,不问你
  • 删除未使用的镜像(镜像超级占空间)
bash 复制代码
docker image prune -a -f     # -a 删除所有未用镜像,-f 强制
  • 删除未使用的卷(Volumes)(数据持久化卷常堆积)
bash 复制代码
docker volume prune -f       # 删除所有未用卷
  • 清理构建缓存(Build Cache 常吃大头)
bash 复制代码
docker builder prune -a -f   # 删除所有构建缓存
  • 一键全清理(懒人福音,释放最多空间)
bash 复制代码
docker system prune -a -f --volumes

-a:删除所有未用资源

--volumes:连卷一起删

警告:这会删掉所有停止的容器、未用镜像、卷、缓存!运行前确认。

  • 检查清理效果
bash 复制代码
docker system df
df -h
复制代码
应该看到可用空间大幅增加!

预防未来 100%(超级实用)

  • 定期清理:每周跑一次 docker system prune -f

  • 设置自动清理:在 Dockerfile 或 compose 文件里加 --no-cache 构建镜像。

  • 监控工具:安装 docker stats 或 watch -n 10 "docker system df" 实时看空间。

  • 限制镜像大小:用 docker image prune 的 cron 任务(比如 crontab 加 0 0 * * * docker system prune -f)。

拉取镜像报源的问题

  • Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

    首先要说的是国内很多镜像源可能用着用着就停了,所以docker引擎的全局镜像源可能得过段时间就问问AI,会告诉你最新的。

  • 更换源

bash 复制代码
vim /etc/docker/daemon.json

会看到

yaml 复制代码
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://hub-mirror.c.163.com",
    "https://docker.1ms.run",
    "https://mirror.ccs.tencentyun.com",
    "https://docker.mirrors.ustc.edu.cn"
  ],
  "insecure-registries": ["192.168.0.36:8090"],
  "debug": false
}
  • mirrors就是要修改的地方,这里也并不是配置的越多越好的哦。

  • 如果说懒得改,那你还是可以自己一个个先pull下来的,然后你再启动的时候docker-compose后面带--ignore xx忽略就行

bash 复制代码
docker-compose pull --ignore-pull-failures && \
docker-compose up -d

jenkins通过命令登录harbor报https异常

我是jenkinsfile里有登录harbor逻辑。

报错:docker login -u harbor用户名 -p 密码 192.168.0.36:8090,在jenkins容器里,登录docker部署的harbor报错Error response from daemon: Get "https://192.168.0.36:8090/v2/": http: server gave HTTP response to HTTPS client

只需要在/etc/docker/daemon.json的insecure-registries增加harbor的请求地址就行(如上)。

docker里from openjdk异常

  • 修改:FROM eclipse-temurin:21-jdk

这个是可以平替的,而且据说更稳。

jenkins忘记密码处理

我这里其实不是忘记了密码,而是jenkins抽风,自己升级了新版本导致的。反正现象就是原账号密码登录不进去了,我这里是2.528.2版本了。

先声明/usr/local/docker/jenkins_docker/data这个data目录千万不能删除,否则,原先配置的项目啥的都找不回来了。(docker的美妙也在这,不管你cocker-composecocker-compose里拉什么版本的镜像,只要你不删除data,所有东西都还在,不会丢失)

备份并修改 config.xml(一键命令,禁用安全):

备份

bash 复制代码
cp config.xml config.xml.bak
  • 一键把 useSecurity 改成 false(新版 2.5xx 兼容)
bash 复制代码
sed -i 's|<useSecurity>true</useSecurity>|<useSecurity>false</useSecurity>|' config.xml
  • 顺便删掉授权和安全域(彻底无密码,2.5xx 必须的)
bash 复制代码
sed -i '/<authorizationStrategy/,/<\/authorizationStrategy>/d' config.xml
sed -i '/<securityRealm/,/<\/securityRealm>/d' config.xml

注意也可能需要处理users.xml

备份一下(防万一)

bash 复制代码
cp users/users.xml users/users.xml.bak

直接删掉它

bash 复制代码
rm -f users/users.xml

重启容器让修改生效(数据瞬间加载):

bash 复制代码
cd /usr/local/docker/jenkins_docker
docker-compose restart jenkins

浏览器访问: 打开 http://你的服务器IP:8081直接就能进主页了!(无需账号密码)看到你的所有项目都在,完美。

  • 进去后立刻重置(别忘了这一步)点左边 Manage Jenkins → Manage Users(或 People),重新建用户/或者先允许注册。
  • 搞好用户后,再次进去后立刻恢复安全(别忘了,防止别人乱进):
  • 点左边 Manage Jenkins → Security(或 Configure Global Security)
  • 勾选 启用安全(Enable security)
  • 选择 Jenkins' own user database(Jenkins 专有用户数据库)
  • 勾上 Allow users to sign up(允许用户注册) → 保存

最后,发一次版本:

熟悉的success都回来了。

总结

  • 这纯粹就是笔记备忘,也是再一次回顾了容器化部署这一套。
  • 说实话好久没玩这一套了,还是真有点忘记了,很多东西也有更新。
  • 之前很长一段时间没有具体搞容器化自动化部署一套了,因为有专门的大哥搞,我们开发就卷自己的架构、开发能力就行。
  • 我也是信奉专门的人干专门的事,兄弟们都有口饭吃。
  • 最后还不得不说下,离开的运维兄弟还是强啊,这一套还是有点意思。
  • 就是公司的资源太紧张了,磁盘才2T,有点捉襟见肘啊,还是奉劝大家有资源才玩吧。
    好了,就写到这里,希望能帮到大家!
相关推荐
Benszen1 天前
Docker容器化技术实战指南
运维·docker·容器
Hommy881 天前
【开源剪映小助手】Docker 部署
docker·容器·开源·github·aigc
斯普信云原生组1 天前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器
喵了几个咪1 天前
如何在 Superset Docker 容器中安装 MySQL 驱动
mysql·docker·容器·superset
工具罗某人1 天前
docker compose部署kafka集群搭建
docker·容器·kafka
safestar20121 天前
ES批量写入性能调优:BulkProcessor 参数详解与实战案例
java·大数据·运维·jenkins
sbjdhjd1 天前
Docker | 核心概念科普 + 保姆级部署
linux·运维·服务器·docker·云原生·面试·eureka
摇滚侠1 天前
Vmvare 虚拟机安装 Linux CentOS 7 操作系统 一键安装 Docker 1Panel 一键安装 MySQL Redis OpenClaw
linux·docker·centos
comedate1 天前
【OpenClaw】 Open-WebUI Docker 部署连接本地 Ollama 技术文档
docker·ollama·openwebui·openclaw
川trans1 天前
基于 Docker & K8s 的 MySQL 容器化部署与应用关联实践
mysql·docker·kubernetes