Что означает удаление контейнера? - PullRequest
0 голосов
/ 27 июня 2019

Я пачкаю руки Контейнером и Докером.В мире Docker (или мире контейнеров в целом) я пытаюсь понять, что означает «удаление контейнера».У меня есть ментальная модель контейнера: это запущенный экземпляр изображения.Если контейнер прекратил выполнение, какие ресурсы он потребляет для освобождения?Я могу понять удаление связанных изображений, поскольку они занимают место на диске.Возможно, моя ментальная модель контейнера как «запущенного экземпляра изображения» неверна, и это еще не все.Если бы кто-то мог пролить свет, я был бы очень признателен.

1 Ответ

0 голосов
/ 27 июня 2019

Вы почти у цели. В Docker при запуске контейнера демон docker монтирует слои изображений с помощью unionfs. Он добавляет слой поверх слоев изображений, чтобы отслеживать изменения, которые происходят внутри этого контейнера. Скажем, записан файл журнала, который отслеживается как часть этого слоя.

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

Когда контейнер работает, он потребляет процессор, память и место на жестком диске, связанные с этим слоем.

Когда контейнер останавливается, процессор и память освобождаются, но пространство на жестком диске все еще используется. (Вы можете проверить остановленные контейнеры, используя docker ps -a; это покажет вам все контейнеры во всех состояниях)

При удалении остановленного контейнера пространство на жестком диске также освобождается. Docker также удаляет все метаданные (когда он был запущен, где находятся его файлы и т. Д.), Связанные с контейнером, когда вы удаляете контейнер.

Чтобы получить больше удовольствия от этого, сделайте это:

docker inspect <image_name>:<tag> и посмотрите его вывод.

docker inspect <containerid> и посмотрите его вывод, здесь containerid должен содержать контейнер, работающий на изображении выше. И посмотрите, сможете ли вы выяснить слои и связать их поперек изображения и контейнера.

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