pricing imagenes hub ducker docker port

docker - imagenes - ducker hub



¿Se pueden ejecutar múltiples contenedores Docker utilizando el mismo host/puerto? (4)

He estado buscando en el uso de Docker para un proyecto de servicio REST. Una pregunta que tengo es si podríamos usar Docker para ejecutar varias versiones del servicio en el mismo host / puerto.

Por ejemplo, quiero tener un punto final en {myserver}: 8080 / v1 / y otro en {myserver}: 8080 / v2 /.

Si es relevante, estas serían imágenes Docker basadas en Java: 8 construidas con un java en el marco REST de Spring Boot.

¿Es esto posible con los contenedores Docker?


Esto es tanto una pregunta acerca de cómo funcionan los puertos tcp como la forma en que funciona la ventana acoplable. De la misma manera que dos aplicaciones no pueden vincularse al mismo puerto TCP, ninguno de los dos puede acoplar contenedores.

Como @Sergei Rodionov señala, SO_REUSEPORT se puede usar para permitir que varios procesos compartan el mismo puerto TCP (y esto se puede especificar al iniciar su aplicación Java). No creo que esto funcione a través de contenedores.


Puede ejecutar ambos contenedores utilizando diferentes puertos de host y usar un haproxy / nginx / varnish (nativo o dentro de otro contenedor) escuchando el puerto de host y redirigiendo al contenedor correcto en función de la URL.


Sí, es posible siempre que los contenedores utilicen una dirección IP diferente. Puede verificar la dirección IP de los contenedores usando el comando a continuación.

docker inspect -f ''{{ .NetworkSettings.IPAddress }}'' <container ID>


Sí, esto es posible siempre que esté utilizando diferentes direcciones de red para cada puerto duplicado en el que esté escuchando.

Por ejemplo, su host tiene las siguientes direcciones IP asignadas: 192.168.11.223 10.88.88.12

Podría tener dos contenedores separados que escuchen: 192.168.11.223:80 10.88.88.12:80

Si nos fijamos en la sintaxis de ejecución de la ventana acoplable:

-p=[] : Publish a container᾿s port or a range of ports to the host format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort Both hostPort and containerPort can be specified as a range of ports. When specifying ranges for both, the number of container ports in the range must match the number of host ports in the range. (e.g., `-p 1234-1236:1234-1236/tcp`) (use ''docker port'' to see the actual mapping)