#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. Да, он работает