将主机操作系统中的文件复制到Docker镜像
我有一个docker文件,其中包含这样一行
FROM ubuntu:14.04 RUN curl -Lso serf.zip https://URL/serf.zip \ && unzip serf.zip -d /bin \ && rm serf.zip
这意味着它下载一个文件并将其解压缩到Linux映像中(这里是Ubuntu-14.04)。
现在,我不想使用该url。 相反,我的本地(主机)是Ubuntu-12.04上的文件。 问题是,如何将文件从主机操作系统传输到泊坞窗图像? 然后,我可以将Dockerfile更改为
FROM ubuntu:14.04 RUN unzip serf.zip -d /bin \ && rm serf.zip
?
PS:目前,我有以下图像
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE <none> <none> 99ca37acd529 39 hours ago 261.2 MB data-analytics dataset 1db2326dc82b 2 days ago 1.742 GB ubuntu 14.04 780bd4494e2f 4 weeks ago 187.9 MB
FROM whatever COPY contextfile containerfile RUN do_thing_to containerfile
在你的情况
FROM ubuntu:14.04 COPY serf.zip serf.zip RUN unzip serf.zip -d /bin \ && rm serf.zip
- 该文件必须在构build上下文中。 通常,这意味着它位于包含Dockerfile的目录下的目录或子目录中。
- 您将不得不创build一个图层来容纳新复制的文件,或者使用
ADD
魔术来自动解压缩它。 两种方法都有其缺点。
如果你确定文件在你的Dockerfile的同一目录(或子目录)下,你可以使用COPY
。
ADD
会同时为你unzip
,不需要unzip
和rm
。
现在,如果你想共享项目之间的serf.zip
文件,链接将不会执行,你需要在运行docker build
之前将其挂载到主机上:
sudo mount --bind /path/to/serf.zip_folder /path/to/Dockefile_folder