Vea el tutorial en vídeo (EN)

Docker es una plataforma para aplicaciones distribuidas que permite a desarrolladores y administradores de sistema ejecutar aplicaciones en contenedores. Esta le permite usar software específico, como puede ser el caso de Redis o MongoDB o bien una versión específica del software que puede que no sea soportada por su sistema operativo o que requiera compilación.

Docker está disponible como extensión de Plesk. Plesk le permite ejecutar y gestionar contenedores basados en imágenes específicas de Docker, así como usar Docker no sólo en el host local, sino también en la máquina remota especificada.

Requisitos y limitaciones

  • Docker is supported in Plesk for the following operating systems: CentOS 7, RedHat 7, Debian 8, Debian 9, Ubuntu 14.04, Ubuntu 16.04, and Ubuntu 18.04.

    En el caso de Plesk para Windows, puede usar Docker instalado en una máquina remota. Para más información al respecto, consulte Uso de Docker de forma remota a continuación.

  • No puede usar Docker en caso de que Plesk se ejecute en Windows Server 2008.

  • No puede usar Docker en caso de que Plesk se haya desplegado en un contenedor Docker.

  • Para usar los servicios de Docker remoto en Plesk es necesario disponer de una licencia adicional. Esta puede comprarse aparte o bien como parte de Hosting Pack.

  • Tenga en cuenta que Docker sólo puede ejecutarse en sistemas x64.

  • Los contenedores Docker en Plesk no pueden migrarse ni copiarse. De todos modos, puede crear un backup de los datos usados por los contenedores. Para más información, consulte Asignación de volúmenes a continuación o descargue las instantáneas correspondientes.

  • Se soporta Virtuozzo 7 que tenga instalado Update 1 Hotfix 1 (7.0.1-686) o una versión posterior. Tenga en cuenta que a partir de esta actualización, los nuevos contenedores basados en CentOS 7 se crean por omisión con el firewall activado para una mayor seguridad. En este caso, el administrador de Plesk deberá configurar el firewall de forma manual para así garantizar que los puertos necesarios para el funcionamiento de Plesk están debidamente abiertos.

Cómo empezar a usar Docker

Instale la extensión Docker en Plesk.

Para empezar a usarla, vaya a Docker en el panel de navegación que aparece a la izquierda.

Catálogo de imágenes

En el catálogo (en Docker > Catálogo de imágenes de Docker), Plesk muestra imágenes de https://hub.docker.com/explore. Por defecto, sólo se muestran las imágenes recomendadas. Para ver más imágenes, use el cuadro de búsqueda o los filtros.

Para cada aplicación se ofrecen múltiples versiones. Puede ejecutar una versión determinada seleccionando la etiqueta apropiada tal y como se muestra a continuación.

image 76044

Para usar filtros:

  1. Haga clic en el botón de flecha image 76322 que aparece al lado del cuadro de búsqueda.

  2. Especifique el nombre de la imagen y el repositorio o uno de estos.

    Puede seleccionar los siguientes repositorios:

    • Repositorio local - contiene imágenes locales. Se trata de imágenes ya descargadas y que ahora se almacenan en el servidor con Docker. Si desea más información, consulte Administración de imágenes locales más adelante en esta sección.
    • Docker Hub - https://hub.docker.com/explore.

Para ejecutar un contenedor:

  1. Vaya a Docker > Catálogo de imágenes de Docker.

  2. Para encontrar rápidamente aplicaciones en el catálogo, use el cuadro de búsqueda o los filtros.

  3. Si desea ver la documentación y la descripción de una aplicación en Docker Hub, haga clic en el nombre de la imagen. Esto no es aplicable a imágenes locales.

  4. Para ejecutar una versión específica, haga clic en la flecha que aparece al lado del botón Ejecutar y seleccione la versión de la aplicación.

  5. Para ejecutar la versión más reciente de la aplicación seleccionada, haga clic en Ejecutar.

    Si la imagen se almacena localmente, el botón aparecerá como Ejecutar (local).

    Plesk crea un contenedor y le pide que especifique su configuración, como por ejemplo las variables de entorno. A continuación, se procederá con la ejecución del contenedor. Puede cancelar su ejecución haciendo clic en Cancelar en la pantalla Configuración. Si desea más información acerca de la configuración, consulte Configuración de los contenedores más adelante en esta página.

  6. El contenedor se mostrará en la lista de contenedores presente en la parte superior de la página Catálogo de Docker.

    image 76046

