¿Cómo configurar e implementar plantillas de aplicaciones personalizadas en Container Station 3?


Última fecha de modificación: 2023-03-27

Las plantillas de aplicaciones de Container Station le permiten implementar contenedores preconfigurados en su entorno de QNAP. De forma predeterminada, Container Station proporciona un conjunto de plantillas verificadas por QNAP, pero puede añadir otras plantillas de aplicaciones personalizadas que satisfagan sus necesidades específicas. Puede alojar estas plantillas de aplicaciones personalizadas directamente en su dispositivo QNAP o en un servidor web externo.

En este tutorial se explican dos métodos para alojar plantillas de aplicaciones personalizadas en su dispositivo QNAP, así como el modo de configurar Container Station para acceder a dichas plantillas de aplicaciones personalizadas.

Creación de un archivo de plantillas de aplicaciones personalizadas

El primer paso es crear un archivo de plantillas de aplicaciones personalizadas. De forma predeterminada, Container Station proporciona con su dispositivo QNAP una lista de contenedores que se ha verificado que funcionan correctamente. Puede descargar y modificar plantillas verificadas por QNAP aquí, o bien crear por su cuenta un nuevo archivo.

Nota:

Puede modificar el archivo de plantillas con cualquier editor de texto.

Formato de la plantilla de aplicaciones

Las definiciones de las plantillas de aplicaciones se escriben en JSON. Las plantillas válidas constan de una matriz y uno o más elementos de la plantilla de contenedor. Cada elemento de la plantilla de contenedor es un objeto JSON que incluye cualquier campo de datos obligatorio u opcional. El formato debe ser similar al del siguiente ejemplo:

{
  “templates”: [
    {
      // template1
    },
    {
      // template2
    },
    ...
  ]
}

Formato de elemento JSON

type

Atributo

Descripción

Descripción

El tipo de contenedor (Docker o LXD) para esta plantilla.

Importancia

Obligatorio

Formato

Número entero

Valores aceptados

  • 1: Se usa para contenedores Docker.

  • 10: Se usa para contenedores LXD.

title

Atributo

Descripción

Descripción

El título de la plantilla.

Importancia

Obligatorio

Formato

Cadena

Valores aceptados

Cualquier valor de cadena

sub_title

Atributo

Descripción

Descripción

Información acerca de la versión de la plantilla.

Importancia

Obligatorio

Formato

Cadena

Valores aceptados

Cualquier valor de cadena

description

Atributo

Descripción

Descripción

Descripción usada para proporcionar información acerca de la plantilla.

Importancia

Obligatorio

Formato

Cadena

Valores aceptados

Cualquier valor de cadena

logo

Atributo

Descripción

Descripción

La ubicación de un logotipo para la plantilla.

Importancia

Opcional

Formato

Cadena

Valores aceptados

Cualquier URL o ruta válidos relativos al dominio de red donde está alojada la plantilla de aplicación personalizada.

location

Atributo

Descripción

Descripción

El URL de la plantilla. Puede ser una página web de introducción para la plantilla

Importancia

Opcional

Formato

Cadena

Valores aceptados

Cualquier URL válido.

platform

Atributo

Descripción

Descripción

La plataforma admitida. Debe contener un valor válido.

Importancia

Obligatorio

Formato

Cadena

Valores aceptados

  • linux: Todas las plataformas

  • linux/amd64: x86 de 64 bits

  • linux/arm64: ARM de 64 bits

  • linux/arm: ARM de 32 bits

Ejemplo

{
  "platform": "linux/amd64"
}

image

Atributo

Descripción

Descripción

La imagen asociada con una plantilla.

Importancia

Obligatorio

Formato

Cadena

Valores aceptados

Cualquier imagen válida

Ejemplo

{
  "image": "nginx:latest"
}

command

Atributo

Descripción

Descripción

El comando que se ejecuta en el contenedor Docker. Si no se especifica, el contenedor usa el comando predeterminado especificado en el Dockerfile.

Importancia

Opcional

Formato

Cadena

Valores aceptados

Cualquier valor de cadena

Ejemplo

{
  "command": "nginx -g 'daemon off;'"
}

entrypoint

Atributo

Descripción

Descripción

El punto de entrada para iniciar el contenedor Docker. Si no se especifica, el contenedor usa el punto de entrada predeterminado especificado en el Dockerfile.

Importancia

Opcional

