Docker 是否会在每次 "child" 容器为 运行 时构建基础映像?
Does Docker build a base image everytime a "child" container is run?
我是 docker
和 containers
世界的新手。我正在使用 Microsoft servercore
作为我的 base image
,并且需要在上面安装一个应用程序,我在 image
上复制并安装,并复制一些其他文件。然后,我构建此映像并将其用作 base image
用于处理这些文件的另一个容器。
然而,第二个 container
需要很长时间才能开始工作,这让我想知道 Docker 容器是否每次都从头开始构建它们的基础镜像 运行.
如果是这种情况,那么我是否可以构建一个基本图像,其中安装了我需要的一切,因此不执行基本图像构建中的所有步骤(复制文件、安装等)每次被 "child" 容器消耗掉?
如果不是这样,那么子容器应该这么晚启动是有原因的吗?
也许有一些方法可以检查容器正在执行哪个步骤?
UPDATE - 我以一种粗略的方式进行了检查,删除了一个复制到基本映像中的文件,并检查它是否会产生问题,但它没有't,所以很可能基础图像容器不会在每次被子容器使用时构建,但是 Docker 运行 和作为第一步执行简单批处理之间花费的时间是相当高...
更新 2 - 为了更清楚...
Docker文件 1(构建为 testdocker)
FROM mcr.microsoft.com/windows/servercore
ADD 7z1900-x64.exe /7z1900-x64.exe
RUN powershell.exe -Command Start-Process .z1900-x64.exe -ArgumentList '/S /D=c:/' -Wait
Docker文件 2
FROM testdocker
COPY testbat.bat /testbat.bat
CMD testbat.bat && cmd
在第二个容器中执行的批处理文件
@ECHO ON
dir
pause
基本映像对于 docker 是只读的,因此 docker 不会在他们每次 运行 时构建基本映像。
但是基础镜像可能有ONBUILD
指令,从官方文档来看它的行为是:
As part of processing the FROM instruction, the downstream builder looks for ONBUILD triggers, and executes them in the same order they were registered. If all triggers succeed, the FROM instruction completes and the build continues as usual.
我是 docker
和 containers
世界的新手。我正在使用 Microsoft servercore
作为我的 base image
,并且需要在上面安装一个应用程序,我在 image
上复制并安装,并复制一些其他文件。然后,我构建此映像并将其用作 base image
用于处理这些文件的另一个容器。
然而,第二个 container
需要很长时间才能开始工作,这让我想知道 Docker 容器是否每次都从头开始构建它们的基础镜像 运行.
如果是这种情况,那么我是否可以构建一个基本图像,其中安装了我需要的一切,因此不执行基本图像构建中的所有步骤(复制文件、安装等)每次被 "child" 容器消耗掉?
如果不是这样,那么子容器应该这么晚启动是有原因的吗? 也许有一些方法可以检查容器正在执行哪个步骤?
UPDATE - 我以一种粗略的方式进行了检查,删除了一个复制到基本映像中的文件,并检查它是否会产生问题,但它没有't,所以很可能基础图像容器不会在每次被子容器使用时构建,但是 Docker 运行 和作为第一步执行简单批处理之间花费的时间是相当高...
更新 2 - 为了更清楚...
Docker文件 1(构建为 testdocker)
FROM mcr.microsoft.com/windows/servercore
ADD 7z1900-x64.exe /7z1900-x64.exe
RUN powershell.exe -Command Start-Process .z1900-x64.exe -ArgumentList '/S /D=c:/' -Wait
Docker文件 2
FROM testdocker
COPY testbat.bat /testbat.bat
CMD testbat.bat && cmd
在第二个容器中执行的批处理文件
@ECHO ON
dir
pause
基本映像对于 docker 是只读的,因此 docker 不会在他们每次 运行 时构建基本映像。
但是基础镜像可能有ONBUILD
指令,从官方文档来看它的行为是:
As part of processing the FROM instruction, the downstream builder looks for ONBUILD triggers, and executes them in the same order they were registered. If all triggers succeed, the FROM instruction completes and the build continues as usual.