我有一个包含这样的行的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)。
现在,我不想使用该网址。相反,我的本地(主机)机器上的文件是Ubuntu-12.04。问题是,如何将文件从主机操作系统传输到docker镜像?然后,我可以将Dockerfile更改为
FROM ubuntu:14.04
RUN unzip serf.zip -d /bin \
&& rm serf.zip
P.S:目前,我有以下图片
$ 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
答案 0 :(得分:5)
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
ADD
magic来自动解压缩它。 Both approaches have their drawbacks. 答案 1 :(得分:1)
如果您可以将文件放在Dockerfile的同一目录(或子目录)下,则可以使用COPY
。
ADD
会同时为您解压缩,无需unzip
和rm
。
现在,如果你想在项目之间共享serf.zip
文件,链接不会,你需要在运行docker build
之前将它挂载到主机上:
sudo mount --bind /path/to/serf.zip_folder /path/to/Dockefile_folder