【问题标题】:Can't access to localhost:8080 with docker on windows 10无法在 Windows 10 上使用 docker 访问 localhost:8080
【发布时间】: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

【问题讨论】:

    标签: node.js docker localhost windows-10


    【解决方案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;
      猜你喜欢
      • 1970-01-01
      • 2017-09-07
      • 1970-01-01
      • 2015-11-03
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      • 2015-10-27
      • 2021-08-19
      相关资源
      最近更新 更多