Formato

Cadena

Valores aceptados

Cualquier valor de cadena

Ejemplo

{
  "entrypoint": "/docker-entrypoint.sh"
}

env

Atributo

Descripción

Descripción

Matriz JSON que describe las variables de entorno requeridas por una plantilla. Cada elemento de la matriz debe ser un objeto JSON válido.

Importancia

Opcional

Formato

Matriz

Valores aceptados

Una matriz JSON válida

Formato de la matriz

  • name: (Obligatorio) El nombre de la variable de entorno admitida en la imagen del contenedor.

  • value: (Obligatorio) El valor asociado a la variable

Ejemplo

{
  "env": [
    { "name": "ENV_VAR1", "value": "" },
    { "name": "ENV_VAR2", "value": "value2" }
  ]
}

labels

Atributo

Descripción

Descripción

Matriz JSON que describe las etiquetas asociadas con una plantilla. Cada elemento de la matriz debe ser un objeto JSON válido.

Importancia

Opcional

Formato

Matriz

Valores aceptados

Una matriz JSON válida

Formato de la matriz

  • name: (Obligatorio) El nombre de la clave de etiqueta

  • value: (Obligatorio) El valor asociado a la clave

Ejemplo

{
  "labels": [
    { "name": "com.example.vendor", "value": "Acme Incorporated" },
    { "name": "com.example.label-with-value", "value": "foo" },
    { "name": "version", "value": "1.0" }
  ]
}

volumes

Atributo

Descripción

Descripción

Matriz JSON que describe los volúmenes asociadas con una plantilla. Cada elemento de la matriz debe ser un objeto JSON válido con una propiedad de contenedor obligatoria.

Importancia

Opcional

Formato

Matriz

Valores aceptados

Una matriz JSON válida

Formato de la matriz

  • container: (Obligatorio) La ruta del contenedor.

  • volume: (Opcional) El nombre del volumen del Docker.

  • bind: (Opcional para contenedores Docker, obligatorio para contenedores LXD) La ruta host usada como origen de un montaje de vinculación.

  • readonly: (Opcional) Si está configurado en true, el volumen se monta en modo de solo lectura.

Ejemplo

{
  "volumes": [
    {
      "container": "/usr/share/nginx/html"
    },
    {
      "container": "/usr/share/nginx/html"
      "volume": "nginx-vol"
    },
    {
      "container": "/usr/share/nginx/html/my-templates.json",
      "bind": "/Container/my-templates.json  ",
      "readonly": true
    }
  ]
}

puertos

Atributo

Descripción

Descripción

Matriz JSON que describe los puertos expuestos por una plantilla. Cada elemento de la matriz debe ser una cadena JSON válida que especifica el número de puerto del contenedor, así como el protocolo. Esto puede llevar opcionalmente como prefijo un número de puerto y dos puntos (por ejemplo, 8080:) para definir el puerto que se está asignando en el host. Si no se especifica el puerto del host, el host del Docker asigna automáticamente un puerto cuando se inicia el contenedor.

Importancia

Opcional

Formato

Matriz

Valores aceptados

Una matriz JSON válida

Ejemplo

{
  "ports": ["8080:80/tcp", "443/tcp", "80/udp"]
}

hostname

Atributo

Descripción

Descripción

El nombre de host del contenedor. Puede ayudar a identificar con facilidad al contenedor.

Importancia

Opcional

Formato

Cadena

Valores aceptados

Cualquier valor de cadena

Ejemplo

{
  "hostname": "myContainerHostName"
}

restart_policy

Atributo

Descripción

Descripción

La política de reinicio asociada con el contenedor Docker. Si no se especifica, el valor predeterminado es unless-stopped.

Importancia

Opcional

Formato

Cadena

Valores aceptados

  • no: No reiniciar el contenedor automáticamente.

  • on-failure: Reiniciar el contenedor si se cierra debido a errores, como un código de salida distinto de cero.

  • always: Reiniciar siempre el contenedor si se detiene. Si se detiene manualmente, solo se reinicia cuando Container Station se reinicia o si el usuario reinicia manualmente el contenedor.

  • unless-stopped: De forma similar a Always, excepto que cuando el contenedor se detiene manualmente, no se reinicia ni siquiera después de que se reinicie Container Station.

Ejemplo

{
  "restart_policy": "unless-stopped"
}

auto_start_policy

