En este blog ya hemos hablado en varios artículos sobre la tecnología de contenedores, pero hasta ahora nos habíamos centrado en LXD. En este artículo vamos a explicar cómo podemos instalar Moodle en menos de un minuto (dependiendo de la velocidad de descarga que se tenga, se puede alargar un poco más) usando contenedores.
Acerca de Moodle
No voy a explicar que es Moodle ni como instalarlo desde cero, para eso existe en Internet multitud de tutoriales. Lo que sí quiero comentar es que para instalar Moodle hace falta un servidor web con PHP. Además requiere que PHP tenga instalado una serie de componentes adicionales.
Por otro lado, necesitamos tener instalado en el servidor un sistema de gestión de bases de datos relacional, ya que Moodle almacena la información en él. Normalmente se utiliza MySQL, MariaDB o PostgreSQL. También debemos crear una base de datos específica para Moodle con su respectivo usuario. Durante la instalación Moodle creará las tablas necesarias.
A parte de todo esto, tenemos que tener en cuenta que dependiendo de la versión de Moodle que vayamos a instalar, necesitaremos que tanto PHP como software de la base de datos sean de unas versiones determinadas.
Teniendo en cuenta todo lo anterior, el proceso de instalación de Moodle suele ser algo tediodoso y un usuario que no esté acostumbrado a instalarlo habitualmente, se puede pasar un buen rato realizando este proceso.
Sin embargo, Docker tiene un enfoque diferente. La idea con Docker es el despliegue de aplicaciones en contenedores. Es decir, cuando hace falta distribuir una aplicación, la podemos instalar en un contenedor Docker y posteriormente distribuir dicho contenedor a nuestros usuarios o clientes. Es cierto que Docker también nos puede proporcionar contenedores que sólo contengan el sistema operativo limpio, pero no se suele utilizar con este fin. Cuando uno crea un contenedor Docker desde cero, primero carga una imagen con el sistema operativo limpio y a continuación instala diferentes capas de software sobre él hasta conseguir la imagen con el software final que se desee distribuir.
Teniendo en cuenta esto, Docker es perfecto para la distribución de aplicaciones, entre ellas, las aplicaciones web.
$ sudo snap install docker
Desde hace tiempo prefiero utilizar el sistema de paquetes Snap de Canonical, pero eso lo dejaremos para otro artículo ;-)
Una vez que se haya instalado, tendremos el comando docker y otros relacionados en nuestro sistema. Para ver si está funcionando podemos ejecutar el siguiente comando desde la terminal:
$ docker version
Al igual que sucedía con LXD y su comando lxc, docker es un comando que posee una gran cantidad de subcomandos.
Como se ha comentado anteriormente, para crear un contenedor con Docker se parte de un contenedor base, al que se le van añadiendo diferentes capas y se le van ejecutando diferentes comandos. Para automatizar este proceso, Docker cuenta con la posibilidad de utilizar lo que se denominan dockerfile. Un dockerfile es un fichero de texto con la lista de comandos que Docker debe seguir para obtener el contenedor final. Sería equivalente a un script (fichero por lotes) del sistema operativo pero para Docker.
Además Docker cuenta con la herramienta docker-compose, que permite automatizar la creación de diferentes contenedores y diferentes servicios relacionados con ellos, simplemente siguiendo los pasos de un fichero de texto en formato YAML.
Para instalar Moodle vamos a utilizar el comando docker-compose ya que necesitamos un contenedor para el propio Moodle y otro para MariaDB. Bitnami ya cuenta con el fichero docker-compose.yml necesario para ello. Lo podemos descargar desde la línea de comandos de la siguiente manera:
Si se prefiere utilizar un navegador web, simplemente se accede a la dirección anterior y se guarda el fichero con el nombre docker-compose.yml.
Ahora ejecutamos el comando que creará los contenedores utilizando la descripción que se encuentra en el fichero anterior. El subcomando up creará y ejecutará los contenedores y la opción -d (--detach) liberará la terminal para que podamos seguir trabajando:
$ docker-compose up -d
Para que tenga éxito, habrá que ejecutarlo en el mismo directorio donde hayamos descargado el fichero YAML. Del mismo modo que hemos utilizado el subcomando up, podemos utilizar stop para pararlos y start para volverlos a ejecutar una vez que ya han sido creados.
Ahora ya tendremos Moodle instalado en nuestro sistema. Para acceder a él, utilizando un navegador web, accedemos a la URL http://localhost y, si el proceso anterior ha funcionado correctamente, nos debería aparecer la pantalla de conexión de Moodle solicitando el usuario y la contraseña. Para nuestro caso, que utilizamos los contenedores de Bitnami, el usuario es user y la contraseña bitnami.
@josrrp
Por otro lado, necesitamos tener instalado en el servidor un sistema de gestión de bases de datos relacional, ya que Moodle almacena la información en él. Normalmente se utiliza MySQL, MariaDB o PostgreSQL. También debemos crear una base de datos específica para Moodle con su respectivo usuario. Durante la instalación Moodle creará las tablas necesarias.
A parte de todo esto, tenemos que tener en cuenta que dependiendo de la versión de Moodle que vayamos a instalar, necesitaremos que tanto PHP como software de la base de datos sean de unas versiones determinadas.
Teniendo en cuenta todo lo anterior, el proceso de instalación de Moodle suele ser algo tediodoso y un usuario que no esté acostumbrado a instalarlo habitualmente, se puede pasar un buen rato realizando este proceso.
LXD vs Docker
Si queremos instalar Moodle en un contenedor LXD, de los que ya hemos hablado en diferentes artículos, tendríamos que instalar todos los paquetes de software comentados en el punto anterior, ya que los contenedores que nos proporciona LXD son equivalentes a tener un sistema operativo recién instalado. Puede que encontremos alguna imagen para LXD con software ya instalado, pero no es lo habitual. Este es el motivo por el que suelo utilizar LXD en mis clases de Servicios en Red. Necesitamos servidores que sólo tengan el sistema operativo y a continuación instalamos el servicio en cuestión y lo configuramos.Sin embargo, Docker tiene un enfoque diferente. La idea con Docker es el despliegue de aplicaciones en contenedores. Es decir, cuando hace falta distribuir una aplicación, la podemos instalar en un contenedor Docker y posteriormente distribuir dicho contenedor a nuestros usuarios o clientes. Es cierto que Docker también nos puede proporcionar contenedores que sólo contengan el sistema operativo limpio, pero no se suele utilizar con este fin. Cuando uno crea un contenedor Docker desde cero, primero carga una imagen con el sistema operativo limpio y a continuación instala diferentes capas de software sobre él hasta conseguir la imagen con el software final que se desee distribuir.
Teniendo en cuenta esto, Docker es perfecto para la distribución de aplicaciones, entre ellas, las aplicaciones web.
Instalando Docker
Al contrario que LXD, Docker está actualmente soportado por Microsoft y Apple, además de la comunidad Linux y otras muchas empresas. Por ello, podemos utilizar sus contenedores en casi cualquier ordenador que tengamos sin importar el sistema operativo que tenga instalado. En este artículo sólo vamos a describir la instalación en una máquina Linux. Para Windows o macOS la instalación se lleva a cabo utilizando la interfaz gráfica y es bastante sencilla. En el caso de Linux simplemente ejecutamos un comando desde la terminal:$ sudo snap install docker
Desde hace tiempo prefiero utilizar el sistema de paquetes Snap de Canonical, pero eso lo dejaremos para otro artículo ;-)
Una vez que se haya instalado, tendremos el comando docker y otros relacionados en nuestro sistema. Para ver si está funcionando podemos ejecutar el siguiente comando desde la terminal:
$ docker version
Al igual que sucedía con LXD y su comando lxc, docker es un comando que posee una gran cantidad de subcomandos.
Instalando Moodle
Ahora que ya tenemos Docker instalado, procederemos a instalar un par de contenedores. Uno para que contenga el software de Moodle y otro para su base de datos, en este caso, MariaDB. Para ello vamos a utilizar los contenedores que nos proporciona Bitnami.Como se ha comentado anteriormente, para crear un contenedor con Docker se parte de un contenedor base, al que se le van añadiendo diferentes capas y se le van ejecutando diferentes comandos. Para automatizar este proceso, Docker cuenta con la posibilidad de utilizar lo que se denominan dockerfile. Un dockerfile es un fichero de texto con la lista de comandos que Docker debe seguir para obtener el contenedor final. Sería equivalente a un script (fichero por lotes) del sistema operativo pero para Docker.
Además Docker cuenta con la herramienta docker-compose, que permite automatizar la creación de diferentes contenedores y diferentes servicios relacionados con ellos, simplemente siguiendo los pasos de un fichero de texto en formato YAML.
Para instalar Moodle vamos a utilizar el comando docker-compose ya que necesitamos un contenedor para el propio Moodle y otro para MariaDB. Bitnami ya cuenta con el fichero docker-compose.yml necesario para ello. Lo podemos descargar desde la línea de comandos de la siguiente manera:
$ wget https://raw.githubusercontent.com/bitnami/bitnami-docker-moodle/master/docker-compose.yml
Si se prefiere utilizar un navegador web, simplemente se accede a la dirección anterior y se guarda el fichero con el nombre docker-compose.yml.
Ahora ejecutamos el comando que creará los contenedores utilizando la descripción que se encuentra en el fichero anterior. El subcomando up creará y ejecutará los contenedores y la opción -d (--detach) liberará la terminal para que podamos seguir trabajando:
$ docker-compose up -d
Para que tenga éxito, habrá que ejecutarlo en el mismo directorio donde hayamos descargado el fichero YAML. Del mismo modo que hemos utilizado el subcomando up, podemos utilizar stop para pararlos y start para volverlos a ejecutar una vez que ya han sido creados.
Ahora ya tendremos Moodle instalado en nuestro sistema. Para acceder a él, utilizando un navegador web, accedemos a la URL http://localhost y, si el proceso anterior ha funcionado correctamente, nos debería aparecer la pantalla de conexión de Moodle solicitando el usuario y la contraseña. Para nuestro caso, que utilizamos los contenedores de Bitnami, el usuario es user y la contraseña bitnami.
@josrrp
Hola. No puedo creer que sea tan fácil... Acabo de instalar Moodle, siguiendo tus instrucciones en Fedora XFCE... Genial
ResponderEliminarPregunta, pregunta... ¿Ahora cómo hago backup del contenedor completo de Moodle? ¿Cómo hago una eventual restauración de backup? Mil gracias.
ResponderEliminarHola, los contenedores almacenan la información en volúmenes, ya que las imágenes son inmutables y no almacenan los datos. En este caso, como está instalado usando snap, podrá encontrar los ficheros en el directorio /var/snap/docker/common/var-lib-docker/volumes
EliminarAquí hay dos volúmenes, uno para cada contenedor. En uno de ellos se encuentran los ficheros de moodle y en el otro los de la base de datos MariaDB.
Para hacer un backup podría copiar estos directorios, pero antes pare los contenedores. De todos modos, no es recomendable hacerlo de esta forma sino por medio de otro contenedor intermedio, pero es un poco más complejo. En Internet podrá encontrar muchos tutoriales para hacer backups de volúmenes de docker.
No veo carpetas de instalación en mi equipo... Moodle, Bitnami... ¿Dónde están?
ResponderEliminarHola, tanto Moodle como MariaDB se encuentran dentro de los dos contenedores. Docker almacena normalmente las imágenes de los contenedores en /var/lib/docker
EliminarSi ha seguido los pasos de este tutorial, al haber usado snap el directorio en cuestión es /var/snap/docker/common/var-lib-docker/
EliminarEste comentario ha sido eliminado por el autor.
EliminarHola. Permiso denegado. ¿Accesible sólo por terminal?
EliminarDesde la terminal puedes usar "sudo -s" y desde la interfaz gráfica, dependerá del escritorio que utilices. Normalmente botón derecho del ratón y la opción "Abrir con permisos administrativos". Si sabes como se llama el administrador de ficheros de tu entorno, por ejemplo en Ubuntu se llama nautilus, puedes escribir el comando "sudo nautilus" en la terminal y se abrirá con permisos de administración.
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarLa configuración de su sitio podría no ser segura. Por favor, asegúrese de que su directorio raíz (/bitnami/moodle/moodledata) no es accesible directamente vía web.
ResponderEliminar¿¿¿??? ¡¡¡Auxilioooo!!!
Hola que tal es el rendimiento en esta instalación con docker vs una instalación de moodle con nginx o apache
ResponderEliminar