Докер: Можем ли мы повторно использовать слой изображения для создания другого изображения - PullRequest
0 голосов
/ 03 марта 2019

Я уже создал изображение локально, и оно содержит два слоя

$ docker images inspect existingimagename

"RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:e21695bdc8e8432b1a119d610d5f8497e2509a7d040ad778b684bbccd067099f",
                "sha256:3ff73e68714cf1e9ba79b30389f4085b6e31b7a497f986c7d758be51595364de"
            ]
        },

Теперь я создаю другое изображение и хочу сэкономить место.Первый слой предыдущего изображения является основной файловой системой.Поэтому я решил использовать его

FROM  sha256:e21695bdc8e8432b1a119d610d5f8497e2509a7d040ad778b684bbccd067099f
ENV LANG=en_US.UTF-8
CMD ["/usr/bin/bash"]

Затем я пытаюсь создать новый образ

$ docker build -t newimage -f Dockerfile .
Sending build context to Docker daemon  443.5MB
Step 1/3 : FROM sha256:e21695bdc8e8432b1a119d610d5f8497e2509a7d040ad778b684bbccd067099f
pull access denied for sha256, repository does not exist or may require 'docker login'

. Это выдает ошибку.

Итак, как с этим справиться.

1 Ответ

0 голосов
/ 03 марта 2019

Простой способ извлечь выгоду из кэша слоя изображений - создать базовое изображение только с первым слоем.

Затем использовать FROM <base image> в других ваших файлах Docker.

Таким образом, дискпространство будет сэкономлено, так как несколько изображений будут использовать один и тот же слой, а сборка будет выполняться быстрее.

База Dockerfile:

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. § Использование кэша сборки

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...