我一直听说每个任务都在它自己的容器中运行,在这种情况下说如果有一个Job1产生一些资源作为Job2想要读取的输出(一个典型的流水线工作的情况)所以在这种情况下我想知道如果每个任务在自己的容器中运行,容器中的资源如何可用于另一个容器?</ p>
此外,如果一个Job有多个任务,那么每个任务是否都在自己的新容器中运行?
答案 0 :(得分:7)
每个任务确实在自己的容器中运行。这里的诀窍是,Concourse使用一个名为$$user{uid} = ...;
的内部包,用于超出单个任务容器生命周期的工件持久性。
如果指定任务具有baggageclaim
,则为该输出命名的(或映射到)的目录将作为持久卷而不是临时容器内部文件夹挂载。当您写入该目录时,它将存在于行李提取的内部工作空间中,可以安装到其他容器(当您指定同一构建中的后续任务应使用output
时,会发生这种情况。 output
。
input
步骤以相同的意义产生这些卷;这就是为什么当您对特定资源执行get
时,如果您将该资源的任何后续步骤命名为get
,则该资源的下载位可用。