RabbitMQ Docker容器错误:读取/var/lib/RabbitMQ/.erlang.cookie时出错:eacces

RabbitMQ Docker容器错误:读取/var/lib/RabbitMQ/.erlang.cookie时出错:eacces,docker,docker-compose,rabbitmq,docker-for-windows,docker-desktop,Docker,Docker Compose,Rabbitmq,Docker For Windows,Docker Desktop,我在Windows Server 1709(Windows Server core edition)上从Docker内部运行rabbitmq时遇到问题 我正在使用docker compose创建rabbitmq服务。如果我在本地计算机上运行docker compose,一切正常。当我在windows服务器上运行docker compose(docker已设置为windows上的docker lcow支持)时,我在日志中多次出现上述错误。也就是说,这个错误是: 读取/var/lib/rabbitm

我在Windows Server 1709(Windows Server core edition)上从Docker内部运行
rabbitmq
时遇到问题

我正在使用docker compose创建rabbitmq服务。如果我在本地计算机上运行docker compose,一切正常。当我在windows服务器上运行docker compose(docker已设置为windows上的docker lcow支持)时,我在日志中多次出现上述错误。也就是说,这个错误是:

读取/var/lib/rabbitmq/.erlang.cookie时出错:eacces

值得注意的是,即使我只是手动拉取rabbitmq并使用
docker run-itd--rm--name rabbitmq rabbitmq:3-management手动运行,我也会收到此错误

在容器崩溃和退出之前,我能够猛击容器一小段时间,我看到以下情况:

root@localhost:~# ls -la
---------- 2 root root   20 Jan  5 12:18 .erlang.cookie
在我的本地主机上,权限如下所示(正确):

我不明白为什么服务器上的权限结构被破坏

这是否可能是具有Docker for Windows的Windows服务器1709上的LCOW支持的问题?还是rabbitmq的问题

此处使用的docker compose文件仅供参考:

version: "3.3"
services:

  rabbitmq:
    image: rabbitmq:3-management
    container_name: rabbitmq
    hostname: localhost
    ports: 
      - "1001:5672"
      - "1002:15672"
    environment:
      - "RABBITMQ_DEFAULT_USER=user"
      - "RABBITMQ_DEFAULT_PASS=password"
    volumes:
      - d:/docker_data/rabbitmq:/var/lib/rabbitmq/mnesia
    restart: always
这里是发生错误的docker信息,仅供参考

docker信息

Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 1
Server Version: 17.10.0-ee-preview-3
Storage Driver: windowsfilter (windows) lcow (linux)
 LCOW:
Logging Driver: json-file
Plugins:
 Volume: local
 Network: ics l2bridge l2tunnel nat null overlay transparent
 Log: awslogs etwlogs fluentd json-file logentries splunk syslog
Swarm: inactive
Default Isolation: process
Kernel Version: 10.0 16299 (16299.15.amd64fre.rs3_release.170928-1534)
Operating System: Windows Server Datacenter
OSType: windows
Architecture: x86_64
CPUs: 4
Total Memory: 7.905GiB
Name: ServerName
Docker Root Dir: D:\docker-root
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: true
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
docker版本

Client:
 Version:      17.10.0-ee-preview-3
 API version:  1.33
 Go version:   go1.8.4
 Git commit:   1649af8
 Built:        Fri Oct  6 17:52:28 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.10.0-ee-preview-3
 API version:  1.34 (minimum version 1.24)
 Go version:   go1.8.4
 Git commit:   b8571fd
 Built:        Fri Oct  6 18:01:48 2017
 OS/Arch:      windows/amd64
 Experimental: true

它看起来像是在windows上安装host dir,而不是在windows上安装。您能提供您在linux上使用的撰写文件吗?安装时请仔细观察。这是bot-rabbit的问题,我们没有linux机器,因此没有linux编写文件。尽管
/docker\u data/rabbitmq:/var/lib/rabbitmq/mnesia
,但linux装载上的更改看起来是这样的。我担心的是本地Windows10工作得很好。在Windows Server 2016(1709更新)上执行此操作时,它不起作用。此问题是否解决?其他问题似乎建议在cookie文件上使用CHMOD 600,可能在Dockerfile中作为运行cmd。遗憾的是,我们一直没有解决这个问题。如果我记得的话,我们确实尝试了chmod600,但我认为一旦容器运行,它就会恢复到400。这可能是Windows Server 2016(1709更新)特别存在的问题。不幸的是,此项目已经结束,我无法再访问Windows Server版本,因此无法再次尝试复制它:(
Client:
 Version:      17.10.0-ee-preview-3
 API version:  1.33
 Go version:   go1.8.4
 Git commit:   1649af8
 Built:        Fri Oct  6 17:52:28 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.10.0-ee-preview-3
 API version:  1.34 (minimum version 1.24)
 Go version:   go1.8.4
 Git commit:   b8571fd
 Built:        Fri Oct  6 18:01:48 2017
 OS/Arch:      windows/amd64
 Experimental: true