Docker 已缓存虚拟主机

Docker virtual host cached

我将 DockerVirtualBoxdinghy 以及 docker-compose 一起使用。 我正在通过 docker-compose 创建一个容器。以下是docker-compose.yml配置。

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

一切正常。访问urlrabbitmq.docker:15672可以进入RabbitMQ的管理页面,用户docker配置正确。

我想尝试一下,所以删除了 environment 部分。我删除了图像和容器并再次 built/run 。 我不明白的是,我仍然可以使用相同的uri访问管理页面,虽然我这次没有指定虚拟主机。

生成的 yml 文件是这个

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

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

Is there a way to see all the virtual hosts that Docker is using?

您误解了本文中的术语 "Virtual Host"。 Docker 根本没有虚拟主机的概念。在这种情况下,术语 Virtual Host 特定于 RabbitMQ(或者更确切地说,由 RabbitMQ 实现的 AMQP)。这记录在 RabbitMQ documentation(强调我的):

[...] the "virtual host" (or vhost) [...] specifies the namespace for entities (exchanges and queues) referred to by the protocol. Note that this is not virtual hosting in the HTTP sense.

使用 rabbitmq Docker 图像时,管理 UI 将 始终可以在 any 主机名下访问,无论您的 VIRTUAL_HOST 环境变量如何(只要您使用该图像的 3-management 标签)。

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