I am running a container on a VM. My container is writing logs by default to /var/lib/docker/containers/CONTAINER_ID/CONTAINER_ID-json.log file until the disk is full.
Currently, I have to delete manually this file to avoid the disk to be full. I read that in Docker 1.8 there will be a parameter to rotate the logs. What would you recommend as the current workaround?
Docker 1.8 has been released with a log rotation option. Adding:
--log-opt max-size=50m
when the container is launched does the trick. You can learn more at: https://docs.docker.com/engine/admin/logging/overview/
CAUTION: This is for docker-compose version 2 only
Example:
version: '2'
services:
db:
container_name: db
image: mysql:5.7
ports:
- 3306:3306
logging:
options:
max-size: 50m
Caution: this post relates to docker versions < 1.8 (which don't have the --log-opt
option)
Why don't you use logrotate (which also supports compression)?
/var/lib/docker/containers/*/*-json.log {
hourly
rotate 48
compress
dateext
copytruncate
}
Configure it either directly on your CoreOs Node or deploy a container (e.g. https://github.com/tutumcloud/logrotate) which mounts /var/lib/docker to rotate the logs.
Pass log options while running a container. An example will be as follows
sudo docker run -ti --name visruth-cv-container --log-opt max-size=5m --log-opt max-file=10 ubuntu /bin/bash
where --log-opt max-size=5m
specifies the maximum log file size to be 5MB and --log-opt max-file=10
specifies the maximum number of files for rotation.
来源:https://stackoverflow.com/questions/31829587/docker-container-logs-taking-all-my-disk-space