首页 > 解决方案 > 无法从我的主机(我的 Windows 机器)打开 docker 应用程序 - localhost 没有发送任何数据

问题描述

我的 docker 容器运行成功,但我仍然无法浏览主机中的应用程序。如果没有容器,我只是尝试在我的 windows m/c 中运行,我可以在http://127.0.0.1:8000/ 中查看应用程序,这对我来说是本地主机。
我尝试了 0.0.0.0:8000 门户
并且还在 docker 文件中公开了端口并通过使用 --publish 选项发布来运行 docker。我试图通过桥接网络分配的容器访问。尝试了在不同论坛上讨论的所有可能方式..但徒劳无功。有人可以帮我解决这个问题。可能有两个问题

  1. docker virtual box 不与我的主机通信(但通过公开和发布选项打开了门户)
  2. 可能是我指的是错误的 IP 地址来查看我的主机 m/c 中的应用程序:但我使用 docker inspect 命令检查了 IP 地址并尝试了 docker network inspect -f '{{range .IPAM.Config}}{ {.Subnet}}{{end}}' 329dd26d7270 我尝试将 Mc Cafe 防火墙设置为 OFF :( 当我尝试在没有 docker 的 Windows 机器中浏览我的应用程序(在 WSL 中运行)时存在同样的问题。问题是我的 Windows 门户没有访问 docker 或 WSL 的任何类型的虚拟框。我正遭受这个问题的困扰,对我的项目的下一步有很大的阻碍。希望得到正确的解决方案

Dockerfile

# Pull base image
FROM python:3.9

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# Set work directory

WORKDIR /code
ADD . /code
# Install dependencies
# runs the pip install command for all packages listed in the requirements.txt file
RUN pip install -r requirements.txt

# Copy project
COPY . /code/

EXPOSE 8000

下面分享的 Docker-compose.yml 文件

version: '3.9'
services:
   web:
       build: .
       command: python manage.py runserver  
       ports:
           - 8000:8000

$码头工人ps

容器 ID 图像命令创建状态端口名称

24fe92f6c14c   hello_web   "python3"                16 minutes ago   Up 10 minutes                                                  hello-cc

e797bcd9629b   hello_web   "/bin/bash"              2 days ago       Up 3 seconds       0.0.0.0:8000->8000/tcp, :::8000->8000/tcp   hello-c1

83bc3424cf9d   postgres    "docker-entrypoint.s…"   2 days ago       Up About an hour   0.0.0.0:5432->5432/tcp, :::5432->5432/tcp   bee_project_db_1

hello-c1 容器也无法通过 172.27.112.1:8000 访问

使用 ipconfig 获取 windows m/c 的 IP 地址

以太网适配器 vEthernet (WSL):

连接特定的 DNS 后缀。:链路本地 IPv6 地址。. . . . : fe80::89c0:5e11:3776:9980%39

IPv4 地址。. . . . . . . . . . : 172.27.112.1

子网掩码 。. . . . . . . . . . : 255.255.240.0

默认网关 。. . . . . . . . :

标签: dockerlocalhostcontainersvirtualboxip-address

解决方案


如果您在 Windows 下使用 docker 工具箱,请执行

docker-machine env或者docker-machine ip

你会发现这样的东西:

SET DOCKER_TLS_VERIFY=1
SET DOCKER_HOST=tcp://192.168.99.103:2376
SET DOCKER_CERT_PATH=C:\Users\fevly\.docker\machine\machines\default
SET DOCKER_MACHINE_NAME=default
SET COMPOSE_CONVERT_WINDOWS_PATHS=true
REM Run this command to configure your shell:
REM     @FOR /f "tokens=*" %i IN ('docker-machine env') DO @%i

你会发现你的 docker 机器 ip 也在那里列出。获取 IP 并将其与您刚刚创建的映射端口配对。

如果您在 Windows 下使用 docker 工具箱,则 127.0.0.1 不属于您的 docker。上面显示的 192.168.99.103 是运行 Docker 的 linux VM 的 IP,这是该 VM 的默认 IP。


推荐阅读