Using Docker

Watch the video tutorial

Docker is a platform for distributed applications for developers and system administrators that allows running applications in containers. It enables you to use specific software, such as Redis or MongoDB, or a specific version of software, which might not be supported by your operating system or might need compiling.

Docker is available as a Plesk extension. Plesk allows you to run and manage containers that are based on specific Docker images, and to use Docker not only on the local host, but also on the specified remote machine.

 

En este capítulo:

Requirements and Limitations

Cómo empezar a usar Docker

Catálogo de imágenes

Configuración de un contenedor

Operaciones con contenedores

Uso de Docker de forma remota

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

Administración de imágenes locales

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

 

Requirements and Limitations

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

    In Plesk for Windows, you can use Docker installed on a remote machine (see Using Remote Docker further in this section).

  • You cannot use Docker in Plesk running on Windows Server 2008.
  • You cannot use Docker in Plesk that is deployed in a Docker container.
  • To use remote Docker services in Plesk, you need an additional license. It can be purchased either separately or as a part of the Hosting Pack.
  • Docker runs only on x64 systems.
  • Docker containers in Plesk cannot be migrated or backed up. However, you can back up data used by containers (see Volume Mapping below), or download snapshots.
  • Virtuozzo 7 with Update 1 Hotfix 1 (7.0.1-686) or later installed is supported. Note that starting with this update, new containers based on CentOS 7 are created with the firewall enabled by default due to Virtuozzo pushing for increased security. Plesk administrator must manually configure the firewall to ensure that ports necessary for Plesk to operate are open.

  

 

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.

Docker_Containers

Para usar filtros:

  1. Haga clic en el botón de flecha arrow 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.

    Docker_Container_displayed

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.

Docker_container_settings

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.

Importante: 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.

Si desea más información acerca de los datos en contenedores, consulte la documentación de Docker.

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.

Importante: 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.

set_active

  

 

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.

local_image

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.

    remove_images

  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 docker_icon_remove 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.