Docker - Ejercicios (1) - Enunciados

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

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

Estas instrucciones se han extraido de la documentación oficial de Docker Install Docker on Ubuntu

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 2018), la última versión disponible de Ubuntu LTS Server es Ubuntu 16.04.3 (03/08/17). 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 se necesitaría 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 curl software-properties-common
    
  2. Añada la clave GPG oficial de Docker:
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    
  3. Compruebe que tiene la clave correcta:
    sudo apt-key fingerprint 0EBFCD88
    

    El resultado debe ser:

    pub   4096R/0EBFCD88 2017-02-22
          Key fingerprint = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
    uid                  Docker Release (CE deb) <docker@docker.com>
    sub   4096R/F273FCD8 2017-02-22
    
  4. Añada el repositorio correspondiente a su versión de Ubuntu (escriba todo en una sola línea, sin las contrabarras \):
    sudo add-apt-repository \
       "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
       $(lsb_release -cs) \
       stable"
    
  5. Actualice APT:
    sudo apt update
  6. Compruebe que APT se conecta con el repositorio adecuado:
    apt policy docker-ce

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

    docker-ce:
      Instalados: (ninguno)
      Candidato: 17.12.0~ce-0~ubuntu
      Tabla de versión:
      17.12.0~ce-0~ubuntu 500
              500 https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
        ...
    

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 la última versión de Docker
    sudo apt install docker-ce
  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

    Se descargará e instalará la aplicación y se mostrará el mensaje:

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

Docker (1) 2 - Instalar OpenCart

En este ejercicio instalaremos OpenCart en un contenedor Docker.

Los repositorios de las imágenes de Bitnami son Bitnami MariaDB OpenCart, Bitnami Docker OpenCart.

  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 con la base de datos MariaDB en la nueva red:
    sudo docker run -d --name=mariadb -e ALLOW_EMPTY_PASSWORD=yes --net=opencart-network bitnami/mariadb

    Nota: El nombre mariadb se puede cambiar, pero tenga en cuenta que las imágenes de bitnami suponen de forma predeterminada que ese es el nombre del contenedor de la base de datos. Si utiliza otro nombre de contenedor, deberá añadir la opción de configuración correspondiente al crear el contenedor de la aplicación.

    Nota: Algunas de las variables disponibles (y su valores predeterminados entre corchetes) son MARIADB_EXTRA_FLAGS, MARIADB_ROOT_USER [root], MARIADB_ROOT_PASSWORD [], ALLOW_EMPTY_PASSWORD, MARIADB_USER, MARIADB_PASSWORD, MARIADB_DATABASE.

  4. Cree un contenedor con OpenCart en la misma red (sustituya AAA.BBB.CCC.DDD por la dirección ip de la máquina virtual):
    sudo docker run -d --name=opencart -e OPENCART_HOST=AAA.BBB.CCC.DDD -p 80:80 -p 443:443 --net=opencart-network bitnami/opencart

    Nota: Las variables disponibles (y su valores predeterminados entre corchetes) son OPENCART_USERNAME [user], OPENCART_PASSWORD [bitnami1], OPENCART_EMAIL [user@example.com], OPENCART_HOST, MARIADB_PASSWORD, MARIADB_HOST [mariadb], MARIADB_PORT_NUMBER [3306].

  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 como administrador 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 predeterminado 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 funcionar 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.

  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 dos archivos de configuración de OpenCart del contenedor a la máquina virtual, 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 después 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.

El repositorio de las imágenes de Bitnami es Bitnami phpMyAdmin OpenCart.

  1. Cree un contenedor de phpMyadmin, al que se pueda acceder a través del puerto 8801.
  2. 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:8801, donde AAA.BBB.CCC.DDD es la dirección ip de la máquina virtual.
  3. 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 la misma aplicación dos veces (por ejemplo, dos instalaciones de WordPress), pero que utilicen el mismo contenedor con la base de datos, con el objetivo de hacerlos accesibles mediante las URLs http://AAA.BBB.CCC.DDD:8802 y http://AAA.BBB.CCC.DDD:8803.

  1. Cree una nueva red.
  2. Cree un contenedor de MariaDB.
  3. Cree un contenedor de phpMyAdmin al que se acceda por el puerto 8801.
  4. Compruebe que puede acceder a phpMyAdmin desde el host.
  5. Cree los usuarios wp1 y wp2, con base de datos única y con contraseña wp1 y wp2 y que puedan acceder desde cualquier nombre de host.
  6. Cree un primer contenedor de WordPress que escuche en los puertos 8802 y 4432.
  7. Compruebe que puede acceder a este WordPress desde el host.
  8. Modifique el título del WordPress.
  9. Cree un segundo contenedor de WordPress que escuche en los puertos 8803 y 4433.
  10. Compruebe que puede acceder a este WordPress desde el host.
  11. Modifique el tema o el título del WordPress para distinguirlo del anterior.