繁体   English   中英

主机名 host.docker.internal 指向错误的 IP 地址

[英]Hostname host.docker.internal is pointing to the wrong IP address

在服务器 A 上,我们在一个 Docker 容器配置中使用“host.docker.internal”从同一服务器 A 上的另一个容器访问该容器。我们想在另一台服务器 - 服务器 B 上使用这个 Docker 环境,但是主机名“host .docker.internal”仍然指向服务器A的IP地址。

清除缓存、完全重新安装容器都无济于事。 服务器 B 上的主机名“host.docker.internal”仍然指向服务器 A。

问题: IP和主机名“host.docker.internal”之间的绑定记录在哪里? 如何将其更新为正确的 IP 地址?

docker-compose.yaml

version: '3.2'
services:
  postgres:
    build:
      context: .
      dockerfile: ./docker_files/postgres.Dockerfile
    container_name: ${POSTGRES_CONTAINER_NAME}
    restart: always
    ports:
      - target: ${POSTGRES_TARGET_PORT} # the port inside the container
        published: ${POSTGRES_PUBLISHED_PORT} # the publicly exposed port
        protocol: tcp # the port protocol (tcp or udp)
        mode: host
    extra_hosts:
      - "host.docker.internal:host-gateway"
    networks:
      - panter_docker_network
    volumes:
      - ${HOST_TRANSFER_DIRECTORY}:/tmp/host/
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
networks:
  panter_docker_network:
    driver: bridge

postgres.Dockerfile

FROM postgres:15.1
RUN set -eux; \
    apt-get update && apt-get install -y \
    vim \
    zip \
    procps \
    locales \
    lsb-release \
    libicu-dev \
    iproute2 \
    unzip \
    iputils-ping && \
    mkdir /tmp/host/

USER root

有不同版本的 Docker 和host.docker.internal由 Docker Desktop 定义,而不是由 Linux 上的 Docker 定义。

能够到达主机的唯一可靠方法是在docker run命令上使用--add-host host.docker.internal:host-gateway ,就像这样

docker run --rm --add-host host.docker.internal:host-gateway busybox ping host.docker.internal

这将运行busybox图像并 ping 主机。

您说两个容器上的 IP 地址都指向服务器 A。在 Docker 创建的 bridge.networks 上,网关通常具有相同的地址。 在 Linux 上,主机地址始终为 172.17.0.1。 这些是 docker.network 上的本地地址,因此如果您有两台主机,两台机器上的主机地址 on.networks 都将是 172.17.0.1,因此看起来它们可能指向同一台服务器。 但由于它们是本地的,因此它们实际上确实指向各自的主机。

我觉得这是一个糟糕的解释。 但是,如果您有一个容器在主机 A 上运行,一个容器在主机 B 上运行,它们的主机地址都是相同的 IP。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM