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

Bri*_*ce 9 localhost node.js docker windows-10

docker-compose-development.yaml在我的电脑上运行我的,我无法连接到http://localhost:8080.

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

我已经做了什么:

  • 直接在容器 IP 上连接 $ docker inspect ...
  • 在另一台 Windows 10 笔记本电脑上尝试(它可以工作
  • 更改localhost127.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
Run Code Online (Sandbox Code Playgroud)

这是我的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/*
Run Code Online (Sandbox Code Playgroud)

这是我的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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

est*_*ezg 5

我运行了我的容器:

docker run -d -it -p 10080:80 --name=container-cool-name <container-id>
Run Code Online (Sandbox Code Playgroud)

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

docker exec -ti container-cool-name bash
#curl localhost:80
Run Code Online (Sandbox Code Playgroud)

在这里读到:

如果您使用的是 Docker 工具箱

docker-machine ip会告诉你”

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


Rav*_*ndo 1

尝试以下步骤,

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

docker ps -a
Run Code Online (Sandbox Code Playgroud)

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

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

 docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" webapp_web_1
Run Code Online (Sandbox Code Playgroud)

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

我已经回答了与 Windows 上的这个确切问题相关的类似问题。请通过此链接参考它,以详细了解此问题为何普遍存在。

希望这可以帮助你。

  • 我得到的只是“&lt;无值&gt;” (14认同)
  • 或者,“docker-machine ip default”给了我 IP 地址。 (3认同)