docker wildcard-subdomain

Enrutar el tráfico a un contenedor docker basado en subdominio



docker proxy reverse (4)

Fui con el interlock para enrutar el tráfico http utilizando el complemento nginx . Me decidí a usar un puerto aleatorio para cada conexión SSH ya que no podía hacerlo funcionar solo con el subdominio.

Tengo comodín dns apuntado a mi servidor, por ejemplo, * .dominio.com

Me gustaría enrutar cada subdominio a su propio contenedor docker. De modo que box1.domain.com va al contenedor apropiado de la ventana acoplable. Esto debería funcionar para cualquier tráfico principalmente HTTP y SSH.

O tal vez el puerto puede ser parte del subdominio, por ejemplo, 80.box1.domain.com. Tendré muchos contenedores docker, por lo que la solución debe ser dinámica y no codificada para cada contenedor.


La solución más sencilla sería utilizar el método RewriteMap de Apache mod_rewrite. Es muy eficaz cuando se usa contra un archivo de texto, pero puede llamar a un script si lo desea. Hay otra respuesta de que cubre bastante bien la variante del script.

Si desea evitar a Apache, la buena gente que se encuentra en dotCloud creó Hipache para hacer el enrutamiento de sus servicios de PaaS. Incluso documentaron las diferentes cosas que intentaron antes de construir su propia solución. Encontré una referencia a tsuru.io usando hipache exactamente para enrutar a los contenedores de la ventana acoplable, por lo que definitivamente lo valida para este propósito.


Otra solución sería utilizar https://github.com/jwilder/nginx-proxy .

Esta herramienta envía automáticamente las solicitudes al contenedor apropiado (basado en el subdominio a través de la variable de entorno del contenedor VIRTUAL_HOST ).

Por ejemplo, si desea redireccionar box1.domain.com a un contenedor, simplemente configure la variable de entorno del contenedor VIRTUAL_HOST en " box1.domain.com ".

Aquí hay un tutorial detallado que escribí al respecto: http://blog.florianlopes.io/host-multiple-websites-on-single-host-docker .


Mi respuesta puede llegar tarde, pero cuando usa la ventana acoplable no necesita ssh para conectarse a sus contenedores. con el comando docker exec , puede ejecutar el comando de shell directamente en su contenedor en ejecución.

Este es mi consejo: use el contenedor https://github.com/jwilder/nginx-proxy que aparece al principio para configurar subdominios. y ejecute el programa de portainer en su host para tener una visión general de sus Contenedores, imágenes, registros e incluso ejecutar comandos en todo esto a través de la interfaz del portainer.