K8S & Docker 在线换包操作指南

K8S & Docker 在线换包操作指南

在生产环境中,我们时常需要更新正在运行的 Docker 容器镜像。本文将详细介绍如何通过加载新镜像、备份旧镜像、推送新镜像到 Docker Registry,并更新 Kubernetes 部署来实现服务更新。以下是具体的操作步骤和命令。

操作步骤

0. 上传新镜像到本机

首先,将新的 Docker 镜像文件上传到操作机器。

1
2
# 查看上传后的镜像文件
ls

1. Docker 加载新镜像

从镜像文件中加载 Docker 镜像。

1
2
# 加载 Docker 镜像
docker load -i flashsync-server.tar

2. 查看 Docker 相关镜像

列出所有本地 Docker 镜像,并通过 grep 过滤出相关镜像。

1
2
# 查看相关 Docker 镜像
docker images | grep flashsync-server

3. 给老镜像打标签

备份当前正在使用的老镜像,给它打上一个新标签。

注意:192.169.54.103:5000/transwarp/flashsync-server-old:studio-3.3.0-arm64 就是 pods 直接引用的镜像,我们的目的是给新镜像换成这个名称,这样后面 pods 重启拉取镜像就会拉到新的镜像。

1
2
# 给老镜像打标签
docker tag 173af6665b9e 192.169.54.103:5000/transwarp/flashsync-server-old:studio-3.3.0-arm64

4. 删除老镜像的标签

删除老镜像的原始标签,但不删除镜像本身。

1
2
# 删除老镜像的原始标签
docker rmi 192.169.54.103:5000/transwarp/flashsync-server:studio-3.3.0-arm64

再次列出所有相关镜像,确认标签变更。

1
docker images | grep flashsync-server

5. 给新镜像打标签

将新上传的镜像打上符合容器拉取要求的标签。

1
2
# 打标签
docker tag dbb510d95add 192.169.54.103:5000/transwarp/flashsync-server:studio-3.3.0-arm64

6. 推送新镜像到 Docker Registry

将打了标签的新镜像推送到指定的 Docker Registry。

1
2
# 推送新镜像
docker push 192.169.54.103:5000/transwarp/flashsync-server:studio-3.3.0-arm64

7. 在 K8S 中找到目标容器

使用 kubectl 命令找到需要更新的容器。

1
2
# 查找目标容器
kubectl get pods -A | grep flashsync-server

8. 删除需要更新包的容器

删除目标容器,Kubernetes 会自动重新创建一个新的 Pod,并使用最新推送的镜像。

1
2
# 删除目标容器
kubectl delete pod -n center-tenant flashsync-server-zm6hp-0

K8S & Docker 在线换包操作指南
https://hexo.leelurker.com/posts/37109
作者
LeeLurker
发布于
2024年7月4日
许可协议