【发布时间】:2019-02-18 14:23:27
【问题描述】:
如果这很有趣:操作系统:WIN10 (cygwin),用Java 编写的代码。
我遵循this 的例子。
我希望使用
myvm1IP:80(浏览器 ir curl)到达在端口 80 上运行的container前面的service。不知何故,这不起作用。还是我误解了服务的端口映射?*:8080->80/tcp
我有一个由 2 个节点组成的正在运行的 docker swarm 集群。 我可以 ping 两个正在运行的虚拟机
我已经降级了版本,因为有 issues with more recent version numbers。使用docker inspect vmName的引擎信息:
"Engine": {
"EngineVersion": "18.06.1-ce",
"Labels": {
"provider": "hyperv"
},
我执行了以下docker-compose.yml:
version: "3"
services:
web:
image: elps/articleservice:1.1.0.4
deploy:
replicas: 2
restart_policy:
condition: on-failure
ports:
- "8080:80"
environment:
- MYSQL_HOST=192.168.178.82
- MYSQL_DB=article
- MYSQL_USER=root
- MYSQL_PASSWORD=abcdefg
networks:
- webnet
networks:
webnet:
两个副本都成功启动并且能够连接到本地正在运行的数据库(假设我查看了日志并且一切看起来都很好)。容器已启动并正在运行。
docker ps -a 的输出
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
979ed7ea88b7 elps/articleservice:1.1.0.4 "java -jar articlese…" 27 minutes ago Up 27 minutes 8080/tcp getstartedlab_web.1.j1j41so8pz6atxqnq9fqqquk7
7684c3667025 elps/articleservice:1.1.0.4 "java -jar articlese…" 27 minutes ago Up 27 minutes 8080/tcp getstartedlab_web.2.r4kadvztiwgpckkuannnhcsea
docker服务ls的输出
ID NAME MODE REPLICAS IMAGE PORTS
gvyi9moxtpvq getstartedlab_web replicated 2/2 elps/articleservice:1.1.0.4 *:8080->80/tcp
docker-machine ls 的输出
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
myvm1 * hyperv Running tcp://192.168.178.88:2376 v18.06.1-ce
myvm2 - hyperv Running tcp://192.168.178.89:2376 v18.06.1-ce
当我尝试执行 curl myvmIP:80 时,我收到了
连接192.168.178.88端口80失败:连接被拒绝
作为回应。我希望收到404 错误代码,因为/ 没有映射。我错了吗?
【问题讨论】:
-
在 docker hub 页面 (hub.docker.com/r/elps/articleservice) 上,它说您需要运行多个容器
-
你似乎有 articleservice 运行,但不是其他 3。我不知道该图像试图做什么。你确定它应该在没有其他容器运行的情况下工作吗?
-
要使用所有端点,您需要运行所有服务。但是可以在不运行其他服务的情况下查看至少一些内容。例如。您需要 articleservice 和 catalogservice 才能将文章添加到目录中。
-
怎么知道http服务器运行在docker容器中?如果服务器正在运行,我预计会出现 404,但是您的请求错误,例如密码错误。
-
例如,如果我尝试在我自己的计算机 IP 地址上卷曲同一个端口,而我肯定没有运行 http 服务器,那么我会得到完全相同的错误:
标签: windows docker docker-compose docker-swarm