Docker 缓存查看和导出
在 Docker 环境中,“缓存”通常分为 Docker 系统缓存(镜像层)和 程序运行时缓存。根据您的部署方式,查看方法如下:
Docker 全局缓存位置(系统级)
Docker 的所有镜像、容器、卷和构建缓存默认存储在 Linux 服务器的同一目录下:
- 默认路径:
/var/lib/docker/ - 构建缓存(BuildKit):
/var/lib/docker/buildkit/
您可以运行以下命令查看 Docker 占用的磁盘情况:
docker system df
这款命令会显示镜像、容器和卷分别占用了多少空间。
如何清理缓存(最常用)
如果您觉得缓存太占空间,想清理掉那些不再使用的旧镜像层和构建记录,可以执行:
# 清理所有未使用的构建缓存
docker builder prune
# 彻底清理(包括停止的容器、没用的网络和悬空镜像)
docker system prune
Hugo 的“中间产物”在哪里?在我们的 Dockerfile 架构中:
- 构建时:Hugo 在 Docker 的第一阶段(Stage 0)生成静态文件,这些文件存在于 Docker 内部的临时层中。
- 成品:最终只有 public 文件夹里的内容被拷贝到了 Nginx 镜像中。
- 您的宿主机:您的服务器目录下不会产生额外的缓存文件夹(除非您手动跑了本地 hugo 命令生成的
resources/_gen)。
💡 总结建议:
- 如果您只是想确认网站是否更新:直接看网页即可。
- 如果您是担心硬盘满了:定期运行
docker system prune -f是保持服务器干净的最好方法。 - 如果您想进到容器内部看一眼 Nginx 正在使用的文件:
docker exec -it hugo-personal-blog sh
# 然后在容器内查看
ls /usr/share/nginx/html
进入Docker 容器内部,查看/usr/share/nginx/html内容,需要先“钻进”运行中的容器。
- “钻进”容器,在服务器终端运行以下命令:
docker exec -it hugo-personal-blog sh
- 查看内容,您可以看到 Hugo 生成的所有静态文件:
ls -lh
3。 如何退出,看完了想回到原来的服务器环境,直接输入:
exit
要从运行中的 Docker 容器中把文件复制回服务器宿主机,您可以使用docker cp命令。
复制整个目录 如果您想把容器里 Nginx 所有的 HTML 文件复制到当前文件夹下,运行:
docker cp hugo-personal-blog:/usr/share/nginx/html ./public_backup
hugo-personal-blog:是容器的名字。:/usr/share/nginx/html:是容器内的源路径。./public_backup:是您服务器宿主机的目标路径(会自动创建这个文件夹)。
复制单个文件
如果您只想复制某一篇博文的 HTML 文件(例如index.html):
docker cp hugo-personal-blog:/usr/share/nginx/html/index.html ./my_index.html
💡 为什么需要这个操作?
- 备份:虽然我们建议备份 content 源码,但有时为了排查线上问题,直接把容器里正在运行的编译结果拷贝出来查看最直接。
- 迁移:如果您想在不运行 Docker 的地方托管这些文件(比如直接丢给纯 Nginx 运行),这就是获取最终静态产物最快的方式。 反过来也可以: 如果您在宿主机改了一个文件,想不重启容器直接传进去:
反过来也可以: 如果您在宿主机改了一个文件,想不重启容器直接传进去:
docker cp ./test.html hugo-personal-blog:/usr/share/nginx/html/
(注意:这种方式容器重启后修改会丢失,因为我们的镜像每次启动都会重新构建内容。如果是永久修改,建议修改本地源码后重新跑
./deploy.sh)