在Azure容器实例中运行Linux容器时出错:无法打开日志文件“ / var / log / pods /.../ <容器名称=“”> _ 0.log”

时间:2019-04-09 06:23:44

标签: azure-container-instances

我正在Linux容器中运行.NET Core应用程序。

容器在本地运行良好,但是在Azure容器实例中运行时,它将立即停止。

容器的日志文件如下所示(使用Get-AzContainerInstanceLog检索):

failed to open log file "/var/log/pods/336d7870-5a8e-11e9-925e-000d3a0ddc4a/test-1_0.log": 
open /var/log/pods/336d7870-5a8e-11e9-925e-000d3a0ddc4a/test-1_0.log: no such file or directory

编辑:

我以前从未遇到过提到的文件或pods之前的/var/log/pods/336d7870-5a8e-11e9-925e-000d3a0ddc4a/test-1_0.log路径,而且我也不知道OS和/或Docker的哪个部分需要它。

该日志文件和路径不是我在容器中运行的应用程序所使用的东西(它直接记录到控制台,并且如上所述,在我的Windows本地Docker的Linux容器中运行良好)。

Google表示它可能与Kubernetes有关,但是我并不是在“主动”使用Kubernetes(即Azure容器实例可能会在后台使用它,但这不是我作为用户使用的东西) ACI知道)。 很抱歉,错误说明不清楚,我将尝试重新措辞。

2 个答案:

答案 0 :(得分:1)

就我而言,我先前已经安装了tini并将Dockerfile中的入口点设置为/sbin/tini --。这样做之后,可以将Dockerfile的CMD设置为不带引号的基本字符串,例如CMD java -jar myapp.jar

但是在Azure中,您必须将命令设置为字符串段数组:

在YAML中:command: ["java", "-jar", "myapp.jar"]

执行完此操作后,以上错误(“无法打开日志文件”)消失了,我的容器成功启动了。

Azure reference

答案 1 :(得分:0)

问题是我试图将命令行参数传递给容器,而该参数在Azure中不起作用。

我从使用命令行args切换到环境变量,并且一切都像魔术一样工作。

所以对我来说,此错误在容器启动失败时发生。

提供了更好的错误描述,隐藏在Azure门户的选项卡/刀片之一中。