Docker. Ejercicios (1)

Esta lección es una introducción a la instalación de aplicaciones mediante Docker, utilizando las imágenes proporcionadas por Bitnami. Como es la primera vez que trato en clase el uso de Docker, esta lección tiene un carácter "experimental". Los dos primeros ejercicios están planteados como actividades guiadas, por lo que no se ofrece una página de soluciones. Se pueden consultar las soluciones de los demás ejercicios de Docker (1), aunque se recomienda intentar realizarlos primero sin recurrir a estas soluciones.

Docker (1) 1 - Instalar Docker

Estas instrucciones se han extraido de la página Install Docker on Ubuntu

En este ejercicio instalaremos Docker en una máquina virtual de Ubuntu 16.04 LTS Server ejecutada en VirtualBox.

Prepare la máquina virtual

  1. Descargue la imagen iso de la versión más reciente de Ubuntu 16.04 LTS Server de 64 bits.

    Actualmente (enero de 2017), la última versión disponible de Ubuntu LTS Server es Ubuntu 16.04.1 (21/07/16). página de descarga

  2. Cree una máquina virtual en VirtualBox e instale Ubuntu 16.04 LTS Server.

    Para los ejercicios de esta página un disco duro virtual de 8 GB es suficiente, pero para poder instalar más aplicaciones de páginas de ejercicios posteriores se necesitará un disco mayor, por ejemplo de 16 GB.

    Compruebe que en la configuración de red de la máquina virtual está conectado a Adaptador puente. Si está conectado a otro tipo de adaptador (probablemente NAT), apague la máquina virtual, cambie a Adaptador puente y reinicie la máquina virtual.

  3. Actualice Ubuntu 16.04 LTS Server:
    sudo apt update
    sudo apt upgrade
    

Actualice los repositorios de APT

Arranque la máquina virtual y ejecute los comandos siguientes en un terminal:

  1. Instale los certificados para trabajar con https:
    sudo apt update
    sudo apt install apt-transport-https ca-certificates
    
  2. Añada la nueva clave GPG (escriba todo en una sola línea, sin las contrabarras \):
    sudo apt-key adv \
    --keyserver hkp://ha.pool.sks-keyservers.net:80 \
    --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
    
  3. Añada el repositorio correspondiente a su versión de Ubuntu (en el ejemplo se usa xenial, es decir, Ubuntu 16.04):
    echo deb https://apt.dockerproject.org/repo ubuntu-xenial main | sudo tee /etc/apt/sources.list.d/docker.list
  4. Actualice APT:
    sudo apt update
  5. Compruebe que APT se conecta con el repositorio adecuado:
    apt policy docker-engine

    En la pantalla debe mostrarse el repositorio de la versión de Ubuntu indicada (en el ejemplo se usa xenial, es decir, Ubuntu 16.04):

    docker-engine:
        Installed: 1.12.6-0~ubuntu-xenial
        Candidate: 1.12.6-0~ubuntu-xenial
        Version table:
       *** 1.12.6-0~ubuntu-xenial 500
              500 https://apt.dockerproject.org/repo/ ubuntu-xenial/main amd64 Packages
              100 /var/lib/dpkg/status
        ...
    
  6. Actualice APT:
    sudo apt update

Instale los paquetes del kernel necesarios

En la máquina virtual, ejecute los comandos siguientes en un terminal:

  1. Actualice el administrador de paquetes:
    sudo apt update
  2. Instale los paquetes recomendados
    sudo apt install linux-image-extra-$(uname -r) linux-image-extra-virtual

Instale Docker

En la máquina virtual, ejecute los comandos siguientes en un terminal:

  1. Actualice el administrador de paquetes:
    sudo apt update
  2. Instale Docker
    sudo apt install docker-engine
  3. Arranque el servicio docker
    sudo service docker start
  4. Compruebe que docker está instalado correctamente ejecutando la imagen hello-world:
    sudo docker run hello-world

    En la pantalla debe mostrarse el repositorio de la versión de Ubuntu indicada (en el ejemplo se usa xenial, es decir, Ubuntu 16.04):

    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    ...
    

Docker (1) 2 - Instalar OpenCart

Estas instrucciones se han extraido de la página Bitnami Docker OpenCart

En este ejercicio instalaremos OpenCart en un contenedor Docker.

  1. Averigüe la dirección ip de la máquina virtual.
  2. Cree una nueva red para la aplicación y la base de datos:
    sudo docker network create opencart_network
  3. Cree un contenedor para la base de datos MariaDB en la nueva red:
    sudo docker run -d --name mariadb --net=opencart_network bitnami/mariadb
  4. Cree un contenedor para OpenCart (sustituya AAA.BBB.CCC.DDD por la dirección ip de la máquina virtual):
    sudo docker run -d -e OPENCART_HOST=AAA.BBB.CCC.DDD -p 80:80 --name opencart --net=opencart_network bitnami/opencart
  5. Compruebe que puede acceder a OpenCart en el navegador escribiendo la dirección http://AAA.BBB.CCC.DDD, donde AAA.BBB.CCC.DDD es la dirección ip de la máquina virtual:

    Tienda OpenCart

  6. Compruebe que puede acceder a OpenCart en el navegador escribiendo la dirección http://AAA.BBB.CCC.DDD/admin, donde AAA.BBB.CCC.DDD es la dirección ip de la máquina virtual. El usuario administrador de OpenCart es user con contraseña bitnami1:

    Administración de OpenCart

