【问题标题】:Accessing localhost port of one docker container inside another docker container在另一个 docker 容器中访问一个 docker 容器的 localhost 端口
【发布时间】:2021-01-26 06:25:24
【问题描述】:

我想使用localhost:5432 从 service2 容器内部访问 service1。怎么可能呢?

这是我的 docker compose 目前的样子:

services:
  service1:
    image: postgres:12
    ports:
      - '172.10.1.1:5432:5432'
    expose:
      - '5432'
    environment:
      - POSTGRES_USER=project
      - POSTGRES_PASSWORD=pass
    volumes:
      - db_data:/var/lib/postgresql/data
  service2:
        build: .
        ports:
          - '172.10.1.1:1234:1234'

请注意,我知道我可以使用 service1:5432 或仅使用 service1 访问它。但如果可能的话,我想使用localhost

【问题讨论】:

标签: docker docker-compose containers


【解决方案1】:

不可能,因为每个容器都有自己的ip。

但是有一个解决方法: 将网络设置为主机。所以这些端口在主机上是开放的,可以通过127.0.0.1 访问。不适用于 Windows。

但我不知道你为什么喜欢在 postgres 中使用 localhost 的任何充分理由?您是否尝试通过localhost 进行身份验证?不要那样做 - 请改用密码。

【讨论】:

    【解决方案2】:

    使用主机网络可能是您正在寻找的解决方案 https://docs.docker.com/network/host/

    services:
      service1:
        image: postgres:12
        network_mode: host
        expose:
          - '5432'
        environment:
          - POSTGRES_USER=project
          - POSTGRES_PASSWORD=pass
        volumes:
          - db_data:/var/lib/postgresql/data
      service2:
        build: .
        network_mode: host
    

    【讨论】:

      猜你喜欢
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 2019-04-28
      • 2019-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多