簡體   English   中英

鏈接的docker容器無法相互通信

[英]Linked docker containers can't communicate with each other

我使用docker-compose來運行我的應用程序堆棧。

應用程序堆棧是:

  1. 蒙戈
  2. 休息服務(以下稱為休息服務)
  3. UI服務(以下稱為ui-service)

下面是我的docker-compose的片段:

services:
  mongodb:
    image: mongo:3
    container_name: mongodb
    ports:
      - "17027:27017"

  rest-service:
    build: ./rest-service/
    container_name: rest
    ports:
      - "15000:5000"
    command: "/opt/app/conf/config.yml"
    links:
      - mongodb:mongo

  ui-service:
    build: ./ui-service/
    container_name: ui
    ports:
     - "18080:8080"
    links:
      - rest-service:rest
    environment:
      NODE_ENV: development

我在這里遇到的問題是我的休息服務可以與mongo容器(我的意思是在端口(Docker容器上的27017)上),因為mongo鏈接到restService。 但ui-service不能談論休息服務(我的意思是在港口(碼頭集裝箱上的5000))。

如果我嘗試與主機端口上的休息服務進行ui-service通話(我的意思是端口15000,它監聽docker容器的端口5000),它可以工作。 因此,我無法理解為什么會這樣。

任何幫助將受到高度贊賞。

除非您要從此容器網絡外部訪問端口,否則請刪除ports部件。 鏈接容器不需要相互明確地公開端口,並且正如您所發現的那樣,它將它們公開給主機。 您需要不公開端口僅訪問您正在使用的端口,而是通過localhost:1234語法(不是container-name:1234 )。

確保您了解如何引用端口,如果使用容器名稱,則可能需要鏈接,但如果您不想這樣做,則需要使用localhost和主機端口。

使用鏈接自動允許鏈接的容器訪問容器的端口。 這意味着你的mongodb上的任何端口都可以通過它的容器端口訪問,即使它沒有暴露。

當您明確地公開它們時,它們會暴露給您的localhost for docker,這就是為什么您的某些東西可以工作的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM