Простой способ извлечь выгоду из кэша слоя изображения - создать базовое изображение только с первым слоем.
Затем используйте FROM
в других ваших Dockerfiles.
Таким образом, дисковое пространство будет сэкономлено, так как несколько изображений будут использовать один и тот же слой, а сборка будет быстрее.
База файлов Docker:
FROM scratch
ADD ./system.tar.gz /
docker build -f Dockerfile-base -t base .
Dockerfile-1:
FROM base
COPY ./somefiles /
docker build -f Dockerfile-1 -t image1 .
Dockerfile-2:
FROM base
COPY ./otherfiles /
docker build -f Dockerfile-2 -t image2 .
Рекомендации по написанию Dockerfiles. § Использование кэша сборки [117 ]
Этот озадачил меня для в течение приблизительно 30 минут.
Прежде всего, Вам, вероятно, нужна декларация контроля учётных записей, встроенная в Ваше приложение (, как предложено здесь ). Что-то вроде этого:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
, Во-вторых (и это - бит, я застрял на), когда Вы запускаете свое приложение под отладчиком, оно создает Ваш процесс в объекте задания. То, которое Ваш дочерний процесс должен смочь к отходу до Вас, может присвоить его Вашему заданию. Так (понятное дело) необходимо указать CREATE_BREAKAWAY_FROM_JOB
во флагах для CreateProcess
).
, Если бы Вы не работали под отладчиком или Вашим родительским процессом, были в задании, этого не произошло бы.