Atributo

Descripción

Descripción

La política de inicio automático asociada con el contenedor LXD. Si no se especifica, el valor predeterminado esretain.

Importancia

Opcional

Formato

Cadena

Valores aceptados

  • no: No reiniciar el contenedor automáticamente.

  • always: Reiniciar siempre el contenedor si se detiene. Si se detiene manualmente, solo se reinicia cuando Container Station se reinicia o si el usuario reinicia manualmente el contenedor.

  • retain: De forma similar a Always, excepto que cuando el contenedor se detiene manualmente, no se reinicia ni siquiera después de que se reinicie Container Station.

Ejemplo

{
  "auto_start_policy": "retain"
}

interactive

Atributo

Descripción

Descripción

Controla si el contenedor Docker debe iniciarse en modo de primer plano. Si no se especifica, el valor predeterminado es true.

Importancia

Opcional

Formato

Booleano

Valores aceptados

  • true: Inicia el contenedor Docker en modo de primer plano.

  • false: Inicia el contenedor en modo desacoplado.

Ejemplo

{
  "interactive": false
}

tty

Atributo

Descripción

Descripción

Controla si se debe asignar un TTY falso al contenedor Docker. Si no se especifica, el valor predeterminado estrue.

Importancia

Opcional

Formato

Booleano

Valores aceptados

  • true: Asigna un TTY falso al contenedor Docker

  • false: No asigna un TTY falso al contenedor Docker.

Ejemplo

{
  "tty": false
}

privileged

Atributo

Descripción

Descripción

Controla si el contenedor debe iniciarse en modo privilegiado. Si no se especifica, el valor predeterminado es false.

Importancia

Opcional

Formato

Booleano

Valores aceptados

  • true: Inicia el contenedor en modo privilegiado.

  • false: No Inicia el contenedor en modo privilegiado.

Ejemplo

{
  "privileged": true
}

Alojamiento de una plantilla de aplicaciones personalizadas en un contenedor NGINX

A continuación, deberá hacer que la plantillas de aplicaciones personalizadas esté disponible para Container Station. En este tema se explica el proceso de alojar el archivo de plantillas con un contenedor NGINX que también se ejecute en Container Station.

Como alternativa, también puede alojar el archivo de plantillas de aplicaciones en el servidor web de QNAP. Consulte Alojamiento de una plantilla de aplicaciones personalizadas con el servidor web de QNAP.

Importante:

Después de actualizar el archivo JSON de plantillas de aplicaciones personalizadas, deberá reiniciar el contenedor NGINX para que los cambios se reflejen dentro del contenedor.

  1. Cargue el archivo de plantillas de aplicaciones personalizadas.
    1. Abra File Station.
    2. Navegue a una carpeta en el dispositivo.
    3. Cargue el archivo de plantillas de aplicaciones.
    4. Tome nota de la ubicación del archivo de plantillas de aplicaciones para su uso futuro.
  2. Abra Container Station.
  3. En el panel superior, haga clic en la flecha situada junto a Explorar
  4. Seleccione Crear contenedor.

    Se abrirá la ventana Crear contenedor.

  5. Seleccione una imagen.

    Configuración

    Acción

    Modo

    Seleccione Modo básico.

    Registro

    Seleccione Docker Hub.

    Imagen

    Escribanginx.

  6. Haga clic en Siguiente.
  7. Opcional: Establezca la configuración del contenedor.

    Configuración

    Acción

    Nombre

    Introduzca un nombre para el contenedor. Por ejemplo: nginx-my-template.

    Política de inicio automático

    Seleccione Salvo que se detenga.

    Esta opción hará que el contenedor se reinicie siempre a menos que sea detenido por un usuario.

    Configuración de red

    Establezca la configuración para que se ajuste al entorno de red.

    En este tutorial, usaremos el modo de red Predeterminado y enviaremos tráfico al contenedor a través del puerto30080 del host.

    Nota:

    Si no se especifica el campo Host, el puerto publicado podría cambiar una vez que se reinicie el contenedor. Esto podría hacer que la plantilla de la aplicación dejara de estar accesible para Container Station.

  8. Opcional: Modifique la configuración avanzada.
    1. Haga clic en Configuración avanzada.

      Aparecerá la ventana Configuración avanzada.

    2. Vaya a la pestaña Almacenamiento.
    3. Haga clic en la flecha junto a Añadir volumen.
    4. Seleccione Vincular ruta host de montaje.

      Se añadirá una nueva fila de almacenamiento.

    5. Haga clic en .

      Se abrirá la ventana Seleccionar ruta de host.

    6. Localice y seleccione el archivo de plantillas de aplicaciones que actualizó anteriormente.
    7. Haga clic en Aplicar.
    8. En el campo Container, escriba /usr/share/nginx/html/TEMPLATE_FILENAME.
      Nota:

      Sustituya TEMPLATE_FILENAME por el nombre de su archivo de plantilla. Por ejemplo: /usr/share/nginx/html/my-templates.json

    9. Seleccione RO.
    10. Haga clic en Aplicar.

      Container Station guarda la configuración de almacenamiento.

  9. Haga clic en Siguiente.
  10. Revise la configuración del contenedor y haga clic en Finalizar.

