访问 Docker 中由 .NET Core 控制台应用程序生成的日志文件

Access a log file generated by .NET Core Console Application inside Docker

我是 Docker 世界的新手,无论我在哪里搜索它,似乎都没有适用的解决方案。我知道很多问题都围绕日志记录提出了同样的问题,但我找不到一个基本的、详细的解决方案来帮助我自己应用它。

tldr;

我目前有一个 .NET Core 5.0 控制台应用程序,它使用 log4net 创建一个日志文件到本地目录。我想通过 Windows-based docker 容器将应用程序传输到 运行 并访问 log 文件 while/after 它 运行 查看其结果。

我看到了 docker documentation | volumes 但无法理解如何定义和稍后访问日志文件。

是这样吗?我应该在我的申请中有什么不同的定义?

可能这与更改您的应用程序中的任何内容无关,您只需要确定您的日志在容器中存储的目录并在主机部分附加一个卷或绑定一个挂载到它。因此,您可以:

  • 创建一个卷,并在“docker 运行”期间将其与存储日志的容器内的目录相关联。可以使用 Docker 管理卷,这使其成为首选选项。通过利用它们,您可以例如键入“docker inspect some-volume-name”以找出在主机文件系统中您可以从卷中看到文件的位置,在这种情况下是您的日志。

  • 进行绑定挂载,这意味着您正在将目录从主机映射到容器中的目录。此选项非常简单,但您会失去所有卷的功能。

带卷的路径

正在创建一个 docker 卷。

docker volume create logs-from-net-app

正在检查卷以找出可以找到其内容的位置。

docker volume inspect logs-from-net-app

正在将其附加到容器。

docker run --mount type=volume,source=logs-from-net-app,target=//c/path/to/logs "hello-world"

安装绑定的路径

在 docker 运行

期间进行绑定安装
docker run --mount type=bind,source=C:\logs,target=//c/path/to/logs "hello-world"