首页 > 解决方案 > 在没有原始 Dockerfile 的情况下更新 docker 映像

问题描述

我正在开发在 docker 映像内的 ec2 服务器上运行的 Flask 应用程序。

旧的开发人员似乎已经删除了原始的 Dockerfile,我似乎找不到任何关于将我的更改推送到没有原始文件的 docker 映像的说明。

我可以使用以下方法手动复制我的更改:

docker cp newChanges.py doc:/root/doc/server_python/

但我似乎找不到重新启动烧瓶的方法。我知道这不是理想的解决方案,但这是我唯一的想法。

标签: docker

解决方案


有一种方法可以添加newChanges.py到现有图像并使用新标签提交该图像,因此如果您遇到任何问题,您将有一个备用选项。

假设你运行 alpine 官方镜像并且没有 DockerFile

每次重新启动图像时,您都不会拥有newChanges.py

docker run --rm -name alpine alpine

在图像内部使用ls可查看在 Dockerfile 中创建的现有文件的列表。

docker cp newChanges.py alpine:/

运行ls并验证您的文件是否已复制

下一步

要将这些更改提交到正在运行的容器,请执行以下操作:

Docker ps

获取容器 ID 并运行:

docker commit 4efdd58eea8a updated_alpine_image

现在运行您的 alpine 映像,您将看到更新后的更改,如假设

docker run -it updated_alpine_image

这就是您将在具有 DockerFile 的 update_alpine_image 中看到的内容 在此处输入图像描述

这是您可以从现有图像重建图像的方式。您也可以尝试@uncletall 回答。


推荐阅读