Examine el registro (Registros) para ver la configuración que debe tener el contenedor para poderse ejecutar correctamente.

Configuración de un contenedor

Nota: si desea modificar la configuración del contenedor, no es necesario detenerlo. Cuando guarde la nueva configuración, Plesk volverá a crear el contenedor.

Para editar la configuración de un contenedor, vaya a Configuración o Detalles > Configuración.

image 78131

Limitación de la memoria

Por defecto, en contenedores Docker el uso de la RAM es ilimitado. Si desea limitar el uso de la RAM, deseleccione la casilla Ilimitado e introduzca el valor límite en megabytes en el campo Límite de memoria.

Nota: en estos momentos, en contenedores Docker no puede limitarse el uso de disco y de CPU.

Nota: los contenedores Docker son objetos a nivel del administrador y no son controlados por límites cgroups a nivel de la suscripción (CPU, RAM, uso de disco).

Inicio automático

Si no se selecciona la opción Inicio automático tras reiniciar el sistema, una vez se reinicie el sistema, los sitios web que utilizan este contenedor pueden no estar operativos, por lo que usted deberá iniciar el contenedor manualmente.

Asignación de puertos

Por omisión, la Asignación automática de puerto está activada y el puerto interno del contenedor está asignado a un puerto aleatorio en el sistema host (por ejemplo, 32768).

Para modificar el puerto en el sistema host, deseleccione la opción Asignación automática de puerto y especifique otro puerto externo en Asignación manual. Si cuando deselecciona la casilla no aparece Asignación manual, esto significa que el contenedor no expone puertos.

Advertencia: de no configurarse la asignación de puertos, Docker enlazará al puerto especificado en todos los interfaces de red del sistema host. Generalmente, esto significa que puede accederse a la aplicación desde cualquier sitio. Docker hace gala de que la autenticación únicamente es gestionada por la propia aplicación, si bien no siempre es así. Por ejemplo, MySQL no permite el acceso anónimo de forma predeterminada, si bien redis sí lo permite.

Plesk no puede determinar los servicios instalados en un determinado contenedor Docker ni tampoco puede controlar el acceso a los mismos. Si necesita prohibir el acceso a la aplicación desde fuera de Plesk, efectúe la prohibición manualmente mediante el firewall presente en el sistema host.

Asignación de volúmenes

Los volúmenes de Docker son directorios presentes en su servidor que se han montado en un contenedor Docker, lo que le permite disponer de un almacenamiento constante al que puede accederse desde su sistema host. Los datos presentes en estos directorios pueden copiarse y, lo que aún es más importante, no se eliminan cuando detiene o elimina un contenedor.

For more information about data in containers, refer to the Docker documentation.

Para añadir una asignación de volumen, especifique lo siguiente:

  • En la primera casilla (izquierda) - la ruta al directorio del servidor donde desea montar el contenedor.
  • En la segunda casilla (derecha) marcada como Origen) - la ruta a un directorio en el contenedor.

Para asignar más directorios, haga clic en Añadir asignación.

Configuración de las variables de entorno

Las variables de entorno son usadas por la aplicación en un contenedor. Puede que necesite añadir más variables o editar las variables existentes. Plesk le permite añadir tantas variables como desee.

Operaciones con contenedores

Puede hacer lo siguiente con los contenedores:

  • Reiniciar (Reiniciar) o detener (Detener) un contenedor. En estos casos, se recreará el contenedor con la configuración actual.

    Nota: si no guardó los datos en los volúmenes montados, se perderán los datos. Si desea más información al respecto, consulte la sección Asignación de volúmenes a continuación.

  • Ver los registros y el consumo de recursos (Detalles).

  • Editar la configuración de un contenedor, como por ejemplo las variables de entorno o la asignación de volúmenes (Configuración o Detalles > Configuración).

    En Plesk en CentOS, puede establecer un límite de memoria para el contenedor (Configuración > Límite de memoria).

  • Cambiar el nombre de un contenedor (Configuración > Nombre del contenedor).

  • Volver a crear un contenedor usando la misma versión de la imagen u otra versión distinta (Detalles > Recrear).

  • Crear una imagen basándose en un contenedor con su configuración personalizada (Detalles > Guardar como imagen).

  • Crear una instantánea de un contenedor (Detalles > Descargar una instantánea).

  • Eliminar un contenedor (Eliminar o Detalles > Eliminar).

