如何修改Kubernetes运行容器的源代码并生成新镜像避免修改丢失?
操作步骤
1. 导出容器内修改后的源代码
你修改的代码全部存放在容器的/app目录下,直接用kubectl cp命令把整个目录拷贝到本地:
# 替换<your-pod-name>为你实际运行的Pod名称 kubectl cp <your-pod-name>:/app ./voting-app-modified -c voting-app
执行完成后本地会生成voting-app-modified目录,里面就是你修改后的全部代码。
2. 构建并推送新的自定义镜像
- 将你获取到的Dockerfile放到刚才导出的
voting-app-modified目录根路径下 - 执行构建命令,替换镜像名为你自己的镜像仓库地址和自定义标签:
# 示例用dockerhub仓库,可替换为私有镜像仓库地址 docker build -t your-repo/voting-app:modified-v1 .
- 构建完成后推送到镜像仓库,保证Kubernetes集群可以拉取到该镜像:
docker push your-repo/voting-app:modified-v1
3. 更新Deployment使用新镜像
两种常用更新方式二选一即可:
方式1:直接编辑Deployment配置
kubectl edit deployment voting-app-deploy
找到spec.template.spec.containers下的image字段,将原有镜像地址替换为新构建的镜像地址,保存退出后K8s会自动滚动更新Pod。
方式2:用kubectl set命令一键更新
kubectl set image deployment/voting-app-deploy voting-app=your-repo/voting-app:modified-v1
更新完成后验证新Pod运行正常,访问服务确认修改已经生效即可,后续重建Deployment都会保留你的代码修改。
注意事项
以上方法适合临时测试场景,生产环境建议将修改后的代码上传到Git等版本控制系统,通过CI/CD流水线自动构建镜像,保证变更可追溯、可回滚。
内容的提问来源于stack exchange,提问作者Kaio H. Cunha
相关产品推荐
相关产品推荐

