如何使用Windows Containers运行RabbitMQ linux Docker镜像?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Windows Containers运行RabbitMQ linux Docker镜像?相关的知识,希望对你有一定的参考价值。

自从Docker for Windows于10月份发布以来,他们为Windows Containers添加了一个Linux内核,以便与Windows Containers并行运行Linux容器。我很难让它运行起来。以下是来自当前Docker Edge rc的更改日志:

现在可以在Windows容器旁边运行LCOW容器(在Windows RS3 build 16299及更高版本上)。在Windows容器模式下使用--platform=linux在Windows上运行Linux Containers。请注意,LCOW仍然是实验性的,它需要守护进程experimental选项。

我正在使用RabbitMQ image的非修改版本。

执行docker run时:

docker run -d --platform=linux --name rabbit1 -e RABBITMQ_ERLANG_COOKIE='SWQOKODSQALRPCLNMEQG' -e RABBITMQ_DEFAULT_USER=rabbitmq -e RABBITMQ_DEFAULT_PASS=rabbitmq -p 15672:15672 -p 5672:5672 rabbitmq:3-management

我没有收到任何错误,容器一启动就停止,日志中包含以下错误:

chmod: changing permissions of '/var/lib/rabbitmq/.erlang.cookie': Operation not permitted

删除cookie参数使其运行几秒钟,直到它在容器日志中:

09:49:48.020 [error] Failed to change mode: eperm
09:49:50.190 [error] Cookie file /var/lib/rabbitmq/.erlang.cookie must be accessible by owner only

这基本上是同一个错误。我尝试将this添加到docker run,但cookie文件是在启动RabbitMQ的过程中创建的。

**在Linux容器模式下,Docker运行良好且花花公子。

环境:

  • Windows 10版本1709
  • Windows PowerShell以管理员身份运行
  • Docker版本18.02.0-ce-rc1,build 5e1d90a
答案

RabbitMQ在LCOW上存在一个已知问题,它在文档中说明:https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containers#known-app-issues

根据微软的说法:

使用docker run -v绑定装载卷...将文件存储在Windows NTFS文件系统上,因此需要对POSIX操作进行一些转换。某些文件系统操作当前已部分或未实现,这可能会导致某些应用程序不兼容。

以上是关于如何使用Windows Containers运行RabbitMQ linux Docker镜像?的主要内容,如果未能解决你的问题,请参考以下文章

Windows Server 2016 Modern Application Platform Features -3: Containers

关于Docker中的Images与Containers

docker import with Docker for Windows using Linux containers no space left on device error with Stor

如何查看windows系统的详细版本号

无法从“src\containers\Login.js”解析“firebase”

在 IBM Containers 上运行 MobileFirst 服务器