使用 Docker Compose 升级镜像的正确姿势

使用 Docker Compose 升级镜像的正确姿势

很多人用 Docker Compose 部署应用后,想升级到最新版本时,第一反应是:

“我 docker-compose restart 了,为什么还是旧版本?”

其实这是对 Docker 镜像和容器机制的一个常见误区。今天就带你理清楚升级镜像的正确流程。


1. 镜像 vs 容器:一定要区分清楚

  • 镜像 (Image):相当于应用的“安装包”,包含代码与环境。
  • 容器 (Container):就是基于镜像运行起来的一个“实例”。

镜像更新,并不会自动让现有容器升级。
docker-compose restart 只是 重启容器,不会替换镜像。


2. 正确的升级流程

第一步:拉取新镜像

docker-compose pull

这一步会从远程仓库拉取 Compose 文件里配置的镜像标签(例如 :latest 或某个版本号)。

第二步:用新镜像重建容器

docker-compose up -d

Compose 会检测到镜像有更新,自动删除旧容器,用新镜像创建新的容器。
如果镜像没变,它就会直接复用现有容器。

第三步:验证

查看容器:

docker ps

查看日志确认版本:

docker logs -f <容器名>

3. 删除旧镜像(可选)

升级后旧镜像通常还在本地,可以手动清理:

# 删除未被容器使用的镜像
docker image prune -a

或者针对某个 tag:

docker rmi your-image:oldtag

4. 一键升级脚本

为了更省事,可以写一个小脚本 upgrade.sh

#!/bin/bash
cd /PATH/TO/compose
docker-compose pull
docker-compose up -d
docker image prune -f

赋予执行权限:

chmod +x upgrade.sh

以后执行:

./upgrade.sh

就能完成升级。


5. 常见问题

Q: 为什么拉取时提示 Image is up to date
👉 说明远程仓库里该 tag 的内容和你本地一致,没有更新。

Q: 如何确认镜像确实更新?
👉 可以对比 Digest:

docker images --digests
docker manifest inspect your-image:tag | grep digest

如果 Digest 一致,说明内容没变。


总结

  • docker-compose restart ≠ 升级镜像,只是重启容器。
  • 正确方式:
    docker-compose pull && docker-compose up -d
  • 定期清理旧镜像,保持磁盘干净。
  • 想自动化升级,可以用脚本一键完成。
Docker Compose 中加载镜像通常涉及使用已有的镜像文件(例如 `.tar` 文件)并将其导入到 Docker 环境中,然后通过 `docker-compose.yml` 文件配置服务以使用镜像。以下是具体的操作步骤: 1. **加载镜像** 使用 `docker load` 命令可以从 `.tar` 文件中加载镜像到本地 Docker 环境中。例如: ```bash docker load -i my_image.tar ``` 该命令会将镜像导入到本地镜像库中,可以通过 `docker images` 命令查看已加载的镜像。 2. **编写 `docker-compose.yml` 文件** 在 Docker Compose 中,可以通过 `image` 字段指定已加载的镜像名称,或者使用 `build` 字段指定构建上下文和 Dockerfile 来构建镜像。如果镜像已经加载,则可以直接在服务定义中引用它。例如: ```yaml version: '3' services: my_service: image: my_loaded_image:latest ports: - "8080:8080" ``` 如果需要从 Dockerfile 构建镜像,则可以使用 `build` 字段: ```yaml version: '3' services: my_service: build: . image: my_new_image:latest ports: - "8080:8080" ``` 3. **启动服务** 使用以下命令启动服务,并确保镜像正确加载和使用: ```bash docker-compose up -d ``` 如果需要构建镜像,则可以加上 `--build` 参数: ```bash docker-compose up -d --build ``` 4. **验证服务状态** 可以通过 `docker-compose ps` 查看当前运行的服务状态: ```bash docker-compose ps ``` 这将列出所有服务及其状态,确认服务是否正常运行。 5. **其他相关命令** - **查看镜像信息**:`docker images` - **查看容器日志**:`docker-compose logs` - **停止服务**:`docker-compose down` 通过上述步骤,可以在 Docker Compose 中加载和使用镜像,并通过 `docker-compose.yml` 文件管理多个服务的依赖关系和配置。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我想要身体健康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值