将主机操作系统中的文件复制到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 
  1. 该文件必须在构build上下文中。 通常,这意味着它位于包含Dockerfile的目录下的目录或子目录中。
  2. 您将不得不创build一个图层来容纳新复制的文件,或者使用ADD魔术来自动解压缩它。 两种方法都有其缺点。

如果你确定文件在你的Dockerfile的同一目录(或子目录)下,你可以使用COPY

ADD会同时为你unzip ,不需要unziprm

现在,如果你想共享项目之间的serf.zip文件,链接将不会执行,你需要在运行docker build之前将其挂载到主机上:

 sudo mount --bind /path/to/serf.zip_folder /path/to/Dockefile_folder