Um problema alternativo pode estar no modo. Na seção de publicação eu tive que definir o mode
explicitamente como host e tudo funcionou:
docker service create --name registry --publish published=5000,target=5000,mode=host registry:2
Eu construí meu aplicativo pequeno em Python (frasco). O container está aqui docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4146fd976547 identidock_identidock:latest "/cmd.sh" 5 minutes ago Up 5 minutes 9090/tcp, 9191/tcp agitated_leakey
Se eu tentar
curl localhost:5000
curl: (7) Failed to connect to localhost port 5000: Connection refused
Eu verifiquei sudo netstat -an | grep -E "5000" unix 3 [] STREAM CONNECTED 25000
Não está listando em 5000. linha yaml com portas
ports:
- "5000:5000"
Se eu exec meu contentor
docker exec -it agitated_leakey /bin/bash
uwsgi@4146fd976547:/app$ netstat -ln
bash: netstat: command not found
Meu Dockerfile
RUN pip install Flask==0.10.1 uWSGI==2.0.8
WORKDIR /app
COPY app /app
COPY cmd.sh /
EXPOSE 9090 9191
Por que isso acontece?
Da saída do docker ps parece que sua porta não foi exposta.
$ docker run -d -p 5000:5000 flask-sample-one
Execute o seu contêiner mapeando a porta e se você ainda enfrentar o mesmo problema ssh no contêiner e use o seguinte comando.
netstat -lntp | grep :5000
Parece que o netstat não está instalado no contêiner. Você pode executar um yum install netstat
para instalar e verificar.
Este guia ajudará você a confirmar. Verifique docker ps
output no final.