关于Docker多阶段构建过程的多个查询

关于Docker多阶段构建过程的多个查询,docker,docker-compose,dockerfile,containers,devops,Docker,Docker Compose,Dockerfile,Containers,Devops,我是Docker的新手,有几件事让我感到困惑。我也没有什么疑问。请在下面找到它们。如果这些问题得到解决,我会很高兴 问题1: 在多阶段构建中,docker如何识别阶段的工件?因为我在许多文章中看到过,人们说COPY-from=0 src dest将从上一个构建阶段复制工件。我的意思是,我们在哪里明确定义了您需要从这个文件夹复制工件?什么定义了阶段的构建输出/构建工件 # Stage 1 FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build WOR

我是Docker的新手,有几件事让我感到困惑。我也没有什么疑问。请在下面找到它们。如果这些问题得到解决,我会很高兴

问题1: 在多阶段构建中,docker如何识别阶段的工件?因为我在许多文章中看到过,人们说COPY-from=0 src dest将从上一个构建阶段复制工件。我的意思是,我们在哪里明确定义了您需要从这个文件夹复制工件?什么定义了阶段的构建输出/构建工件

# Stage 1
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /build
COPY . .
RUN dotnet restore
RUN dotnet publish -c Release -o /app

# Stage 2
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS final
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "Core3Api.dll"]
Q2-COPY-from=build src dest是否从以前的版本或映像复制文件? Q3-通常复制有两个参数,一个是源参数,另一个是 另一个是目的地。上面我们有三个参数, -from=构建src dest。这本书是怎么写的? 问题4-我们是否需要在每个构建阶段设置WORKDIR?因为我 认为每个构建阶段都是在一个新的独立上下文中执行的吗?还是它 使用相同的上下文? 问题5-当Docker移动到时,它在哪里存储以前构建的映像 下一阶段? 我所有的问题都是相互关联的,这就是为什么我把所有的问题都集中在一起。

Docker构建图像;每个映像由一个文件系统和一些附加元数据组成。在多阶段构建Q5的上下文中,每行开始一个新的映像构建,并且这些映像构建的结果是完全正常的映像;在docker images输出中,您可能会看到它们的名称。类似地,因为每个构建阶段都是从之前某个映像的上下文开始的,所以第4季度您确实需要在每个重要的阶段重复WORKDIR,但由于每个阶段都在一个独立的构建上下文中,不同的阶段不一定需要相同的工作目录

Dockerfile复制命令Q3可以使用选项,其方式与在普通shell中使用cp-r from-to的方式大致相同。-from选项Q2命名一个图像;它可以是早期构建阶段,从。。。作为同一Dockerfile中的名称,也可以是任意其他图像。Q1它从映像构建的任何文件系统结果进行复制

从…起竣工 WORKDIR/构建 跑 复制 创建的图像实际上就是此处的快照 从…起 WORKDIR/app 从生成上下文复制src dest 从快照点复制-from=build/build/dir dest2 从该Dockerfile中的第一个映像复制-from=0/build/dir dest3 从另一个映像复制-from=busybox:latest/bin/busybox dest4
太棒了,你把我的观点都说了。这个答案肯定会帮助我为Docker构建我的概念。