首頁  >  問答  >  主體

如何从本机传送一个目录到docker image中

通过build docker image 添加文件时,需要用到ADD或COPY关键字,但是ADD或COPY后面跟的只能是相对于Dockerfile文件所在的目录的路径的目录或文件,有没有一种方法可以通过绝对路径来传送目录或文件?(貌似docker里面有一个cp命令,但是只能从container中复制文件或目录到本机中,并不能从本机到container中。(为什么??))

伊谢尔伦伊谢尔伦2710 天前700

全部回覆(3)我來回復

  • 高洛峰

    高洛峰2017-04-21 11:17:18

    可以用資料磁碟區功能將主機的目錄掛載到容器裡

    回覆
    0
  • 黄舟

    黄舟2017-04-21 11:17:18

    1. Dockerfile 中 ADDCOPY 指令不能使用絕對路徑,只能使用相對路徑。這點在官方文件中所說的比較清楚https://docs.docker.com/reference/builder/#add 。

      Multiple resource may be specified but if they are files or directories then they must be relative to the source directory that is being built (the context of the build).

    2. 如果不是要把檔案 build 到 image裡,可以透過 run container 的時候透過 -v 參數將 host 檔案或目錄載入/共用到 container 裡。 參考 https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume

    3. 回覆
      0
  • PHP中文网

    PHP中文网2017-04-21 11:17:18

    docker 的cp指令可以從容器往外複製,也可以從本機複製的容器。

    docker cp more.log e7de404c00bd:/tmp/

    docker help cp
    
    Usage:    docker cp [OPTIONS] CONTAINER:PATH LOCALPATH|-
        docker cp [OPTIONS] LOCALPATH|- CONTAINER:PATH
    
    Copy files/folders between a container and your host.
    Use '-' as the source to read a tar archive from stdin
    and extract it to a directory destination in a container.
    Use '-' as the destination to stream a tar archive of a
    container source to stdout.

    回覆
    0
  • 取消回覆