Почему приложение узла не работает в Docker Swarm?

#docker #docker-swarm

Вопрос:

У меня есть приложение базового узла,

     const http=require('http');

http.createServer((req,res)=>{
    res.writeHead(200,{'Content-Type': 'text/html'});
    res.end('<h1>Hello World</h1>')
}).listen(3000);
console.log('Service Started on port 3000')
 

с докерфайлом, имеющим,

 FROM node
RUN apt-get update -q amp;amp; apt-get dist-upgrade -y amp;amp; apt-get clean amp;amp; apt-get autoclean
EXPOSE 3000
ENV APP_PATH /usr/share/app
WORKDIR $APP_PATH
USER node
COPY . $APP_PATH
CMD ["npm","start"]
 

Я создал его образ, используя, sudo docker build -t prototype .
Когда я инициализирую рой докеров sudo docker swarm init с помощью, я получаю этот результат,

 Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on interface enp3s0 (2405:201:8008:881f:a137:a31d:cb90:b885 and 2405:201:8008:881f:1925:6903:a2e2:249) - specify one with --advertise-addr
 

Затем запускаю sudo docker swarm init --advertise-addr 2405:201:8008:881f:1925:6903:a2e2:249 и sudo docker service create -d --name node01 -p 3000:3000 prototype , а затем sudo docker service ls , я получаю следующий результат,

 ID             NAME      MODE         REPLICAS   IMAGE              PORTS
d7fu78estgkv   node01    replicated   1/1        prototype:latest   *:3000->3000/tcp
 

Но когда я открываю этот URL-адрес, http://localhost:3000/ ничего не приходит, браузер продолжает загружаться.

Комментарии:

1. Работает ли это, если вы запускаете его без роя, то есть просто docker run ?

2. Да, он работает