无法在 Windows 10 上使用 docker 访问 localhost:8080

Posted

技术标签:

【中文标题】无法在 Windows 10 上使用 docker 访问 localhost:8080【英文标题】:Can't access to localhost:8080 with docker on windows 10 【发布时间】:2018-05-09 22:25:23 【问题描述】:

在我的计算机上运行我的docker-compose-development.yaml 时,我无法连接到http://localhost:8080

另外,我可以运行 docker-compose -f docker-compose-development.yaml exec web curl http://localhost:8080 并得到结果。所以这似乎不是代码问题。

我已经做了什么:

使用$ docker inspect ...直接连接容器IP 在另一台 Windows 10 笔记本电脑上尝试(可以使用) 将localhost 更改为127.0.0.10.0.0.0 试试8080以外的其他端口

这是我的$ docker version

Client:
 Version:      17.11.0-ce
 API version:  1.34
 Go version:   go1.8.4
 Git commit:   1caf76c
 Built:        Mon Nov 20 18:30:11 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.11.0-ce
 API version:  1.34 (minimum version 1.12)
 Go version:   go1.8.5
 Git commit:   1caf76c
 Built:        Mon Nov 20 18:39:28 2017
 OS/Arch:      linux/amd64
 Experimental: true

这是我的Dockerfile

FROM node:9.1-alpine

RUN npm install -g nodemon


WORKDIR /opt/webserver/
COPY . /opt/webserver
RUN npm install

CMD  ["npm","run","start"]
EXPOSE 8080

RUN rm -rf /tmp/* /var/tmp/*

这是我的docker-compose-development.yaml

version: "3"

services:
  web:
    image: registry.gitlab.com/soundtrack/webapp
    ports:
      - "8080:8080"
    links:
      - database
    volumes:
      - ".:/opt/webserver:rw"
  database:
    image: mongo:3.4.10

ps 来自docker-compose 的命令:

$ docker-compose -f .\docker-compose-development.yaml ps
      Name                    Command             State           Ports
--------------------------------------------------------------------------------
webapp_database_1   docker-entrypoint.sh mongod   Up      27017/tcp
webapp_web_1        npm run start                 Up      0.0.0.0:8080->8080/tcp

【问题讨论】:

【参考方案1】:

我运行了我的容器:

docker run -d -it -p 10080:80 --name=container-cool-name <container-id>

我可以看到我正在运行的带有 curl 的应用程序(在容器内)

docker exec -ti container-cool-name bash
#curl localhost:80

Here我看了:

如果您使用的是 Docker 工具箱

docker-machine ip会告诉你”

我的应用在 192.168.99.100:10080 正确显示

【讨论】:

【参考方案2】:

尝试以下步骤,

1 - 列出所有正在运行的 docker 容器

docker ps -a

运行此命令后,您应该能够查看当前正在运行的所有 docker 容器,并且您应该会看到其中列出的名称为 webapp_web_1 的容器。

2 - 获取您的网络服务器容器运行的 IP 地址。为此,请运行以下命令。

 docker inspect -f " .NetworkSettings.Networks.nat.IPAddress " webapp_web_1

尝试访问运行上述命令后显示的 IP,并使用该 IP 而不是 localhost 访问正在运行的容器。

我已经回答了一个与 Windows 上的这个确切问题相关的类似问题。请通过此link 进行参考,以详细了解为什么会出现此问题。

希望对你有所帮助。

【讨论】:

或者,docker-machine ip default 给了我 IP 地址。 我得到的只是&lt;no value&gt;

以上是关于无法在 Windows 10 上使用 docker 访问 localhost:8080的主要内容,如果未能解决你的问题,请参考以下文章

用于 php 的 docker 映像无法在 Windows 10 的浏览器上运行

无法在 Windows 10 上安装 Docker

在 Windows 上安装后无法启动 docker

Jenkins 在 Windows 上使用 Docker - 无法运行程序“nohup”

ckan 2.9.3 容器无法在 Windows 10 上运行

无法连接到 Ubuntu Windows 上 bash 上的 Docker 守护程序