Docker удалить контейнер с изменениями - PullRequest
0 голосов
/ 28 февраля 2019

Как я могу удалить контейнер, не удаляя все изменения, которые были сделаны в этом контейнере?

Я уже использовал:

Остановить все работающие контейнеры: docker stop $(docker ps -a -q)

Удалить все остановленные контейнеры: docker rm $(docker ps -a -q)

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Ты не.Все, что вы измените в контейнере Docker, будет потеряно, как только контейнер будет удален.Кроме того, вам необходимо регулярно удалять контейнеры, чтобы изменить такие параметры, как базовый образ (если вам нужен какой-то патч безопасности), параметры сети или переменные среды.

Стандартный шаблон для этого включает две вещи:

  1. Не устанавливайте программное обеспечение и не вносите другие изменения конфигурации в работающий контейнер.Вместо этого напишите Dockerfile, который работает для вас, включите его в систему контроля версий и используйте docker build для создания изображения из него.(Если у вас что-то не так, вы можете легко исправить это и запустить заново; если вам нужно что-то обновить через шесть месяцев, у вас есть письменный отчет о том, что вы сделали.)

  2. Если вашему контейнеру требуется постоянное состояние, начните его с docker run -v или аналогичной опции, чтобы смонтировать каталог хоста или именованный том в контейнер.Хранящиеся там данные переживут контейнер.

Теоретически docker commit может превратить контейнер в изображение, но его использование на самом деле не является наилучшей практикой.Изображения, которые вы создаете таким образом, не могут быть воссозданы или обновлены (опять же, представьте критическое исправление безопасности в базовом базовом образе).В некоторых случаях в фиксированном контейнере даже не будет данных, которые вы хотите сохранить (например, вы не можете с пользой фиксировать контейнер MySQL или PostgreSQL).

0 голосов
/ 28 февраля 2019

Вы можете создать образ докера из вашего контейнера с помощью docker commit.Это изображение может использоваться для запуска новых контейнеров или может быть отправлено в хранилище Docker для дальнейшего использования.

https://docs.docker.com/engine/reference/commandline/commit/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...