前言
大环境不好,公司业务量也下降了。几个大项目都延期了,该上线的都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,有点捉襟见肘啊,还是奉劝大家有资源才玩吧。
好了,就写到这里,希望能帮到大家!