首页 > 解决方案 > 我可以将已经存在的 docker 容器导出到 dockerfile 中吗?

问题描述

我相信我可能没有遵循最佳实践,我有点想纠正自己

我从一个项目的 Rust docker 映像开始创建了一个容器。我一直在使用这个容器,更像是一个小型 VM,而不是一个容器。通过 docker 仪表板,我每天早上都会启动它并通过脚本docker -it exec my-container bash或使用docker exec脚本来处理它。自从我从 Rust 映像创建它以来,我已经添加了用户、安装了 crates 和包等。

有没有办法从现有的 docker 容器创建一个 Dockerfile,它将包含所有这些,所以我可以用它来创建这个容器的临时副本来运行特定的作业?

标签: docker

解决方案


不,你不能。由于 Docker 不会在交互模式下跟踪您执行的命令,因此它无法生成包含您的历史记录的 Dockerfile。但是,您可以做的是docker commit将更改保存为图像,或者docker export将容器保存为 tarball,以后可以使用docker import命令将其转换为图像。整个过程如下:

  • CONTAINER ID使用命令从您希望导出的容器中获取docker ps
  • 如果要导出容器:
    • 导出你的容器$ docker export CONTAINERID > img.tar
    • 将容器作为图像导入$ docker import img.tar my-new-image:latest
  • 如果您只想将更改保存为新图像:
    • $ docker commit CONTAINERID my-new-image:latest

推荐阅读