Instalar Docker usando los repositorios de la universidad. Seguir la guía.
Configurar Docker para que use el registro de Docker que mantiene la universidad. El objetivo es que Docker use este registro para descargar las imágenes. Seguir la guía.
Visitar la página de la imágen oficial de Bash (enlace) en Docker Hub. Cada imágen de Bash está estiquetada usando la versión de Bash. Por ejemplo, la versión de Bash 5.0 está disponible en la imágen bash:5.0
. ¿Qué otras versiones están disponibles?
Iniciar un contenedor a partir de la imágen bash:5.0
. Use el comando docker run
con las opciones -i y -t para obtener el intérprete de Bash en una terminal. Estudie estas opciones en el manual de Docker. Puede obtener ayuda use el comando docker run --help
. Ejecute los siguientes comandos en el contenedor:
env
para obtener las variables de ambiente. ¿Cuáles son los valores de las variables de ambiente HOSTNAME
, HOME
, PATH
?echo
para imprimir el valor de la variable de ambiente PATH
.pwd
para obtener el directorio actual.exit
para salir de intérprete de Bash. Note que también se detiene el contenedor.Listar los contenedores usando el comando docker ps
con la opción -a
. Estudie la opción -a
. En la lista de los contenedores debe aparecer el contenedor de Bash ejecuta anteriormente. Recuerde que el comando docker run
crea un contenedor y luego lo inicia. Analice la información obtenida sobre el contenedor. ¿Cuál es el identificador del contenedor? ¿Qué imágen se usó para crearlo?
Eliminar el contenedor de Bash creado anteriormente usando el comando docker rm
. Use el identificador del contenedor en esta operación. Verifique que el contenedor fue eliminado.
Iniciar un contenedor de Bash. Use la opción -e
del comando docker run
para indicar el valor de la variable de ambiente HOSTNAME
. Use un comando dentro del contenedor para mostrar el valor de esta variable.
Descargar la imágen de Bash 4.4 usando el comando docker pull
. Liste las imágenes locales usando el comando docker images
. Analice la información obtenida sobre la imágen descargada. Observe cómo se descompone el nombre de la imágen en repositorio y etiqueta. ¿Qué tamaño tiene la imágen?
Estudiar el ejemplo hello de la conferencia. En este ejemplo se usó la imágen de Ubuntu 18.04 como base. Modifique el Dockerfile para usar la imágen de Bash 4.4 en lugar de la imágen de Ubuntu. Estudie la sentencia FROM
.
Construir la imágen usando el comando docker build
con la opción -t
. Use la opción -t
para ponerle el nombre ejemplo-hello
a la imágen.
Pruebe la imágen usando el comando docker run
. Recuerde asignarle un valor a la variable de ambiente NAME
.
El código del ejemplo hello se muestra a continuación.
cat hello.sh
#!/usr/bin/env bash
echo Hello $NAME
cat Dockerfile
FROM ubuntu:bionic
WORKDIR /home
COPY hello.sh .
RUN chmod u+x hello.sh
CMD ./hello.sh
Mejorar el ejemplo hello de la conferencia. El programa debe escribir en la terminal “Hello Word!” en lugar de “Hello”, si la variable de ambiente NAME
no está definida. Pruebe el programa antes de construir la imágen. Use la ayuda siguiente:
export NAME="Maria"
. Ejecute el programa para verificar que escribe “Hello Maria!”.Construir una imágen con el Java Development Kit. Use como base la imágen de Ubuntu 18.04 (bionic) e instale el Open JDK 8 de Java. El paquete openjdk-8-jdk
permite instalar el JDK 8 desde los repositorios de Ubuntu. Use el comando apt-get
para instalar este paquete.
Probar la imágen creada con el JDK 8. Use la opción -v
del comando docker run
para montar un directorio (ej: /home/julia/ejemplo-java
) de su máquina virtual dentro del contenedor. Escriba un programa en Java y guardelo dentro de ese directorio.
javac Main.java
para compilar el programa dentro del contenedor.Main.class
, use el comando java -classpath . Main
para ejecutar el programa dentro del contenedor.Hacer una lista de algunas imágenes de Docker. Incluya las imágenes de los lenguajes siquientes:
Estas imágenes pueden usarse para ejecutar programas escritos en estos lenguajes.
Crear un archivo con el nombre docker.list
para guardar la línea siguiente. En esta línea se especifica el repositorio de Docker que mantiene la universidad.
deb http://repos.uclv.edu.cu/docker-ce/linux/ubuntu bionic stable
Copiar el archivo docker.list
en el directorio /etc/apt/sources.list.d
sudo cp docker.list /etc/apt/sources.list.d
Agregar la llave pública del repositorio
Usar el comando curl
para descargar la llave pública del repositorio de Docker de la universidad. El comando siguienete descarga la llave y la guarda en el archivo docker.key
.
curl -o docker.key http://repos.uclv.edu.cu/docker-ce/linux/ubuntu/gpg
Usar el comando apt-key
para agregar la llave.
sudo apt-key add docker.key
Actualizar la información de los fuentes
sudo apt update
Instalar el Docker
sudo apt install docker-ce
Agregar el usuario actual ($USER
) al grupo docker
para que tenga permiso de ejecutar el comando docker
, de lo contrario tendrá que usar siempre el comando sudo
para ejecutar el comado de docker
.
sudo usermod -G docker -a $USER
Reiniciar el entorno del usuario actual como si hubiera iniciado sección, para que el shell conozca que el usuario pertenece ahora al grupo docker
.
su - $USER
Para obtener ayuda consultar la pregunta.
Usar el comando siquiente para probar la instalación
docker info
La guía oficial para la instalación de Docker mantenida por la universidad se encuentra en: página.
Crear un archivo de configuración para Docker en /etc/default
, con la variable de ambiente DOCKER_OPTS
. Esto se puede hacer usando el comando siguiente. En este caso se configuran los DNS y el registro de Docker de la universidad.
sudo tee /etc/default/docker <<'EOF'
DOCKER_OPTS="--registry-mirror=https://nexus.uclv.edu.cu"
EOF
La entrada estándar del comando anterior se toma de un archivo que ha sido definido directamente después del comando. Estudiar luego la sección Bash Document Here del manual de Bash.
Configurar el servicio de Docker haciendo los cambios siguientes en el archivo /lib/systemd/system/docker.service
.
ExecStart
. Si el valor actual es:ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Su nuevo valor debe ser:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock $DOCKER_OPTS
ExecStart
definir la varible EnvironmentFile
para que la variable de ambiente DOCKER_OPTS
sea cargada y se use el registro de la universidad para obtener las imágenes.EnvironmentFile=/etc/default/docker
Recargar el manejador de configuraciones de systemd
para cargar los cambios hechos en la configuración del servicio (daemon) de Docker.
sudo systemctl daemon-reload
Reiniciar el servicio de Docker
sudo service docker restart
Descargar la imágen hello-world
para comprobar si el servicio de Docker usa correctamente el registro de la universidad. Se asume que el servicio de Docker no tiene acceso directo a internet.
docker pull hello-world
Virtualization Labs by Osmani Rosado Falcón is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Based on a work at https://gitlab.com/osmanirosado/virtualization-labs.