Подтвердить что ты не робот

Как управлять зависимостями изображения докеров (поддержка)

Используя докеры, вы можете создавать изображения на основе других изображений очень красиво. Например, вы можете сделать образ Java-jdk7 (на основе последней версии Ubuntu LTS) и на основе этого создать изображения для поиска изображений и tomcat7 (оба из которых нуждаются в java).

Итак, если я не помещаю свои изображения, я получаю следующее (извлечение docker images):

╔══════════════════════╦════════╦══════════════╗
║      REPOSITORY      ║  TAG   ║      ID      ║
╠══════════════════════╬════════╬══════════════╣
║ ubuntu               ║ 12.04  ║ 8dbd9e392a96 ║
║ quintenk/jdk7-oracle ║ latest ║ 8928245086f4 ║
║ quintenk/tomcat7     ║ latest ║ 995cdb2cbfa8 ║
║ quintenk/elastics    ║ latest ║ 123abc456ef2 ║
╚══════════════════════╩════════╩══════════════╝

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

  • Если я обновляю образ jdk (например, apt-get upgrade), я полагаю, что я не искажаю зависимые изображения? Однако я также предполагаю, что дерево зависимостей не так, как вы ожидали бы. [ОБНОВЛЕНИЕ: я воспроизвел это, так что см. Мой собственный ответ ниже]
  • Если верно 1, есть ли способ, которым я могу иметь зависимые изображения, как устаревшие, и (надеюсь) их перестроить?

Или можно ли пометить контейнеры с номером версии и вручную перестроить и перераспределить все зависимости с помощью увеличенных тегов номера версии? Это означало бы, что Dockerfiles необходимо будет изменить для обновления.

UPDATE: Я нашел следующее изображение на сайте докера в своей презентации . Однако я не совсем уверен в том, как это сделать (особенно с зависимостями от других изображений, как я описал).

Update flow for docker containers

4b9b3361

Ответ 1

Это отличный вариант использования. Отправьте запрос на повышение на странице Docker.

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

Ответ 2

В ответ на

Если я обновляю образ jdk (например, apt-get upgrade), я полагаю, что я не искажаю зависимые изображения? Однако я также предполагаю, что дерево зависимостей не так, как вы ожидали бы.

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

docker dependency tree

Ответ 3

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