如果这很有趣:操作系统:WIN10(cygwin),代码用 编写Java
。我正在使用 hyperv VM,如本指南中所述:这
我希望使用(浏览器或 curl)到达在端口 80 上运行的
service
前面的。不知何故,这不起作用。还是我误解了服务端口转发?container
myvm1IP:80
*:8080->80/tcp
我有一个正在运行的由 2 个节点组成的 docker swarm 集群。 我可以 ping 两个正在运行的虚拟机
我已经降级了版本,因为较新版本号的问题. 有关引擎使用的信息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 service 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
错误代码,因为没有映射/
。我错了吗?