Logo TodTom休闲时光

docker 更新 方法

1. 标准更新流程(推荐)#

这是最常用、最安全的方法。在包含 docker-compose.yml 文件的目录下执行:

  1. 拉取最新镜像docker-compose pull 这会将配置文件中指定的镜像(如 latest 标签或特定版本)下载到本地,但此时容器仍在运行旧版本。
  2. 启动并重建容器docker-compose up -d Docker Compose 会自动对比本地镜像 ID 和容器正在使用的镜像 ID。如果发现镜像已更新,它会自动停止、删除并重新创建受影响的容器。
  3. 清理旧镜像(可选)docker image prune 更新后,旧的镜像会变成“悬空”状态(dangling),占用磁盘空间。执行此命令可以释放空间。

2. 更新特定服务#

如果你只想更新项目中的某一个服务(例如只想更新 nginx 而保持 db 不动),可以在命令后指定服务名称:

docker-compose pull <服务名>
docker-compose up -d --no-deps <服务名>
Bash
docker-compose pull <服务名>
docker-compose up -d --no-deps <服务名>
  • --no-deps 参数确保不会同时重启该服务所依赖的其他服务。

3. 强制重新创建(即使配置没变)#

有时候修改了环境变量或容器外部的某些东西,但镜像没变,Compose 认为不需要更新。此时可以强制重建:

docker-compose up -d --force-recreate

4. 常见问题与注意事项#

注意事项说明
数据持久化确保你的数据存储在 volumes 中。如果数据在容器内部,更新容器时数据会丢失。
镜像标签如果你在 yml 中指定了版本号(如 mysql:8.0.20),单纯执行 pull 不会升级到 8.0.21。你需要修改 yml 文件中的版本号后再执行 up -d
网络中断up -d 过程中容器会重启,通常会有几秒钟的服务中断。
Bash
docker-compose up -d --force-recreate