docker - 无法从我的主机(我的 Windows 机器)打开 docker 应用程序 - localhost 没有发送任何数据
问题描述
我的 docker 容器运行成功,但我仍然无法浏览主机中的应用程序。如果没有容器,我只是尝试在我的 windows m/c 中运行,我可以在http://127.0.0.1:8000/ 中查看应用程序,这对我来说是本地主机。
我尝试了 0.0.0.0:8000 门户
并且还在 docker 文件中公开了端口并通过使用 --publish 选项发布来运行 docker。我试图通过桥接网络分配的容器访问。尝试了在不同论坛上讨论的所有可能方式..但徒劳无功。有人可以帮我解决这个问题。可能有两个问题
- docker virtual box 不与我的主机通信(但通过公开和发布选项打开了门户)
- 可能是我指的是错误的 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
默认网关 。. . . . . . . . :
解决方案
如果您在 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。
推荐阅读
- javascript - 模块中的菜单模板 - 调用函数时出现上下文错误
- android - 根据 BottomNavigationView 的可见性更改 Snackbar 的位置
- c - 计算 .txt 文件中的数字
- git - 有什么方法可以按文件大小进行 gitignore 吗?
- nuget - 如果没有配置文件,如何在 NuGet 安装上使用 XDT?
- jquery - 尝试根据轮播中出现的图像更改标题和描述时出错
- nightwatch.js - 如何为夜间 Js 禁用 Zalenium 视频录制
- r - 如何修复“定义数据框”
- javascript - 重定向后根 URL 没有被更改?
- ios - 尽管有硬编码的宽度和高度,但“可缩放的内容大小不明确”?