Каждая docker run
команда или каждая RUN
команда внутри Dockerfile создает контейнер. Если контейнер больше не работает, его все еще можно увидеть с помощью docker ps -a
.
Стоит ли беспокоиться о наличии огромного списка неработающих контейнеров? Должен ли я выдавать docker rm
на неработающие контейнеры?
Я не уверен, какие потери производительности или памяти / хранилища несут эти неработающие контейнеры.
docker exec
время назад была добавлена команда, см. Docs.docker.com/reference/commandline/cli/#exec - она выполнит команду вне работающего контейнера.Ответы:
Не работающие контейнеры не занимают никаких системных ресурсов, кроме дискового пространства.
Обычно хорошо убирать за собой, но если у вас много их, сидящих без дела, это вообще не должно снижать производительность.
Если вы заметили замедление при выполнении команд докера с большим количеством остановленных контейнеров, это может быть ошибка в докере, и вам следует сообщить об ошибке.
источник
RUN
команды теперь перемещена по адресуВ
docker run
документации описывается, как автоматически очищать контейнер и удалять файловую систему при выходе из контейнера:Выше показано, что по умолчанию контейнеры не удаляются, но добавление
--rm=true
или просто сокращение--rm
будет работать так:При выходе из контейнера он будет автоматически удален.
Вы можете проверить это, перечислив свои докер-контейнеры в одном окне терминала:
А затем в другом окне запустите эту команду, чтобы запустить несколько контейнеров докеров, которые автоматически завершат работу после сна в течение 10 секунд.
источник
-rm
устарела и когда-нибудь будет удалена, используйте--rm
вместо нее.Если вы запускаете контейнер с томом и не используете docker rm -v для его удаления, то после удаления контейнера том не удаляется. Также есть проблема с драйвером хранилища vfs. Если вы забудете очистить, тома будут занимать ваше дисковое пространство.
источник
Чтобы оценить, сколько хранилища используют неиспользуемые контейнеры Docker, вы можете запустить:
--size
: отображать общие размеры файлов (к вашему сведению: объясните столбец РАЗМЕР в docker ps -s и что означает ключевое слово virtual # 1520 ).--filter "status=exited"
: перечислить только остановленные контейнеры .Точно так же вы можете запустить:
docker container ls --filter "status=exited"
Вы также можете использовать команду
docker system df
(введенную в Docker 1.13.0, январь 2017 г.), чтобы увидеть использование диска докера, например:источник
Образ - это моментальный снимок файловой системы и зависимостей или определенного набора каталогов определенного приложения / программного обеспечения. Под моментальным снимком я подразумеваю копию только тех файлов, которые необходимы для запуска этого программного обеспечения (например, mysql, redis и т. Д.) С базовыми конфигурациями в среде контейнера.
Когда вы создаете контейнер с использованием образа, небольшая часть ресурсов вашей системы изолируется с помощью пространств имен и контрольных групп , а затем файлы внутри образа копируются в эту изолированную среду ресурсов.
Следовательно, контейнеры занимают только дисковое пространство. Если есть неиспользуемые контейнеры, вы должны удалить их, но не изображение, поскольку они всегда могут использоваться повторно.
источник