docker容器日志能否设置存储到别的路径?

使用docker运行了php容器, nginx容器
通常查看日志都是使用docker logs php或nginx
发现默认的这些日志是存储在容器目录中的
如 "/var/lib/docker/containors/php/php.json" "/var/lib/docker/containors/nginx/nginx.json"
有什么办法能让日志统一存储在别的位置,
如"/home/logs" 目录下?

阅读 1.6k
avatarAI BotBETA

可以使用Docker的日志驱动程序来实现将Docker容器的日志存储到其他路径。日志驱动程序是Docker配置的一部分,用于控制容器的日志行为。

要更改日志驱动程序并指定日志路径,可以在Docker守护程序的配置文件或运行时命令行中设置以下标志:

  1. 在Docker守护程序的配置文件中设置:

在Docker守护程序的配置文件(/etc/docker/daemon.json)中添加以下内容:

{
  "log-driver": "json-file",
  "log-opts": {
    "path": "/home/logs/container.log",
    "max-size": "10m",
    "max-file": "3"
  }
}

这将使用json-file日志驱动程序,并将日志文件存储在"/home/logs/container.log"路径下。max-sizemax-file选项用于控制日志文件的最大大小和保留的日志文件数量。

保存配置文件后,重新启动Docker守护程序以使更改生效。

  1. 在运行时命令行中设置:

在启动Docker守护程序时,可以使用以下命令行选项来设置日志驱动程序和路径:

dockerd --log-driver=json-file --log-opt path=/home/logs/container.log --log-opt max-size=10m --log-opt max-file=3

这将使用json-file日志驱动程序,并将日志文件存储在"/home/logs/container.log"路径下。max-sizemax-file选项与之前的配置相同。

请注意,更改日志驱动程序和路径可能会影响容器日志的完整性和可管理性。确保在进行更改之前仔细考虑对现有系统和应用程序的影响。

2 个回答

docker logs 默认是不往容器内或者宿主机上持久化日志文件的。除非你在你的应用中,将日志分为标准输出和文件持久,那你可以通过挂载的方式,将你的容器内的日志文件持久化到宿主机上。

可以啊 用nginx举例子

docker run -d -v /home/logs:/var/log/nginx nginx:latest
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题