如果您查看dockerfiles,通常包含以下行:
sed 's/main$/main universe/' -i /etc/apt/sources.list
我认为很难建立这样的东西。
是否可以启动默认的OS镜像,然后与shell交互输入它,进行一些修改,然后打印出diff(文件系统diff)?
diff应该用作重新创建镜像的dockerfile。
但是也许我错过了一些东西,因为我是docker的新手。
最佳答案
您可以通过多种方式创建docker镜像。
创建新的docker镜像时,我倾向于打开两个窗口。一个用于我的docker run -i -t centos bash
,我在其中编写所有命令以使其以自己想要的方式获得,另一个用于Dockerfile,因此我可以执行任何操作。
当涉及到配置文件时,我将它们放在与镜像中的文件/文件夹匹配的文件/文件夹中。
例如,如果更改/etc/something/file.conf
,则将在etc/something/file.conf
中创建与Dockerfile相同的目录中的文件,然后在执行构建时使用Dockers ADD
命令添加它。
这可以完美地工作,因为我可以使用README.md将所有这些信息保存在git存储库中,其中包含运行/构建镜像所需的信息。
您可以做的另一件事是在完成要创建镜像的更改后运行docker ps -a
,并获取刚刚配置的容器的镜像的docker ID。您可以标记此新镜像,也可以像使用普通docker镜像一样以docker run abc0123 bash
开头。
问题在于,您下次将无法轻松构建它而不带来整个图像。
带有ADD的Dockerfiles是必经之路!
关于containers - 创建Dockerfile交互式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24396342/