Я все еще изучаю докер и AWS, и у меня некоторое время работал процесс докера с хранилищем EBS объемом 50 ГБ, и теперь у меня не хватает места на диске, и в результате докер больше не запускается, когда я перезагружаю свой экземпляр.
Когда я пытаюсь sudo du -h / | grep '[0-9\.]\+G'
Я получил:
1.8G /var/lib/docker/containers/f7cf0...
17G /var/lib/docker/containers/55b7e...
2.8G /var/lib/docker/containers/987b0...
22G /var/lib/docker/containers/726b0...
44G /var/lib/docker/containers
4.3G /var/lib/docker/devicemapper/devicemapper
4.3G /var/lib/docker/devicemapper
48G /var/lib/docker
48G /var/lib
48G /var
0 /sys/bus/mdio_bus/drivers/Generic 10G PHY
50G /
И когда я пытаюсь sudo docker ps -a
Я получил:
Cannot connect to the Docker daemon. Is 'docker -d' running on this host?
Не хочу касаться процесса 726b0 ..., это самое главное. Будет ли возникать проблема, если я удалю файл .log для 55b7e ...? Есть ли более чистый способ сделать это, чем просто удалить файл?
Если вы используете Эластичный бобовый стебель для запуска Docker это может вас заинтересовать.
Я принял команду Йонатана и превратил ее в .ebextensions
cron, которое будет выполняться каждые X часов, и очистить журналы контейнера Docker, чтобы они не накапливались и не засоряли сервер. Мне пришлось изменить его, чтобы использовать tee
чтобы избежать неоднозначное перенаправление ошибка bash.
Просто создайте .ebextensions
каталог в корне вашего репозитория (рядом с Dockerrun.aws.json
) и docker-log-truncate.config
файл внутри него со следующим содержанием:
commands:
add_docker_log_truncate_cronjob:
command: "crontab -l | grep -q 'eb-docker' || (crontab -l ; echo '0 * */6 * * /bin/echo 0 | tee /var/log/eb-docker/containers/*/*.log')| crontab -"
ignoreErrors: true
В этом случае команда будет запускаться каждые 6 дней и очищать журналы контейнера Docker. Обратите внимание, что я не смог обновить свой Elastic Beanstalk этим изменением до тех пор, пока я не отключил все затронутые серверы, вероятно, потому, что Beanstalk требуется некоторое свободное дисковое пространство для развертывания новой версии.
Я успешно выполнил echo '' > /var/log/eb-docker/containers/*/*.log
на рабочем производственном сервере без каких-либо проблем, чтобы обрезать файл журнала размером 5 ГБ.
Вы можете добавить следующий раздел в свой файл запуска Docker:
"logConfiguration": {
"logDriver": "json-file",
"options": {"max-size": "100m", "max-file": "10"}
}
см. документацию для получения более подробной информации: https://docs.docker.com/config/containers/logging/json-file/