Azure container instances 在Azure容器实例中运行Linux容器时出错:无法打开日志文件"/var/log/pods/../<;集装箱名称>_0.log";

Azure container instances 在Azure容器实例中运行Linux容器时出错:无法打开日志文件"/var/log/pods/../<;集装箱名称>_0.log";,azure-container-instances,Azure Container Instances,我正在Linux容器中运行.NET核心应用程序 容器在本地运行良好,但在Azure容器实例中运行时,它会立即停止 容器的日志文件如下所示(使用Get-AzContainerInstanceLog检索): 编辑: 我以前从未见过提到的文件或pods路径(/var/log/pods/336d7870-5a8e-11e9-925e-000d3a0ddc4a/test-1_0.log),我也不知道操作系统和/或Docker需要它 日志文件和路径不是在容器中运行的应用程序所使用的(它直接登录到控制台,如上

我正在Linux容器中运行.NET核心应用程序

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

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

编辑:

我以前从未见过提到的文件或
pods
路径(
/var/log/pods/336d7870-5a8e-11e9-925e-000d3a0ddc4a/test-1_0.log
),我也不知道操作系统和/或Docker需要它

日志文件和路径不是在容器中运行的应用程序所使用的(它直接登录到控制台,如上所述,在本地Docker for Windows安装的Linux容器中运行良好)

谷歌说它可能与之相关,但我并没有“积极地”使用Kubernetes(也就是说,它可能被Azure容器实例隐藏起来使用,但作为ACI的用户,我并没有意识到这一点)。
很抱歉,错误描述不清楚,我将尝试重新表述。

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

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

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


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

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

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

在YAML中:
命令:[“java”、“-jar”、“myapp.jar”]

一旦我这样做了,上面的错误(“打开日志文件失败”)就消失了,我的容器成功启动


您可以连接到实例并检查它是否确实丢失了文件。该文件不存在,我不知道操作系统和/或Docker的哪个部分需要它。谷歌说它可能与Kubernetes有关,但我没有使用Kubernetes(尽管它可能被Azure容器实例隐藏使用)。抱歉,错误描述不清楚,我将尝试重新表述。您找到原因了吗?我也有同样的问题。IIRC问题是我试图将命令行参数传递给容器,但在Azure中无法实现。我从使用命令行args切换到使用环境变量,一切都像魔术一样工作。所以对我来说,这个错误发生在容器启动失败时。我认为提供了更好的错误描述,隐藏在Azure门户的一个选项卡/刀片中。
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