Cómo exponer el puerto en el contenedor docker

He ejecutado un servicio web en un contenedor docker en un puerto personalizado (8080). Aquí, estoy tratando de ejecutar un contenedor, exponiendo el puerto del contenedor relevante (como visto aquí), pero fue en vano.

docker run -p 127.0.0.1:8080:8080 beatthemarket run wait

Pero parece que no puedo llegar a ese punto final del servicio web.

me) ¿Estoy exponiendo correctamente el puerto del contenedor? ii) Cómo puedo solucionar problemas si es el puerto el que no está disponible, o si simplemente no se llama a mi servicio web (sería bueno poder shell en el contenedor y simplemente rizar el punto final).

Se puede ver mi Dockerfile aqui. Y estoy usando Adzerk bota-clj imagen base.

En realidad, al ejecutar docker, cada vez recupera un montón de frascos. Entonces arranque bloques (el wait tarea), que es lo que quiero (un servidor web manejará las solicitudes web). Y aquí es donde estoy perdido. Boot, en docker, bloquea como se lo he pedido. Pero parece que no puedo entender lo básico Hola Mundo mensaje de que un URI raíz debería regresar.

$ docker run -p 127.0.0.1:8080:8080 beatthemarket run waitDownloading https://github.com/boot-clj/boot/releases/download/2.5.5/boot.jar...Retrieving dynapath-0.2.3.jar from https://clojars.org/repo/Retrieving pod-2.5.5.jar from https://clojars.org/repo/Retrieving shimdandy-impl-1.2.0.jar from https://repo1.maven.org/maven2/Retrieving core-2.5.5.jar from https://clojars.org/repo/...Implicit target dir is deprecated, please use the target task instead.Set BOOT_EMIT_TARGET=no to disable implicit target dir.

El Chrome, curl y wget dicen que la conexión es rechazada.

$ curl http://127.0.0.1:8080/curl: (7) Failed to connect to 127.0.0.1 port 8080: Connection refused$ wget http://127.0.0.1:8080/--2016-04-21 20:07:32--  http://127.0.0.1:8080/Connecting to 127.0.0.1:8080... failed: Connection refused. 

Necesitas agregar el EXPOSE declaración a su Dockerfile para el puerto 8080.

Aquí está la referencia de Docker: https://docs.docker.com/engine/reference/builder/#expose

Su Dockerfile final debería verse así:

FROM adzerk/boot-cljEXPOSE 8080WORKDIR /appCOPY . /app

el modificador-p perforará un agujero a través de su host que conecta con su instancia de docker, -p host_port:docker_instance_port

Ahora debe averiguar dónde reside su host de Docker. Si está utilizando VirtualBox, intente ejecutar :

docker-entorno de máquina

http://javagoogleappspot.blogspot.com/2018/07/docker-basics.html

@pratheek61 Sin resultados. ` netstat-tunl | grep 8080 ’ devuelve vacío.

Olvidó decir qué sucede cuando intenta conectarse al servicio.

Puede publicar la salida de un ‘netstat-tunlp’?

@MichaelHampton Absolutamente. He agregado la salida de Docker y no sucede nada al intentar conectarse al servicio web.

@prateek61, estoy en OSX, y cuando ejecuto ’ netstat-tunlp`, me dice * * netstat: option requiere un argumento – p**.

Lo siento, solo haz ‘netstat-tunl’ para OSX

@prateek61 ‘netstat-tunl / wc’ tiene más de 500 líneas. Se necesita demasiado tiempo para copiar todo el asunto. Pero la salida se ve así.

@Frye ¿ves 8080 en la salida? Intenta saludarlo.