回覆列表
  • 1 # 急速馬力快de原始碼控

    一個非常好的問題。使用Docker時,宿主機和Docker容器之間、Docker容器和Docker容器之間,都需要進行服務間通訊。

    一,宿主機和Docker容器之間

    Docker啟動容器時,指定服務埠,比如啟動Redis時,埠為6379,這時如果需要訪問Redis服務,就使用ip地址:埠,或者直接使用localhost:6379

    在需要直接登入到容器時,可以使用docker命令,比如:

    docker exec -it data_redis_1 bash

    其中data_redis_1時容器名稱,可以透過docker ps檢視當前容器資訊:

    二,Docker容器之間

    Docker容器快捷高效部署應用,資源編排定義和執行多個容器,透過docker-compose.yml配置檔案宣告各個服務,作為一個整體來建立和啟動。

    那麼Docker容器之間怎麼通訊呢?顯然是不應該使用IP地址的,應該使用和配置hostname,如果在不同子網,就增加networks資訊。

    1,配置hostname

    以Redis為例,Redis服務被API服務呼叫,為Redis配置hostname: cache

    2,引用hostname

    API服務在application.yml中配置Redis連線資訊時,使用hostname指定服務地址:

    3,不同子網間配置networks資訊

    實際使用中經常將服務按照不同類別部署在不同子網中,這時需要指定networks資訊。以資料層和介面層為例:

    1)部署Redis時,配置networks為data,橋接模式

    2)部署API服務時,宣告networks資訊,data是external外部子網

  • 中秋節和大豐收的關聯?
  • 寶寶5個月身上有時起紅點一片片的好像過敏一樣怎麼回?