无法通过Windows 10上的Docker访问localhost:8080

11

在我的电脑上运行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

docker-compose中的ps命令:

$ 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
2个回答

8

我运行了我的容器:

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

我可以使用curl命令(在容器内部)查看我的运行应用程序。

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

这里我看到:

如果您正在使用Docker Toolbox

"docker-machine ip将为您提供IP地址"

我的应用程序在192.168.99.100:10080上正确显示。


1

请尝试以下步骤:

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

docker ps -a

运行这个命令后,您应该能够查看到所有正在运行的 Docker 容器,并且您应该能够在其中看到一个名为 webapp_web_1 的容器。

2 - 获取您的 Web 服务器容器正在运行的 IP 地址。要执行此操作,请运行以下命令。

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

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

我已经回答了一个类似于这个问题的Windows相关问题。请通过此link链接参考,以获取有关为什么存在此问题的详细信息。

希望这可以帮助你解决问题。


3
另外,docker-machine ip default 命令给出了我的 IP 地址。 - Don McCurdy
11
我所收到的仅为 <no value> - There

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接