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 и замените старый контейнер новой версией.