containers - 创建Dockerfile交互式吗?

标签 containers docker

如果您查看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/

相关文章:

html - 如何将两个 div 水平并排放置?

docker - Docker容器端口6002连接被拒绝

docker - 如何增加docker build的卷大小

docker - 无法使用 Kubernetes 执行器访问 gitlab runner 中的 docker 守护进程

drag-and-drop - 代号一从组件中获取值

c++ - 防止多态容器中的内存碎片

c++ - 由于标准容器中元素的默认初始化导致性能下降

docker - 将文件从基础图像复制到当前建筑物图像

git - Docker 命令在 ARM 上失败

django - Docker Compose ENTRYPOINT 和 CMD 与 Django 迁移