2015-12-29 152 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