无法在 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.1
或0.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 地址。
我得到的只是<no value>
以上是关于无法在 Windows 10 上使用 docker 访问 localhost:8080的主要内容,如果未能解决你的问题,请参考以下文章
用于 php 的 docker 映像无法在 Windows 10 的浏览器上运行
Jenkins 在 Windows 上使用 Docker - 无法运行程序“nohup”