Docker (1) 3 - Probar los comandos de Docker

En este ejercicio se trabaja con el OpenCart instalado en el ejercicio anterior.

Puede consultar la Docker Cheat Sheet para obtener información sobre los comandos básicos de Docker.

Detener y poner en marcha

  1. Modifique la tienda OpenCart eliminando alguna categoría del menú principal.
  2. Detenga y reinice el contenedor y compruebe que la tienda conserva los cambios. Los comandos que se deben utilizar son:

    Para ver los contenedores existentes (en marcha o detenidos):

    sudo docker ps -a

    Para detener un contenedor:

    sudo docker stop CONTENEDOR

    Para poner en marcha un contenedor detenido:

    sudo docker start CONTENEDOR
  3. Detenga y borre el contenedor. Cree un nuevo contendor y compruebe que los cambios se han perdido. Los comandos que se deben utilizar son:

    Para borrar un contenedor (debe estar detenido primero):

    sudo docker rm CONTENEDOR

    Nota: La base de datos no se ha borrado, así que se podría cambiar el usuario y contraseña de la tienda para usar la antigua base de datos y recuperar la tienda antigua.

Cambio de IP

Si cambiara la IP de la máquina virtual, OpenCart dejaría de funciona correctamente porque en los archivos de configuración de OpenCart se guarda la URL de OpenCart. En clase esto ocurre de vez en cuando, ya que el router de aula está continuamente asignando direcciones. En casa puede ocurrir más raramente.

  1. Apague y reinicie la máquina virtual.
    • Si cambia la IP de la máquina virtual, compruebe que la tienda OpenCart ya no se ve correctamente
    • Si no cambia la IP de la máquina virtual, haga el ejercicio sin cambiar la IP, pero así sabrá cómo hacerlo si algún día cambia la IP.
  2. Corrija los archivos de configuración de OpenCart con la nueva IP.

    La forma más fácil es copiar los archivos de configuración de la imagen al servidor, modificarlos y volverlos a copiar a la imagen

    sudo docker cp CONTENEDOR:ORIGEN DESTINO

    Para averiguar el directorio del sistema de ficheros del contenedor en el que se encuentra opencart, puede abrir una sesión en la imagen y buscarlo:

    sudo docker exec -it CONTENEDOR /bin/bash
    Ayuda

    Los ficheros de configuración están en /bitnami/opencart/config.php y /bitnami/opencart/admin/config.php. Los ficheros se pueden copiar en cualquier carpeta fuera del contenedor. Por ejemplo,

    sudo docker cp opencart:/bitnami/opencart/config.php /tmp/config.php
  3. Compruebe que la tienda OpenCart vuelve a verse correctamente.

Docker (1) 4 - Instalar phpMyAdmin

En este ejercicio se pide instalar phpMyAdmin en un contenedor Docker.

  1. Visite el repositorio de phpMyAdmin de Bitnami en GitHub.
  2. En la página principal se indica la orden para crear un contenedor de phpMyAdmin, pero con persistencia. En vez de eso, escriba una orden similar a la del ejercicio 2 que ejecutaba una imagen de OpenCart. Deberá utilizar la IP de la máquina virtual y otro puerto.
  3. Compruebe que puede ver la página inicial de conexión de phpMyAdmin en el navegador escribiendo la dirección http://AAA.BBB.CCC.DDD:PUERTO, donde AAA.BBB.CCC.DDD es la dirección ip de la máquina virtual y PUERTO es el puerto elegido.
  4. Averigüe la contraseña del usuario de OpenCart y entre con phpMyAdmin para ver la base de datos

Docker (1) 5 - Instalar dos aplicaciones (OPTATIVO)

En este ejercicio se pide instalar phpMyAdmin y OpenCart en el mismo servidor, como en el ejercicio anterior, pero con el objetivo de hacerlo accesibles mediante las URLs http://AAA.BBB.CCC.DDD/phpmyadmin y http://AAA.BBB.CCC.DDD/opencart. Eso se puede hacer creando contenedores a los que se acceda por puertos distintos al 80 y creando un contenedor que actue de proxy inverso en el puerto 80 y reenvie la peticiones a cada contenedor.

  1. Cree un contenedor de phpMyAdmin que escuche en un puerto distinto del puerto 80.
  2. Compruebe que puede acceder a phpMyAdmin desde el host.
  3. Cree un contenedor de OpenCart que escuche en un puerto distinto del puerto 80 y distinto del puerto de phpMyAdmin.
  4. Compruebe que puede acceder a OpenCart desde el host.
  5. Cree un contenedor del proxy inverso nginx (imagen de nginx de Bitnami) y configúrelo para funcionar como proxy inverso de manera que /phpmyadmin y /opencart redirijan a los puertos de cada aplicación.

    En construcciónEste apartado no he llegado a hacerlo, se supone que es posible hacerlo

    Referencias:

  6. Compruebe que puede acceder a ambas aplicaciones desde el host con las URLs /phpmyadmin y /opencart.