Я новичок в docker
и мире containers
.. Я использую Microsoft servercore
в качестве моего base image
, и мне нужно приложение, установленное на нем, которое я копирую и устанавливаю на image
, и скопируйте некоторые другие файлы помимо. Затем я создаю этот образ и использую его как base image
для другого контейнера, который работает с этими файлами.
Однако секунде container
требуется много времени, чтобы начать выполнять свою работу, что заставило меня задуматься о том, создают ли контейнеры Docker свои базовые образы с нуля при каждом запуске.
Если это так, то могу ли я создать базовый образ, который устанавливается вместе со всем, что мне нужно, поэтому все этапы построения базового образа (копирование файлов, установка и т. Д.) Не выполняются каждый раз он потребляется "дочерним" контейнером?
Если это не так, есть ли причина, по которой дочерний контейнер должен запускаться так поздно?
Какой-нибудь способ проверить, какой шаг выполняется контейнером, возможно?
ОБНОВЛЕНИЕ - Я сделал грубую проверку, удалив один из файлов, скопированных в базовое изображение, и проверив, не создаст ли он проблемы, но это не так, вполне вероятно. контейнер базового образа создается не каждый раз, когда он используется дочерним контейнером, но время, затрачиваемое между Docker Run и выполнением простого пакета, поскольку первый шаг достаточно велик ...
ОБНОВЛЕНИЕ 2 - Для большей ясности ...
DockerFile 1 (создается как тестдокер)
FROM mcr.microsoft.com/windows/servercore
ADD 7z1900-x64.exe /7z1900-x64.exe
RUN powershell.exe -Command Start-Process .\7z1900-x64.exe -ArgumentList '/S /D=c:/' -Wait
Dockerfile 2
FROM testdocker
COPY testbat.bat /testbat.bat
CMD testbat.bat && cmd
Пакетный файл выполнен во втором контейнере
@ECHO ON
dir
pause