You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker容器退出前将构建生成的二进制文件复制到宿主机?

解决Docker构建后获取二进制文件的问题

下面是几种可行的解决方法,按需选择:

方法1:使用卷挂载(最推荐)

直接将宿主机目录挂载到容器内,构建时指定二进制文件输出到挂载目录,构建完成后宿主机即可直接获取文件:

docker run --rm -v $(pwd):/output builder /bin/sh -c 'cd /go/project; go build -o /output/main main.go'
  • --rm:容器执行完成后自动删除,避免残留无用容器
  • -v $(pwd):/output:把宿主机当前工作目录挂载到容器的/output目录
  • -o /output/main:指定Go编译输出路径为挂载目录,编译完成后宿主机当前目录会生成main文件

方法2:让容器保持运行后复制文件

先启动容器后台运行,构建完成后让容器保持存活,复制文件后再清理容器:

# 后台启动容器,构建完成后用tail -f保持运行
docker run -d --name temp-builder builder /bin/sh -c 'cd /go/project; go build main.go; tail -f /dev/null'
# 复制容器内的二进制文件到宿主机当前目录
docker cp temp-builder:/go/project/main .
# 停止并删除临时容器
docker stop temp-builder && docker rm temp-builder

方法3:通过标准输出导出文件

将容器内的二进制文件内容输出到标准输出,宿主机直接重定向到本地文件:

docker run --rm builder /bin/sh -c 'cd /go/project; go build main.go; cat main' > main

这种方式无需挂载卷或保留容器,直接通过管道完成文件传输。

内容的提问来源于stack exchange,提问作者gmalesux111

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 03:05:22