dockerSWARM不工作

我在Mac上使用https://docs.docker.com/get-started/part3/中的教程,本教程是使用swarm节点设置一个Docker服务,但是我得到了Empty reply from server if我得到了http:// localhost 。我已经validation了端口80是一个Docker进程,并且Docker容器也在运行。

Mac-Machine:docker堆栈部署-c docker-compose.yml getstartedlab创buildnetworkinggetstartedlab_webnet创build服务getstartedlab_web

 Mac-Machine:docker user1$ lsof -i tcp:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME com.docke 7592 user1 44u IPv4 0xfc021b13bc914389 0t0 TCP *:http (LISTEN) Mac-Machine:docker user1$ curl http://localhost curl: (52) Empty reply from server Mac-Machine:docker user1$ docker service ls ID NAME MODE REPLICAS IMAGE w4dghr7jcpca getstartedlab_web replicated 5/5 dockhub-user1/get-started:part1 Mac-Machine:docker user1$ docker service ps w4dghr7jcpca ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 4oykrq8ge8yl getstartedlab_web.1 dockhub-user1/get-started:part1 moby Running Running about a minute ago ba1n3m1pis2f getstartedlab_web.2 dockhub-user1/get-started:part1 moby Running Running about a minute ago kmy8n4tm0n44 getstartedlab_web.3 dockhub-user1/get-started:part1 moby Running Running about a minute ago cyeyozw6u8x7 getstartedlab_web.4 dockhub-user1/get-started:part1 moby Running Running about a minute ago 0evm9skw7p44 getstartedlab_web.5 dockhub-user1/get-started:part1 moby Running Running about a minute ago Mac-Machine:docker user1$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5223c52b2014 dockhub-user1/get-started@sha256:2d3934a04a4aecc453652678489b2d96ce8d3dc5457aa8afdaeb71dbeff236ff "python app.py" 2 minutes ago Up About a minute 80/tcp getstartedlab_web.1.4oykrq8ge8ylw3ilbufxdp4t0 910b7b7521b3 dockhub-user1/get-started@sha256:2d3934a04a4aecc453652678489b2d96ce8d3dc5457aa8afdaeb71dbeff236ff "python app.py" 2 minutes ago Up About a minute 80/tcp getstartedlab_web.4.cyeyozw6u8x7j1zy1k82dugrn d3ebd24cfe9a dockhub-user1/get-started@sha256:2d3934a04a4aecc453652678489b2d96ce8d3dc5457aa8afdaeb71dbeff236ff "python app.py" 2 minutes ago Up 2 minutes 80/tcp getstartedlab_web.5.0evm9skw7p44npujg6nbhckmy ba29ffbdf2ce dockhub-user1/get-started@sha256:2d3934a04a4aecc453652678489b2d96ce8d3dc5457aa8afdaeb71dbeff236ff "python app.py" 2 minutes ago Up About a minute 80/tcp getstartedlab_web.2.ba1n3m1pis2flttytx87nucvb 6d8af1744b75 dockhub-user1/get-started@sha256:2d3934a04a4aecc453652678489b2d96ce8d3dc5457aa8afdaeb71dbeff236ff "python app.py" 2 minutes ago Up About a minute 80/tcp getstartedlab_web.3.kmy8n4tm0n44jgb1tc34qgeww 

这是docker-compose.yml

 version: "3" services: web: # replace username/repo:tag with your name and image details image: dockhub-user1/get-started:part1 deploy: replicas: 5 resources: limits: cpus: "0.1" memory: 50M restart_policy: condition: on-failure ports: - "80:80" networks: - webnet networks: webnet: 

图片dockhub-user1 / get-started:part1是使用下面的Docker文件创build的。

 # Use an official Python runtime as a parent image FROM python:2.7-slim # Set the working directory to /app WORKDIR /app # Copy the current directory contents into the container at /app ADD . /app # Install any needed packages specified in requirements.txt RUN pip install -r requirements.txt # Make port 80 available to the world outside this container EXPOSE 80 # Define environment variable ENV NAME World # Run app.py when the container launches CMD ["python", "app.py"] 

这是app.py文件

 from flask import Flask from redis import Redis, RedisError import os import socket # Connect to Redis redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2) app = Flask(__name__) @app.route("/") def hello(): try: visits = redis.incr("counter") except RedisError: visits = "<i>cannot connect to Redis, counter disabled</i>" html = "<h3>Hello {name}!</h3>" \ "<b>Hostname:</b> {hostname}<br/>" \ "<b>Visits:</b> {visits}" return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits) if __name__ == "__main__": app.run(host='0.0.0.0', port=80)