在Mac OS X上使用dockerfile ADD和COPY命令

时间:2014-08-25 16:03:26

标签: macos docker

是否可以使用boot2docker在Mac OS X上的Dockerfile中使用ADDCOPY命令?如果是这样,怎么样?天真就给了No such file or directory

所以,我尝试了两件事:

  1. 在我的Mac上将文件放在我的本地目录(与Dockerfile相同的目录)中。
  2. 将文件扫描到boot2docker-vm上的特定路径并使用该路径中的ADD。
  3. 都没有工作。

    编辑:

    Plain vanilla Boot2Docker Mac OS X 1.2版全新安装。

    Dockerfile:

    FROM centos
    ADD ./some.rpm /tmp/some.rpm
    RUN rpm -Uvh /tmp/some.rpm
    

    我已尝试将some.rpm放在与Dockerfile相同的目录中,我已尝试在/home/docker图片的boot2docker-vm中使用./some.rpm,我尝试过将/home/docker/some.rpm更改为{{1}}等等。

3 个答案:

答案 0 :(得分:0)

要在dockerfile中使用“ADD”,您需要做两件事: 第一:具有您的结构的目录 例如: ./my_docker_dir/some.rpm

第二:my_docker_dir中的有效Dockerfile(必须命名为'Dockerfile')         你的行:'ADD ./some.rpm /tmp/some.rpm'将起作用

准备好后,您可以使用'docker build -t whatever / youwant'来构建容器。

有关详细信息,请参阅https://docker.readthedocs.org/en/v0.6.3/commandline/command/build/

答案 1 :(得分:0)

我相信你应该省略./,所以如果some.rpm与Dockerfile在同一个文件夹中,请尝试

ADD some.rpm /tmp/some.rpm

如果文件位于Dockerfile旁边名为files的子文件夹中,则可以执行

ADD files/some.rpm /tmp/some.rpm

答案 2 :(得分:0)

我做了一个简单的测试用例。

以下是我的设置的版本信息:

$ boot2docker version
Boot2Docker-cli version: v1.4.1
Git commit: 43241cb

$ docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.4
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8

以下是您可以将面食复制到终端的测试用例:

date > foo.txt
cat > Dockerfile <<EOF
  from centos
  ADD foo.txt /datefile.txt
EOF
docker build -t addtest .
docker run -i -t addtest /bin/cat /datefile.txt

如果你使用/ tmp目录它甚至可以工作,虽然我建议反对它,因为它应该在每次启动时被清除。