在Docker-Compose中禁用一个容器的日志记录

Gre*_*dot 50 docker docker-compose

我有一个使用Docker compose启动的Web应用程序,我想要禁用所有日志记录(或者至少将其打印到syslog而不是文件).

当我的Web应用程序工作时,它可以在启动时快速生成11GB的日志文件,因此这会非常快地占用我的磁盘空间.

我知道普通的docker有运行命令的日志选项,但在我使用的Docker Compose中

Docker-组成

在应用程序文件夹中启动我的应用程序.我如何在我的情况下启用此功能?我没有在网上找到具体案例.

Fux*_*uxi 102

您应该能够使用日志记录功能.尝试将驱动程序设置为"无"

logging:
    driver: none
Run Code Online (Sandbox Code Playgroud)

  • 截至 2021 年 9 月,这仅在使用“docker-compose”命令(注意连字符)时才有效,如果您使用直接集成到 Docker 中的新 compose 命令,即“docker compose up”(请注意,连字符已替换为空格,因为它现在引用 Docker 中的命令而不是 Docker Compose) (8认同)
  • 即使使用 docker-compose,这似乎也不再起作用了。有人有洞察力吗?在 Mac m1 上 (4认同)
  • 我找到了这个解决方案并在今年早些时候使用了它。然而 docker-compose 的行为现在已经改变,“driver: none”在最新的 docker 版本中不再具有这种效果。有关更多详细信息,请参阅[针对 docker-compose 的 PR](https://github.com/docker/compose-cli/issues/1613)。 (3认同)
  • 对文档的链接表示赞赏,但您能否准确解释一下该选项应该如何用于使容器不写入日志?我将驱动程序设置为“none”,但在我的测试运行时,我的 postgres 容器仍然将大量垃圾写入标准输出。很烦人。 (2认同)

Kip*_*ipr 15

不完全是所要求的,但从 2021 年 9 月(在 Compose V2 上)开始,该--attach参数允许选择要侦听的服务。

例如,docker compose up --attach your-service将仅显示your-service.

  • 注意 `--attach` 只会运行 `docker-compose` v1 中指定的容器。您应该安装 compose v2 才能正常工作。请通过运行“docker compose --version”检查您的 compose 版本。如果您想继续使用 v1,请使用[其他答案](/sf/answers/2421439961/)。 (2认同)

sla*_*nje 10

对于快速的配置示例,类似

version: '3'
services:
    'postgres':
        image: postgres:9.6
        logging:
            driver: none 

Run Code Online (Sandbox Code Playgroud)