Docker 升级老翻车?配置和代码拆开就稳了
早期把配置打包进镜像,升级一次配置就乱套一次,最惨一次服务直接起不来。后来我把配置和代码彻底拆开,升级只换镜像,配置挂数据卷还做备份,再接入 CI/CD 自动部署。这篇复盘一套可复用的 Docker 部署升级思路。
支持通配符SSL证书、多域名证书、IP证书。适配ACME接口, 支持Zerossl、Let's Encrypt和Google等渠道。登录已有账号
2026-09-25 04:00:35 Docker 容器运维 镜像管理
做离线部署或者跨环境迁镜像的时候,docker save和docker load是最常用的两个命令。看着语法简单,实际跑线上的时候容易踩不少细节坑,这里整理下常用用法和实际碰到的问题。
docker save用来把本地镜像打包成tar归档,也可以处理成压缩格式,基础用法加-o参数指定输出文件路径,后面跟要保存的镜像名和标签。支持同时打多个镜像,都跟在后面就行。我一开始也以为只能存单个,后来批量迁环境的时候发现可以一起打包,省了不少事。
# 保存单个镜像
docker save -o nginx.tar nginx:latest
# 保存多个镜像
docker save -o multiple_images.tar nginx:latest redis:6.0
对应的加载命令是docker load,用-i指定输入文件。默认会输出每一层的加载信息,部署脚本里嫌输出太吵的话,加个-q走静默模式。也支持管道输入,用cat读文件直接管道过去,写单行命令的时候挺方便。
# 从文件加载镜像
docker load -i nginx.tar
# 静默模式加载
docker load -q -i nginx.tar
# 通过管道加载
cat nginx.tar | docker load
这两个命令处理的是完整的镜像结构,镜像层、标签、元数据都会完整保留,加载出来的状态和保存时完全一致。这点和docker export不一样,export只会导出文件系统层,历史记录和元数据都会丢,别搞混了。如果归档里打了多个镜像,load的时候会一次性全部加载,不用逐个处理。
最常用的场景就是离线环境部署。内网集群没外网权限,没法直接拉镜像的时候,找台能联网的机器打包好,拷到内网节点上再加载,基本是离线运维的常规操作。
# 有网络的机器上打包
docker save -o offline.tar nginx:latest
# 把offline.tar复制到离线机器
# 离线机器上加载
docker load -i offline.tar
另一个场景是镜像备份。
定期把生产环境在用的镜像存成tar包归档,哪天镜像仓库出问题,或者本地镜像误删了,直接load回来就能用,不用重新构建,能省不少排障时间。
# 从备份文件恢复镜像
docker load -i backup-2023.tar
这里其实容易踩坑,很多人第一次用的时候,加载完发现镜像名和标签都是,以为命令执行错了。
其实是因为打包的时候用了镜像ID,或者没指定具体标签,归档文件里没存标签信息。解决也简单,加载完手动打个标签就行。
# 查看镜像ID
docker images
# 为镜像打标签
docker tag <镜像ID> nginx:latest
要是加载失败,先排查两个方向:一是文件有没有损坏,跨机器传输的时候容易出问题,最好校验下完整性;二是目标机器的磁盘空间,镜像解压开比tar包大不少,空间不够会直接中断,提前看一眼磁盘余量。
走一遍完整的验证流程大概是这样,先保存镜像,删掉本地的模拟干净环境,再加载回来确认没问题。
# 保存镜像到文件
docker save -o my_nginx.tar nginx:latest
# 删除本地镜像(模拟环境)
docker rmi nginx:latest
# 从文件加载镜像
docker load -i my_nginx.tar
# 验证加载结果
docker images | grep nginx
日常运维里能自动化的尽量自动化,省得漏事。就像HTTPS证书这块,之前手动申请、到期续签经常忘,出过好几次线上告警。
后来用lcjmSSL,免费申请SSL证书,支持多域名、泛域名和IP证书,自动申请、自动验证、自动部署,还有简洁的API接口,能直接接进现有自动化流程,底层基于Let's Encrypt、Google Trust Services和ZeroSSL这些支持ACME的可信证书颁发机构,不用自己折腾更新,省心不少。
基本常用的内容就这些,都是实际用下来整理的点,新手容易踩的坑基本都覆盖到了。日常用熟了这两个命令,处理镜像迁移和备份都挺顺手的。
上一篇: Flink任务启动报Permission denied,查了一圈是HDFS目录权限没给对
下一篇: DQN 从原理到落地的一些记录
早期把配置打包进镜像,升级一次配置就乱套一次,最惨一次服务直接起不来。后来我把配置和代码彻底拆开,升级只换镜像,配置挂数据卷还做备份,再接入 CI/CD 自动部署。这篇复盘一套可复用的 Docker 部署升级思路。
想快速拥有强大的向量数据库?本指南教你如何在Docker Desktop上零门槛部署Weaviate!从Docker Compose一键启动,到集成text2vec-openai,再到Python/Java客户端轻松连接,我们手把手解决所有配置难题。告别复杂,立即为你的AI语义搜索和推荐系统注入强劲动力!
本文聚焦Docker服务启动失败时常遇的'Start request repeated too quickly'错误。深入剖析其常见诱因:配置文件错误、依赖服务故障或资源冲突。提供一套系统化的排查流程,从日志分析到配置验证,再到依赖和资源检查,并给出调整配置文件、systemd限制及网络策略的具体修复方案,确保容器环境稳定。
Docker无法连接注册表服务器?本文深入剖析网络连接、DNS解析、代理配置与防火墙设置等常见病因。从curl测试连通性到nslookup检查DNS,再到代理与防火墙规则配置,我们提供一套系统化排查与解决流程,助你迅速恢复Docker服务稳定运行,告别注册表连接困扰。