Azure container instances 在Azure容器实例中运行Linux容器时出错:无法打开日志文件"/var/log/pods/../<;集装箱名称>_0.log";
我正在Linux容器中运行.NET核心应用程序 容器在本地运行良好,但在Azure容器实例中运行时,它会立即停止 容器的日志文件如下所示(使用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需要它 日志文件和路径不是在容器中运行的应用程序所使用的(它直接登录到控制台,如上
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