Запустить службу Docker EE Swarm в локальной виртуальной машине Windows Server 2016

Я хочу продемонстрировать запуск Docker swarm на простом веб-сайте Asp.Net Core на локальной виртуальной машине Windows Server 2016. Веб-сайт работает на порту 5000. Однако, когда я инициализирую рой и добавляю службу, я не могу посетить адрес веб-сайта на указанном порту. Переход к http://localhost:5000, http://127.0.0.1:5000 или любой из IP-адресов сервисного контейнера не открывает сайт. Почему так происходит с роем?

Брандмауэр Windows отключен.

Dockerfile.build

FROM microsoft/aspnetcore:2.0.0-nanoserver
WORKDIR /
COPY /bin/Release/netcoreapp2.0/win7-x64/publish ./
EXPOSE 5000
ENTRYPOINT ["AspNetCoreHelloWorld.exe", "--urls", "http://*:5000"]

Инициализировать рой

docker swarm init --advertise-addr 127.0.0.1:2377 --listen-addr 0.0.0.0:2377

Создать сервис

docker service create --name helloworld --publish 5000:5000 --replicas 3 myazureregistry.azurecr.io/aspnetcore-hello-world:v2

Я могу подтвердить, что служба реплицирует три экземпляра в моем узле. Почему столбец портов пуст, хотя я сопоставил порт 5000?

docker service ps helloworld
ID                  NAME                IMAGE                                                 NODE                DESIRED STATE       CURRENT STATE             ERROR               PORTS
y7i6pn9dcgtk        helloworld.1        myazureregistry.azurecr.io/aspnetcore-hello-world:v2   WIN-QL7AIOPATIH     Running             Starting 16 seconds ago
vpc3naln3q2l        helloworld.2        myazureregistry.azurecr.io/aspnetcore-hello-world:v2   WIN-QL7AIOPATIH     Running             Starting 16 seconds ago
w88cwnj7omo7        helloworld.3        myazureregistry.azurecr.io/aspnetcore-hello-world:v2   WIN-QL7AIOPATIH     Running             Starting 16 seconds ago

docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                                                 PORTS
66h9usj0xxiq        helloworld          replicated          3/3                 myazureregistry.azurecr.io/aspnetcore-hello-world:v2   *:5000->5000/tcp

person Stuart    schedule 23.08.2017    source источник
comment
Может быть связано с заголовком stackoverflow.com/questions/42626899/   -  person Stuart    schedule 25.08.2017


Ответы (1)


«В настоящее время DNS Round-Robin является единственной стратегией балансировки нагрузки, поддерживаемой в Windows. Сетка маршрутизации для хостов докеров Windows еще не поддерживается, но скоро появится. Пользователи, которым сегодня нужна альтернативная стратегия балансировки нагрузки, могут настроить внешний балансировщик нагрузки (например, NGINX) и используйте режим публикации-порта Swarm, чтобы предоставить порты хоста контейнера, по которым будет выполняться балансировка нагрузки».

https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/swarm-mode

person Stuart    schedule 21.09.2017