Recreación de un contenedor

Generalmente necesitará recrear un contenedor cuando desee actualizar la aplicación. De hecho, en términos generales, puede recrear un contenedor usando cualquier versión de la aplicación disponible en el catálogo, no necesariamente la más reciente.

Si ha personalizado la configuración, esta se preservará durante el proceso de recreación. Para conservar los datos usados por la aplicación en un contenedor, especifique la asignación de volumen antes de recrear el contenedor. La asignación de volúmenes le permite acceder a los directorios usados en un contenedor. Si desea más información al respecto, consulte Asignación de volumen en la configuración del contenedor.

Para recrear un contenedor:

  1. Vaya a Docker y haga clic en Detalles debajo del contenedor que desea recrear.
  2. En la configuración del contenedor, haga clic en Recrear y especifique la versión de la imagen y si desea utilizar las variables de entorno predeterminadas.

Uso de Docker de forma remota

Por defecto, Plesk utiliza Docker instalado como un componente de Plesk. De todos modos, puede usar uno o más de los servicios de Docker instalados fuera de Plesk. Tenga en cuenta que sólo puede usar un servicio a la vez.El nombre de host del servidor seleccionado se muestra en el título del catálogo de Docker en Plesk.

Nota: la gestión de los servicios remotos de Docker requiere disponer de un complemento para la llave de licencia de Plesk. Si no dispone de dicho complemento sólo podrá administrar el servicio local de Docker que se ejecuta en el servidor Plesk.

Configuración de servicios remotos

Configure los servidores remotos que ejecutan Docker tal y como se describe en la documentación de Docker para así poderlos usar como servidores remotos en Plesk.

Gestión de servicios remotos

Los pasos detallados a continuación son aplicables tanto a Plesk para Linux como a Plesk para Windows.

Para empezar a usar Docker ejecutándose en un host remoto:

  1. Vaya a Herramientas y configuración > Docker - debajo de Administración del servidor.
  2. Haga clic en Añadir servidor e indique la configuración del servidor remoto con Docker.
  3. Para empezar a usar este servicio de Docker en Plesk, deje Definir activo seleccionado.

En el panel de navegación a la izquierda (Plesk para Windows) podrá ver el enlace a Docker.

Para pasar de un servicio de Docker a otro:

  1. Vaya a Herramientas y configuración > Docker - debajo de Administración del servidor.
  2. En la lista de servidores, seleccione el servidor que usará y haga clic en Definir activo.

También puede establecer el servidor como activo mientras edita su configuración.

image 76284

Creación de imágenes con una configuración personalizada

Si desea crear una nueva imagen basada en los cambios realizados en un contenedor, use el comando Guardar como imagen. Este comando efectúa una instantánea de su contenedor, que se muestra como una imagen nueva en el catálogo de imágenes. De esta forma puede crear imágenes con parámetros personalizados, como puede ser el caso de las variables de entorno.

Para crear una imagen de uno de sus contenedores:

Vaya a Docker > Detalles debajo del nombre del contenedor > Guardar como imagen y opcionalmente indique lo siguiente:

  • Nombre de la imagen. Por defecto, se generará un ID que se usará como nombre.
  • Etiqueta. Aquí puede indicar la versión de la imagen. Por defecto, la versión será «latest».

La imagen creada aparece en el catálogo de imágenes y se marca como Imagen local.

Administración de imágenes locales

Las imágenes locales son imágenes almacenadas por Docker en un disco local, por lo que no es necesario descargarlas del catálogo de imágenes.

