2015-12-29 111 views
0

我使用DockerVirtualBoxdinghydocker-compose。 我通过docker-compose创建了一个容器。以下是docker-compose.yml配置。Docker虚拟主机缓存

rabbitmq: 
    image: rabbitmq:3-management 
    ports: 
    - "15672:15672" 
    - "5672:5672" 
    environment: 
    VIRTUAL_HOST: 'rabbitmq.docker' 
    VIRTUAL_PORT: 15672 
    RABBITMQ_DEFAULT_USER: docker 
    RABBITMQ_DEFAULT_PASS: docker 

一切都很好。通过访问url rabbitmq.docker:15672并且用户docker配置正确,我可以进入RabbitMQ的管理页面。

我想试验一下,所以我删除了environment部分。我删除了图像和容器,并重新构建/运行它。 我不明白的是,我仍然可以使用相同的uri访问管理页面,但这次我没有指定虚拟主机。

产生的yml文件是这样的

rabbitmq: 
    image: rabbitmq:3-management 
    ports: 
    - "15672:15672" 
    - "5672:5672" 

有什么我错过了?由于我不再指定一个虚拟主机,据我了解,这不应该发生。有没有办法查看Docker正在使用的所有虚拟主机?

回答

1

有没有办法查看Docker正在使用的所有虚拟主机?

在这种情况下,您误解了术语“虚拟主机”。 Docker根本没有虚拟主机的概念。在这种情况下,术语虚拟主机特定于RabbitMQ(或更确切地说AMQP,由RabbitMQ实现)。这是在RabbitMQ documentation(重点煤矿)documentated:

[...]的“虚拟主机”(或虚拟主机)[...]指定用于实体(交流和队列)的命名空间提到了协议。 请注意,这不是HTTP的虚拟主机。

当使用rabbitmq多克尔形象,管理UI将始终可以访问,下任何主机,不管你VIRTUAL_HOST环境变量(只要您使用的是图像的3-management标签) 。

我建议彻底阅读documentation of the rabbitmq Docker image。在那里您会看到图像支持名为RABBITMQ_DEFAULT_VHOST的环境变量。 变量VIRTUAL_HOSTVIRTUAL_PORT不以任何方式通过此图像评估,并且根本没有任何影响。

+0

'管理用户界面将永远可以在任何主机名下访问,你是什么意思? – alkis

+0

您用于管理界面的HTTP主机名是不重要的,它是'rabbitmq.docker',然后是容器的IP或任何其他主机名。如果你将端口15672映射到本地主机,'http:// localhost:15672'也可以正常工作,与http://127.0.0.1:15672或http:// [:: 1]相同: 15672'。 – helmbert

+0

这就是我的理解,但我想确保。你测试过了吗?因为对我来说情况并非如此。我已经测试过这种可能性,并且唯一可用的HTTP主机名是容器的ip(预期的)和'rabbitmq.docker'。 – alkis