簡體   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