继续使用:堆栈服务器无休止地加载页面

时间:2017-05-03 03:03:51

标签: docker docker-compose

我一直非常密切关注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:

2 个答案:

答案 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)。