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

如何将可执行文件从一个Docker容器拷贝到另一容器并运行

容器间传输可执行文件并运行的可行方案

方案1:宿主机中转传输(无需修改容器启动参数,适合临时场景)

  • 先将源容器内的目标文件拷贝到宿主机临时路径:
    docker cp <源容器ID/名称>:<容器内文件路径> <宿主机临时存储路径>
    示例:docker cp app_source:/app/target/demo.jar ./temp_demo.jar
  • 再将宿主机存储的临时文件拷贝到目标容器:
    docker cp <宿主机临时存储路径> <目标容器ID/名称>:<目标容器内存储路径>
    示例:docker cp ./temp_demo.jar test:/demo.jar
  • 若需要从源容器侧触发目标容器内的文件运行操作,可在源容器启动时挂载宿主机Docker套接字:
    启动源容器时添加参数 -v /var/run/docker.sock:/var/run/docker.sock,源容器内安装Docker客户端后,即可直接执行拷贝、运行命令,调用示例:
# 源容器内执行拷贝
docker cp app_source:/app/target/demo.jar ./temp_demo.jar
docker cp ./temp_demo.jar test:/demo.jar
# 源容器内直接触发目标容器运行jar包
docker exec test java -jar /demo.jar

方案2:共享数据卷(适合频繁传输文件的场景,性能更高)

  • 先创建Docker共享数据卷:
    docker volume create shared_transfer_volume
  • 启动源容器和目标容器时,均挂载该共享卷:
    源容器启动添加参数:-v shared_transfer_volume:/shared_dir
    目标容器启动添加参数:-v shared_transfer_volume:/shared_dir
  • 源容器内直接将可执行文件移动到/shared_dir目录下,目标容器可直接读取该目录下的文件,无需额外拷贝操作,直接运行即可。
    该方案无需重复传输文件,适合多容器频繁共享资源的场景

方案3:容器网络直接传输(适合容器网络互通的场景)

若两个容器属于同一网络、网络互通,可直接用内置工具完成文件传输,无需经过宿主机:

  • 目标容器内启动临时文件接收服务,示例用Python内置HTTP服务:
    python3 -m http.server 9000 --directory /opt/target_dir
  • 源容器内将可执行文件上传到目标容器,或者直接从目标容器拉取文件,示例用curl拉取:
    curl http://<目标容器IP>:9000/demo.jar -o /opt/demo.jar
  • 传输完成后直接执行启动命令即可。

注意:可执行文件传输完成后,如果出现权限不足的报错,可先执行chmod +x <可执行文件路径>添加执行权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:39:02