Docker - 如何将文件从图像复制到主机?

新手上路,请多包涵

我的问题与将文件从容器复制到主机的 问题 有关;我有一个 Dockerfile,它可以获取依赖项、从源代码编译构建工件并运行可执行文件。我还想复制构建工件(在我的情况下,它是由 .zip 生成的 sbt dist 在 ‘../target/` 中,但我认为这个问题也适用于罐子、二进制文件, ETC。

docker cp 适用于容器,而不是图像;我是否需要启动一个容器才能从中获取文件?在一个脚本中,我尝试在后台以交互模式运行 /bin/bash ,将文件复制出来,然后杀死容器,但这似乎很麻烦。有没有更好的办法?

另一方面,我想避免在运行 docker save $IMAGENAME 后解压 .tar 文件,只是为了取出一个文件(但这似乎是现在最简单,如果最慢的选项) .

我会使用 docker 卷,例如:

 docker run -v hostdir:out $IMAGENAME /bin/cp/../blah.zip /out

但我在 OSX 中运行 boot2docker 我不知道如何直接写入我的 mac 主机文件系统(读写卷安装在我的 boot2docker 虚拟机中,这意味着我无法轻松共享从与其他人的图像中提取 blah.zip 的脚本。想法?

原文由 Mark 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 325
1 个回答

要从图像中复制文件,请创建一个临时容器,从中复制文件,然后将其删除:

 id=$(docker create image-name)
docker cp $id:path - > local-tar-file
docker rm -v $id

原文由 Igor Bukanov 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题