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

标签 docker boot2docker

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

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

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

我会使用 docker 卷,例如:

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

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

最佳答案

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

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

关于Docker - 如何将文件从图像复制到主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25292198/

相关文章:

jenkins - 如何在Dockerfile中获取主机上组的GID

docker - 如何通过 localhost 连接两个 docker 容器?

ruby-on-rails - docker问题rails Assets 预编译boot2docker

memory-management - 没有足够的内存来运行整个 docker-compose 堆栈

docker - 在 Helm chart values.yaml 中拉取 docker hub 镜像

docker - docker 堆栈中的网络未定义问题

docker - 使用 Docker for windows 将 windows 驱动器卷挂载到 Linux 容器中

mysql - Docker:Mysql在启动后几秒钟后崩溃

heroku - 如何使用Docker在本地设置Heroku应用程序?

windows - Boot2Docker:无法让端口转发工作