El archivo de plantillas de aplicaciones pasa a estar disponible para su uso.

Nota:

Puede verificar que el archivo de plantillas de aplicaciones está accesible escribiendo http://HOST_IP_ADDRESS:PUBLISHED_HOST_PORT/TEMPLATE_FILENAME en el navegador web. Por ejemplo: http://192.168.1.1:30080/my-templates.json.

Alojamiento de una plantilla de aplicaciones personalizadas con el servidor web de QNAP

A continuación, deberá hacer que la plantillas de aplicaciones personalizadas esté disponible para Container Station. En este tema se explica el proceso de alojar el archivo de plantilla con el servidor web de QNAP.

Como alternativa, también se puede alojar el archivo de plantillas de aplicaciones con un contenedor NGINX directamente en Container Station. Consulte Alojamiento de una plantilla de aplicaciones personalizadas en un contenedor NGINX.

  1. Habilite el servidor web de QTS.
    1. Inicie sesión en el sistema como administrador.
    2. Vaya a Panel de control > Aplicaciones > Servidor Web > Servidor web.
    3. Seleccione Habilitar el servidor Web.
    4. Opcional: Establezca la configuración del servidor web.
    5. Haga clic en Aplicar.

      El sistema habilitará el servidor web

  2. Cargue el archivo de plantillas de aplicaciones personalizadas.
    1. Abra File Station.
    2. Acceda a la carpeta Web creada para el servidor web.
    3. Cargue el archivo de plantillas de aplicaciones.

El archivo de plantillas de aplicaciones pasa a estar disponible para su uso.

Nota:

Puede verificar que el archivo de plantillas de aplicaciones está accesible escribiendo http://HOST_IP_ADDRESS:WEB_SERVER_PORT/TEMPLATE_FILENAME en el navegador web. Por ejemplo: http://192.168.1.1:80/my-templates.json.

Adición de una plantilla de aplicaciones personalizadas a Container Station

El siguiente paso es añadir el archivo de plantillas de aplicaciones personalizadas a Container Station. De esta forma, la lista de aplicaciones disponibles estará disponible en Container Station.

  1. Inicie Container Station.
  2. En el menú, haga clic en Preferencias.
  3. Vaya a Plantillas de aplicaciones.
  4. Seleccione Habilitar plantilla personalizada.
  5. Especifique el URL de una plantilla de aplicaciones personalizadas.
    Nota:

    En función de su configuración, es posible que el URL precise la inclusión de la dirección IP y del número de puerto del servidor web configurado. Por ejemplo: http://192.168.1.1:30080/my-template-file.json.

  6. Haga clic en Aplicar.

Container Station guarda la plantilla de aplicación personalizada.

Implementación de una plantilla de aplicaciones personalizadas

El último paso es implementar un contenedor dese el archivo de plantillas de aplicaciones personalizadas que añadió en el paso anterior.

  1. En el menú, vaya a Plantillas de aplicaciones.
  2. Vaya a la pestaña Plantillas personalizadas.
  3. Identifique una plantilla.
  4. Haga clic en Implementar.

Se abrirá el asistente Implementar contenedor. Consulte Creación de un contenedor Docker.

¿Le ha resultado útil este artículo?

El 60% de las personas piensa que ayuda.
Gracias por sus comentarios.

Díganos cómo podemos mejorar este artículo:

Si desea enviarnos más comentarios, inclúyalos a continuación.

Elija especificación

      Mostrar más Mostrar menos

      Este portal en otros países / regiones:

      open menu
      back to top