我正在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知道)。 很抱歉,错误说明不清楚,我将尝试重新措辞。
答案 0 :(得分:1)
就我而言,我先前已经安装了tini
并将Dockerfile中的入口点设置为/sbin/tini --
。这样做之后,可以将Dockerfile的CMD设置为不带引号的基本字符串,例如CMD java -jar myapp.jar
但是在Azure中,您必须将命令设置为字符串段数组:
在YAML中:command: ["java", "-jar", "myapp.jar"]
执行完此操作后,以上错误(“无法打开日志文件”)消失了,我的容器成功启动了。
答案 1 :(得分:0)
问题是我试图将命令行参数传递给容器,而该参数在Azure中不起作用。
我从使用命令行args切换到环境变量,并且一切都像魔术一样工作。
所以对我来说,此错误在容器启动失败时发生。
提供了更好的错误描述,隐藏在Azure门户的选项卡/刀片之一中。