Una imagen deviene local en las siguientes situaciones:

  • Usted ha seleccionado cualquier versión (etiqueta) de una imagen y la imagen se ha empezado a descargar. Si más adelante ejecuta un contenedor o cancela su ejecución (en la pantalla Configuración), la imagen se guarda de forma local.
  • Usted ha cargado una imagen al catálogo de Docker en Plesk (Cargar imagen en el catálogo de imágenes de Docker).
  • Usted ha creado una imagen personalizada de un contenedor. Para más información al respecto, consulte Creación de imágenes con una configuración personalizada.
  • Usted ha creado una imagen mediante el interfaz de línea de comandos.

Si Docker al menos tiene una versión descargada de un grupo de versiones perteneciente a una imagen, esta imagen se marcará como Imagen local en el catálogo. Ejecutar (local) significa que ya se descargó la versión más reciente. Plesk también muestra cuántas imágenes locales existen para un producto.

image 76318

Para ver las imágenes locales y eliminar aquellas imágenes en desuso:

  1. Vaya a Docker > Catálogo de imágenes de Docker.

  2. Para encontrar todas las imágenes locales, haga clic en la flecha que aparece al lado del cuadro de búsqueda y seleccione Local en el filtro Repositorio.

  3. Si desea ver todas las imágenes locales de un producto determinado, haga clic en el enlace que se muestra debajo del nombre del producto. Se mostrarán las etiquetas de todas las imágenes locales y el espacio en disco usado.

    image 76321

  4. Si desea eliminar todas las imágenes, haga clic en Borrar todas las imágenes.

  5. Si de lo contrario desea eliminar una imagen determinada, haga clic en el botón Eliminar image 76316 que aparece al lado de la imagen que desea eliminar.

Configuración de nginx para el envío de peticiones de dominios a un contenedor

Algunos contenedores Docker exponen puertos para que se pueda acceder a las aplicaciones presentes en los contenedores mediante estos puertos.

Cuando usa una aplicación en un contenedor Docker en su sitio web, puede que no le resulte demasiado cómodo especificar el puerto no estándar en su URL. Para ello, puede configurar nginx para que envíe las peticiones de los dominios a dicho puerto y así los dominios podrán usar un puerto estándar (como el 80) y no será necesario especificar explícitamente el puerto en la URL.

Requisitos

  • nginx debe estar en ejecución en Plesk.
  • Debe asignar el puerto en un contenedor a algún puerto presente en el sistema host (por ejemplo, 32768) de forma manual (Docker > seleccione un contenedor > Configuración > deseleccione la opción Asignación automática de puerto).

Una vez asignado el puerto en un contenedor de forma manual a algún puerto de su sistema (por ejemplo, 32768), puede configurar nginx para que envíe las peticiones de los dominios a dicho puerto para que así los dominios puedan usar un puerto estándar en nginx (por ejemplo, 80).Para ello, añada una regla para nginx en la configuración del dominio de la siguiente forma:

Vaya a Sitios web y dominios > el dominio > Reglas de proxy > Añadir regla y especifique lo siguiente:

  • URL. Especifique la URL del sitio web que utiliza una aplicación en ejecución en un contenedor. Puede ser el sitio web principal o parte de este.
  • Contenedor. Seleccione la aplicación que se ejecuta como un contenedor Docker.
  • Puerto. Seleccione una de las asignaciones especificadas en la configuración del contenedor (un puerto en un contenedor asignado a un puerto en su sistema). Nginx enviará las peticiones al puerto en el sistema.

Las reglas de proxy se implementan en la configuración del servidor web, por ejemplo, en el archivo  nginx.conf  del sitio web presente en  /var/www/vhosts/system/$domain/conf/:

#extension docker begin
location ~ ^/.* {
    proxy_pass http://0.0.0.0:9080;
    proxy_set_header Host             $host;
    proxy_set_header X-Real-IP        $remote_addr;
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
}
#extension docker end

Las reglas de proxy deberían funcionar correctamente en servidores que se encuentren detrás de NAT.

Nota: los contenedores Docker conectados a un sitio web mediante reglas de proxy no se tienen en cuenta al contabilizar el uso del espacio en disco de la suscripción. La única excepción serían cuando el directorio de un sitio web se ha montado en un contenedor Docker como volumen, ya que en este caso cuando se contabilizara el uso del espacio en disco del sitio web se tendrían en cuenta todos los archivos presentes en el contenedor.