【问题标题】:Host port appears closed inside Docker container主机端口在 Docker 容器内显示为关闭
【发布时间】:2018-07-03 19:42:49
【问题描述】:

目标

我试图弄清楚为什么我无法从 Docker 容器内部通过端口 9000 访问 PhpStorm。

设置

Dockerfile

FROM php:7.1-apache

RUN apt-get update && apt-get install -y telnet nmap

docker-compose.yml

version: '3'
services:
  test:
    build: .

步骤

  • 可以从主机访问测试端口:telnet 127.0.0.1 9000(成功)
  • docker-compose up
  • docker container ls
  • docker exec -it [CONTAINER] /bin/bash
  • 在容器内查找主机 IP:/sbin/ip route | awk '/default/ { print $3 }'
  • 从容器内部 Ping IP:ping 172.18.0.1(成功)
  • 在容器内,尝试使用主机 IP 连接端口:telnet 172.18.0.1 9000(失败)
  • 在容器内,使用nmap检查端口是否打开:nmap 172.19.0.1 -p 9000(显示端口为关闭)

Telnet 失败并显示 telnet: Unable to connect to remote host: Connection refused

nmap 结果:

# nmap 172.19.0.1 -p 9000

Starting Nmap 6.47 ( http://nmap.org ) at 2018-07-03 18:43 UTC
Nmap scan report for 172.19.0.1
Host is up (0.000040s latency).
PORT     STATE  SERVICE
9000/tcp closed cslistener
MAC Address: [redacted] (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.68 seconds

我的问题

如何访问 Docker 容器内的端口 9000(PhpStorm 用于侦听 Xdebug 连接)?

【问题讨论】:

    标签: macos docker networking docker-compose xdebug


    【解决方案1】:

    您在 Mac 上运行 Docker .. Docker 在网络设置方面存在一些细微差别。

    您检测到的 IP 地址 (172.18.0.1) 很可能不是实际的主机 IP。

    最好使用特殊的主机名host.docker.internal(根据官方解决方法文档文章:https://docs.docker.com/docker-for-mac/networking/#per-container-ip-addressing-is-not-possible

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-29
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 2020-08-05
      • 1970-01-01
      相关资源
      最近更新 更多