2016-07-06 2 views
2

Предположим, что есть изображение докеров, кто-то вносит в него изменения, а затем выталкивает его в репозиторий докеров. Затем я снимаю изображение. Есть ли способ затем взять это изображение и запустить контейнер из предыдущего слоя? Запустите версию до внесения изменений.Есть ли способ пометить предыдущий слой в изображении докеров или вернуть фиксацию?

Если я запускаю историю Docker это будет выглядеть примерно так:

docker history imagename:tag 
IMAGE    CREATED    CREATED BY          SIZE    COMMENT 
3e23a5875458  8 days ago   /bin/sh -C#(nop) ENV LC_ALL=C.UTF-8   0 B 
<missing>   8 days ago   /bin/sh -c dpkg-reconfigure locales && loc 1.245 MB 
<missing>   8 days ago   /bin/sh -c apt-get update && apt-get install 338.3 MB 
<missing>   6 weeks ago   /bin/sh -C#(nop) ADD jessie.tar.xz in/  121 MB 
<missing>   6 weeks ago   /bin/sh -C#(nop) MAINTAINER ssss <ad 0 B 
<missing>   9 months ago              0 B 

Кажется, как если бы я мог запустить более раннюю версию, если я выяснить способ хоть как-то помечать или идентифицировать предыдущие слои изображения.

ответ

3

Вы можете, пометив слои слоя изображения, если у вас есть к ним доступ. Как описано here.

В вашем случае, что может случиться, так это то, что с версии v1.10.0 вперед они изменили способ, которым docker engine handles content addressability. Это в значительной степени обсуждается here.

Что это означает, что вы не будете иметь доступ к сборке слоям, если вы построили это изображение в текущей машине или экспортированы и загружены путем объединения:

docker save imagename build-layer1 build-layer2 build-layer3 > image-caching.tar 
docker load -i image-caching.tar 

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

docker save imagename $(sudo docker history -q imagename | tail -n +2 | grep -v \<missing\> | tr '\n' ' ') > image-caching.tar 

Это должно собрать все сборки слоев данного изображения и сохранить их в файл кэша дегтя.

+1

В принципе, для v1.10.0 и пересылки вы не можете пометить предыдущие слои из истории изображения, если не доступен кеш сборки. – jchysk

 Смежные вопросы

  • Нет связанных вопросов^_^