Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在Mac OS X上使用dockerfile添加和复制命令_Macos_Docker - Fatal编程技术网

Macos 在Mac OS X上使用dockerfile添加和复制命令

Macos 在Mac OS X上使用dockerfile添加和复制命令,macos,docker,Macos,Docker,是否可以使用boot2docker在Mac OS X上的Dockerfile中使用添加和复制命令?如果是,怎么做?naive只提供了没有这样的文件或目录 所以,我尝试了两件事: 在Mac上的本地目录(与Dockerfile相同的目录)中保存该文件 将文件插入boot2docker vm上的特定路径,并从该路径使用ADD 两者都不起作用 编辑: 普通Boot2Docker Mac OS X 1.2版干净安装 Dockerfile: FROM centos ADD ./some.rpm /tmp/s

是否可以使用boot2docker在Mac OS X上的Dockerfile中使用
添加
复制
命令?如果是,怎么做?naive只提供了
没有这样的文件或目录

所以,我尝试了两件事:

  • 在Mac上的本地目录(与Dockerfile相同的目录)中保存该文件
  • 将文件插入boot2docker vm上的特定路径,并从该路径使用ADD
  • 两者都不起作用

    编辑:

    普通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
    ,等等。

    在Dockerfile中使用“ADD”需要两件事: 第一:一个目录和你的结构 例如: /my\u docker\u dir/some.rpm

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

    有了这些准备,您可以使用“docker build-t which/youwant”构建您的容器


    有关详细信息,请阅读我认为您应该省略
    /
    ,因此如果
    某些.rpm
    与Dockerfile位于同一文件夹中,请尝试

    ADD some.rpm /tmp/some.rpm
    
    如果文件位于Dockerfile旁边名为
    files
    的子文件夹中,则可以执行以下操作:

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

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

    以下是我的安装程序的版本信息:

    $ 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
    
    date>foo.txt
    
    cat>Dockerfile你能给我们更多关于你的Dockerfile和你的设置的信息吗?@Regan:已添加。谢谢。这里的两个“答案”都忽略了这一点,即在OSX上使用boot2docker。如果你正在使用Mac电脑,那么你可能无法回答这个问题。请不要尝试,因为有Linux答案(很简单)没有帮助。在Mac上是复杂的,因为docker主机不是本地Mac OS。它是在VirtualBox虚拟机中无头运行的linux@16mslipry试图避免在进行Docker构建之前将文件复制到VM。考虑到OSX在生产基础设施中[缺乏]流行,我将假设这是出于本地开发目的,而不是某种持续集成系统。为了绕过我在上一篇评论中所描述的内容,您可能希望尝试将要添加的文件放到服务器上(通过Dropbox或github公开共享),并通过将其添加到Dockerfile将其放入容器中<代码>运行curl-Ohttp://dl.dropboxusercontent.com/.../some.rpm
    。这是你的问题的另一种选择,这就是为什么我没有把它作为答案发布。你需要知道你在问题中问的是什么,并提供一个答案