修改泊坞窗图像

我最近开始在docker工作。 我已经下载了一个docker镜像,我想以某种方式改变它,这样我就可以将文件夹中的内容从我的本地复制到该镜像中,或者可以编辑镜像中的任何文件。

我想如果我可以以某种方式提取图像,做更改,然后创build一个图像。 不知道它是否会像那样工作。 我试图寻找的select,但无法find一个有前途的解决scheme。

当前图像的Dockerfile有点像这样:

FROM abc/def MAINTAINER Humpty Dumpty <@hd> RUN sudo apt-get install -y vim ADD . /home/humpty-dumpty WORKDIR /home/humpty-dumpty RUN cd lib && make CMD ["bash"] 

注意: –我正在寻找一种简单而干净的方式来更改现有的图像,而不是创build一个新的图像的变化。

首先,我不会推荐搞乱其他图像。 如果你能创造自己的话会更好。 前进,您可以使用copy命令从主机添加文件夹到泊坞窗图像。

  COPY <src> <dest> 

唯一需要注意的是<src>path必须位于构build的上下文中; 你不能COPY ../something /something ,因为../something /something的第一步是将上下文目录(和子目录)发送到docker守护进程。

 FROM abc/def MAINTAINER Humpty Dumpty <@hd> RUN sudo apt-get install -y vim // Make sure you already have /home/humpty-dumpty directory // if not create one RUN mkdir -p /home/humpty-dumpty COPY test /home/humpty-dumpty/ // This will add test directory to home/humpty-dumpty WORKDIR /home/humpty-dumpty RUN cd lib && make CMD ["bash"] 

您不会更改现有图像,图像被标记为校验和并被视为只读。 使用图像指向文件系统上相同文件的容器,在容器的RW层上添加容器,因此取决于图像是否保持不变。 层caching也增加了这种依赖性。

由于分层文件系统和caching,创build一个新的图像,只有你的一个文件夹添加将只添加一个图层添加,而不是一个新的图像的完整副本。 因此,简单/干净/正确的方法是使用Dockerfile创build一个新的映像。

我想你可以使用docker cp命令来更改从Docker镜像构build的container ,然后提交更改。

这里有一个参考,

docker cp指南: https : //docs.docker.com/engine/reference/commandline/cp/

docker提交指南: https : //docs.docker.com/engine/reference/commandline/container_commit/

请记住, docker image只是一个准备,所以你不能做任何改变。 唯一的办法是修改你的docker文件并重新创build镜像,但是在这种情况下,你将丢失数据(如果没有安装在docker volume )。 但是,您可以对container进行更改,但这只是未准备好的。

由于现有的docker图像不能改变,我所做的是我创build了一个新的docker图像docker文件,基于我的原始docker图像的内容,并修改它在新的图像包括本地testing文件夹。 这个链接是有帮助的build立你自己的图像 – Docker文档

 FROM abc/def:latest 

docker文件中的上面这行代码告诉Docker您的映像基于哪个映像。 所以,从父图像的内容被复制到新的图像

最后,为了在本地驱动器中包含testing文件夹,我在我的docker文件中添加了下面的命令

 COPY test /home/humpty-dumpty/test 

并在该新图像中添加了testing文件夹。

以下是用于从现有图像创build新图像的dockerfile。

 FROM abc/def:latest # Extras RUN sudo apt-get install -y vim # copies local folder into the image COPY test /home/humpty-dumpty/test 

更新: –为了编辑正在运行的docker镜像中的文件,我们可以使用通过上面的docker文件安装的vim编辑器来打开这个文件

 vim <filename> 

现在,vim命令可以用来编辑和保存文件。