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

如何在docker run命令中挂载容器目录?构建容器源码挂载问询

如何从另一个容器的源码目录运行一次性构建容器

我完全懂你的场景:你需要一个一次性构建容器,它的任务就是读取源码生成输出文件,完成后立刻退出,但麻烦的是源码不在Docker主机上,而是存放在另一个独立容器里。手动复制源码到主机确实能解决,但效率太低,下面给你几个更优雅的解决方案:

方案1:用Docker卷共享源码(最推荐)

Docker卷就是专门用来解决容器间数据共享的,步骤很清晰:

  • 先创建一个专门用来存源码的卷:
    docker volume create source-code-volume
    
  • 把源码容器里的源码同步到这个卷里(假设你的源码容器叫source-container,源码路径是/app/src):
    docker run --rm --volumes-from source-container -v source-code-volume:/target busybox cp -r /app/src/* /target/
    
  • 最后运行构建容器,同时挂载源码卷和主机的输出目录(假设构建容器是build-container,容器内输出路径是/app/output,主机本地输出目录是./local-output):
    docker run --rm -v source-code-volume:/app/src -v ./local-output:/app/output build-container
    

这样构建容器能直接读取卷里的源码,生成的输出会自动同步到主机目录,完全不用手动复制源码到主机,后续如果源码更新了,重复第二步同步卷就行。

方案2:直接挂载运行中源码容器的目录

如果你的源码容器是处于运行状态的,还能更省事——直接让构建容器挂载它的目录:

docker run --rm --volumes-from source-container -v ./local-output:/app/output build-container

⚠️ 注意两点:

  • 源码容器里的源码目录不能是容器的临时存储层(也就是不能是Dockerfile里COPY进去的,除非你确定容器不会被删除),最好是挂载了卷或者绑定挂载的目录,否则容器停止后源码就没了。
  • 构建容器里的构建命令要指向源码容器里的源码路径(比如/app/src),确保能找到源码。

方案3:优化版手动复制(适合一次性操作)

如果只是偶尔做一次构建,不想折腾卷的话,可以优化手动复制的流程:

  • 先把源码从源码容器复制到主机临时目录:
    docker cp source-container:/app/src ./temp-source
    
  • 运行构建容器挂载临时源码目录和主机输出目录:
    docker run --rm -v ./temp-source:/app/src -v ./local-output:/app/output build-container
    
  • 构建完成后删掉临时目录就行:
    rm -rf ./temp-source
    

这个方法简单直接,但频繁操作的话还是卷共享更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:52:38