Propgate меняет базовое изображение на "дочернее", Docker

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

docker run -i -t baseimage               // start up baseimage

<detach while leaving baseimage running>

docker commit <baseimage id> childimage  // new image created from baseimage

docker run -i -t baseimage               // start up baseimage

touch test.txt                           // make some small change

<detach while leaving baseimage running>

docker commit <baseimage id> baseimage   // save base image

docker run -i -t childimage              // start up childimage

ls test.text                             // test.txt isn't there

Я хочу сделать это потому, что у меня было базовое изображение, из которого я создал несколько дочерних изображений. Только после того, как я создал дочерние образы, я понял, что мне нужно установить Java на всех них. Мне было бы намного проще каким-то образом установить Java в базовый образ и передать его "детям", а не проходить через каждый дочерний образ и устанавливать Java.

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

2 ответа

Решение

Работающие Docker-контейнеры относятся к изображениям, из которых они созданы, в типе "экземпляр". Это означает, что вы не можете "распространять" изменения в намерениях. Вам гораздо лучше использовать Dockerfile, чтобы описать, как создавать образы Docker, вместо того, чтобы вручную изменять запущенные контейнеры.

Нет.

Контейнеры эфемерны, вы выбрасываете их и начинаете сначала, а не пытаетесь их залатать.

Вместо этого используйте Dockerfile, чтобы создать изображение для ваших контейнеров. Если вы хотите внести изменения, обновите Dockerfile и замените старый контейнер новой версией.

Другие вопросы по тегам