如何正确清除docker集装箱的日志?

我使用docker logs [container-name]来查看特定容器的日志。

有清除这些日志的优雅方法吗?

从这个问题来看,你可以运行一个单线程:

echo "" > $(docker inspect --format='{{.LogPath}}' <container_name_or_id>) 

我不是直接修改docker文件的大爱好者。 您可以让docker自动为您转动日志。 如果您使用默认的json日志logging驱动程序,则使用dockerd的附加标志完成此操作:

 dockerd ... --log-opt max-size=10m --log-opt max-file=3 

您也可以将其设置为daemon.json文件的一部分,而不是修改启动脚本。

truncate -s 0 /var/lib/docker/containers/*/*-json.log

参考: 正在使用的文件截断(Linux)

您不能通过docker命令直接执行此操作。

您可以限制日志大小,也可以使用脚本删除与容器相关的日志。 你可以在这里find脚本示例(从底部阅读): https : //github.com/docker/compose/issues/1083

您可以设置logrotate来定期清除日志。

示例文件在/etc/logrotate.d/docker-logs中

 /var/lib/docker/containers/*/*.log { rotate 7 daily compress size=50M missingok delaycompress copytruncate } 

sudo sh -c“truncate -s 0 / var / lib / docker / containers / / -json.log”