【问题标题】:How do I access Windows eventlog of a Docker container如何访问 Docker 容器的 Windows 事件日志
【发布时间】:2017-05-04 02:01:50
【问题描述】:

如何从主机访问 Microsoft Docker 容器的 Windows 事件日志?

我在 Windows Server 2016 下有一个 docker 容器。

容器基于镜像:microsoft/iis

我可以通过以下方式获取容器的 IP 地址:

docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" my-running-site

如何通过 windows 主机上的事件查看器连接到它?

【问题讨论】:

  • 好问题!当然,您可以在容器中使用 powershell 并按预期使用get-eventlog,但是从主机连接到容器意味着容器正在侦听事件日志的外部请求。如果您检查容器的侦听端口,则只有端口 135 (RPC) 侦听,这可能是正确的。下一步是使用docker run -p 135:135... 将该端口暴露给外部,但在我的尝试过程中它不起作用......在 docker 或容器论坛或 GitHub 上发布这个问题怎么样?
  • 我不确定事件日志是否是在容器内进行日志记录的方式。虽然它是 Windows 中的传统工具,但容器的轻量级特性使得重定向到 stdout 和 stderr 成为容器日志记录的更好选择。这还有其他好处,例如将日志分析委托给 logstash 和 elasticsearch 等工具。然后更容易查询多个容器并集中存储日志。还可以重定向到 stdout 和 stderr 让您可以轻松地从主机的命令行运行 docker logs ... 以轻松获取日志。
  • 我不能总是控制记录到哪里。如果我打开端口 135,我会得到“拒绝访问 (5)”。
  • 我目前对你的问题的理解是:是否可以让一个容器内运行的应用程序(如IIS)将事件记录到Windows Event Log中,并从主机使用Windows Event Viewer查看那些事件。我理解正确吗?我也很想知道答案。
  • 我也是。我也很好奇我们怎么做到的?运行一个进程不断将日志写入数据文件夹,并且主机可以访问它呢?

标签: docker windows-server-2016


【解决方案1】:

为容器创建一个 powershell 会话

docker exec -it  <container_id> powershell

然后从容器中,获取最新的事件日志

Get-Eventlog -newest 20 application

上面的命令会帮你找到索引,

(Get-Eventlog -index xxx application).message

【讨论】:

  • 没有工作的朋友。给出“OCI 运行时执行失败:执行失败:container_linux.go:370:启动容器进程导致:执行:“powershell”:在 $PATH 中找不到可执行文件:未知”
  • 容器中是否安装了 PowerShell。如果没有,请尝试使用 bash 或 cmd
  • 我按照上面的步骤,也通过安装powershell解决了这个问题。但是,我无法将包含的 Docker 中的 log.json 文件复制到我在 Windows 上的本地驱动器中。我遵循了这种方法。 kb.sitecore.net/articles/383441
  • 那么,如果可以复制,为什么我不能复制并运行这些命令呢?我在下一页有类似的问题。当我关注它时,您可以发布您的答案。 stackoverflow.com/questions/66055244/…
  • 您是否收到任何解决方案或解决了问题?我尝试了许多不同的方法,但 无法将日志文件复制到我的本地驱动器
【解决方案2】:

Docker 引擎记录到 Windows“应用程序”事件日志,而不是文件。使用 Windows PowerShell 可以轻松读取、排序和过滤这些日志

例如,这将显示最近 5 分钟的 Docker 引擎日志,从最旧的开始。

Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5) | Sort-Object Time 

【讨论】:

  • 我不认为这是一个解决方案,因为你只得到了 Docker 的源,而不是容器内运行的进程。
  • 是的,那些不是 IIS 日志。这在 Azure 中要简单得多。
【解决方案3】:

在 PWSH(Powershell 核心)上:

Get-WinEvent -LogName Application

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 2020-11-05
    • 2017-02-25
    • 2021-01-27
    • 1970-01-01
    • 2017-12-29
    相关资源
    最近更新 更多