修改泊坞窗图像
我最近开始在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命令可以用来编辑和保存文件。