Используя докеры, вы можете создавать изображения на основе других изображений очень красиво. Например, вы можете сделать изображение 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
), я полагаю, что я не искажаю зависимые изображения? Однако я также предполагаю, что дерево зависимостей не так, как вы ожидали бы. [UPDATE: я воспроизвел это, так что см. Мой собственный ответ ниже) - Если 1 правильно, есть ли способ, которым я могу зависеть от зависимых изображений как устаревших, и (надеюсь) их перестроить?
Или может пойти пометить контейнеры номером версии и вручную перестроить и перераспределить все зависимости с помощью увеличенных тегов номера версии? Это означало бы, что Dockerfiles необходимо изменить для обновления.
ОБНОВЛЕНИЕ: Я нашел следующее изображение на сайте докера в своем presentation. Однако я не совсем уверен в том, как это сделать (особенно с зависимостями от других изображений, как я описал).
Является http://docs.docker.com/docker-hub/builds/#repository-links нужным вам решением? Он восстанавливает все зависимые изображения, если изменения сделаны на их базовых изображениях. –
@WeiChing действительно - это был бы новый ответ. Конечно - это плохо, без автоматического тестирования. – qkrijger