Ответ 1
По-прежнему существует хотя бы одна проблема, связанная с утечками памяти с журналами: https://github.com/docker/docker/issues/9139
У меня есть следующие настройки:
STDERR
в машине с оперативной памятью 600 МБ.
Я также периодически усекаю логи по адресу:
/var/lib/docker/containers/CID/CID-json.log
как предложено здесь, чтобы избежать 100% дисковых сценариев.
Проблема
Демон Docker запускается с низким использованием памяти, изначально 1%, и медленно увеличивается до 40% после 2 дней работы контейнера.
Ссылка
Утечка памяти демона Docker обсуждалась в этой проблеме и этой проблеме. Но оба они теперь закрыты, говоря, что они слились в коммите. Я использую последнюю основную версию Docker (Docker версии 1.4.0, сборка 4595d4f), но все еще сталкиваюсь с монотонно возрастающей проблемой использования памяти.
ОБНОВЛЕНИЕ: я сделал этот эксперимент: просто запустите процесс bash в контейнере, распечатайте много строк в STDERR, использование памяти процесса демона docker очень быстро ускоряется
Docker выполняет некоторую буферизацию журнала и не освобождает память, даже если основной файл журнала (/var/lib/docker/containers/CID/CID-json.log
) очищен?
Там, видимо, нет способа очистить журналы. Будет ли этот коммит решить эту проблему для длительных задач?
Я не знаю, почему использование памяти docker daemon продолжает расти. Как мне отладить эту проблему?
По-прежнему существует хотя бы одна проблема, связанная с утечками памяти с журналами: https://github.com/docker/docker/issues/9139
Возможно, это не то, что вы ищете, но я обычно запускаю задание cron для перезапуска контейнеров через определенное количество времени каждый день. Это гарантирует, что контейнер имеет достаточное количество оперативной памяти все время, а также я обычно ограничиваю максимальное использование танка контейнером при их создании.
Контейнеры занимают всего несколько секунд, чтобы перезапустить и обслуживать данные, а если вы не используете службу высокой доступности и можете позволить себе простоя в несколько секунд, подумайте о перезапуске контейнера (при условии, что у вас нет постоянных томов).
Однако, если вы найдете решение своей проблемы, сообщите нам об этом.
docker rm $(docker ps -a -q)
docker rmi --force $(docker images -q)
docker system prune --force
Нужно быть пользователем root.
systemctl stop docker
rm -rf /var/lib/docker/aufs
apt-get autoclean
apt-get autoremove
systemctl start docker