Stuck on Getting Started tutorial part 3

Hello, I am familiarising with Docker by working through the get-started tutorial but I am stuck on part 3.

My initial problem occurred when doing swarm init:

$ docker swarm init
Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on interface br0 (fd3e:b...7:8cf8 and fd3e:b...3:5854) - specify one with --advertise-addr

I can get past that be doing as suggested, moving on to stack deploy. However, my browser (or curl) just hangs.

I know that it is connecting because the hanging connection drops when I do stack rm (e.g curl: (56) Recv failure: Connection reset by peer).

I am not sure what to try next and have been unable to find an answer in the documentation or through general searching. My guess is it may be assumptions made by Docker about the local network so here is a short description of my network.

  • one real interface, wired ethernet
  • I have a bridge so that virtual interfaces for other applications may use the network
  • I have IPv4 and IPv6 enabled; host has ipv4 address and 5 ipv6 addresses. Ipv6 is configured to provide temporary addresses.
  • no proxy

My docker-compose.yml:

version: "3"
services:
  web:
    image: johnlane/get-started:part2
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "4001:80"
    networks:
      - webnet
networks:
  webnet:

The only deviation is that I’ve used port 4001 rather than 4000 because I have another server running on 4000.

Environment:

  • Arch Linux Linux 4.15.3-2-ARCH #1 SMP PREEMPT Thu Feb 15 00:13:49 UTC 2018 x86_64
  • Docker version 18.02.0-ce, build fc4de447b5

I have since discovered that I am not the only one who has experienced this issue and it is interesting to note that it’s been an issue for at least a year and there is no indication of a solution.

I’m also curious why the getting started tutorial uses an experimental feature?

$ docker deploy --help
docker deploy is only supported on a Docker daemon with experimental features enabled

Perhaps I should leave the tutorial there and come back to it later. I have enough to create and use containers on one machine which is enough for my needs right now.

I also encountered the exact same problem while working through Part 3 of the Getting Started Tutorial (https://docs.docker.com/get-started/part3/).

The solution was to specify the advertise-addr as 127.0.0.1. Initialize the swarm with the command below.

$ docker swarm init --advertise-addr 127.0.0.1

After initializing the swarm, start up your service the same way as described in part 3 of the tutorial, and then navigate to http://127.0.0.1:PORT where PORT is the port that you mapped in the docker-compose.yml file. In the case above, you would use 127.0.0.1:4000. You should then see your docker service running at that URL with local IP 127.0.0.1.