我一直非常密切关注docker get started guide - 除了我的python应用程序中的一些更改,我已经确认这些更改没有问题,我已经推送到Docker hub。
然而,当我到达第3部分并尝试加载localhost:80
时,页面只是无休止地加载。
我的命令:
$ docker swarm init
Swarm initiated: ...
$ docker stack deploy -c docker-compose.yml
Creating network getstartedlab_webnet
Creating service getstartedlab_web
$ docker stack ps getstartedlab
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
fhxqr2u8hxar getstartedlab_web.1 mctague/friendlyhello:2 cube Running Running 29 seconds ago
4t9mu9r8147e getstartedlab_web.2 mctague/friendlyhello:2 cube Running Running 28 seconds ago
duute2pvgu9z getstartedlab_web.3 mctague/friendlyhello:2 cube Running Running 30 seconds ago
9kav6v27qfjn getstartedlab_web.4 mctague/friendlyhello:2 cube Running Running 29 seconds ago
1s2imbiuk6e2 getstartedlab_web.5 mctague/friendlyhello:2 cube Running Running 29 seconds ago
$ docker logs <one of the running containers>
* Running on http://0.0.0.0:80/ (Press CTRL+C to quit)
$ curl localhost:80
< either an endless loading that I have to cancel with ^C,
*OR* Connection refused >
搬运工-compose.yml
version: "3"
services:
web:
image: mctague/friendlyhello:2
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "80:80"
networks:
- webnet
networks:
webnet:
答案 0 :(得分:6)
在某些系统中,curl默认为localhost连接到ip6。所以你可以使用:
运行curl$ curl 127.0.0.1:80
或
$ curl -4 localhost:80
答案 1 :(得分:2)
阿列克谢的回答也是我的问题。我通过将以下2行(这是在CentOS 7上)添加到 /etc/sysctl.conf 来解决了禁用ipv6(因此默认为ipv4)的问题:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
然后执行sysctl -p
(全部为root / su)。