Introducción
En esta práctica, aprenderás a preparar y configurar un entorno CentOS 7. Aunque el enfoque tradicional consistiría en utilizar una máquina virtual completa en VirtualBox, este laboratorio emplea un método más moderno y eficiente mediante el uso de contenedores Docker. Trabajarás en un entorno basado en la nube para desplegar un contenedor CentOS 7 ligero y aislado, lo que te proporcionará un sistema Linux funcional sin la sobrecarga de una VM convencional.
El proceso comienza obteniendo la imagen oficial de CentOS 7 desde el registro Docker Hub. Posteriormente, crearás y configurarás un nuevo contenedor basado en dicha imagen. Finalmente, personalizarás el sistema en ejecución instalando el entorno de escritorio GNOME y habilitando el inicio de sesión gráfico, lo que resultará en una instancia de CentOS 7 plenamente operativa con interfaz gráfica de usuario.
Descargar e instalar VirtualBox y la ISO de CentOS 7
En este paso, prepararemos nuestro entorno obteniendo un sistema CentOS 7. El ejercicio original utiliza VirtualBox para instalar una máquina virtual completa. Sin embargo, en este entorno de laboratorio en la nube, un enfoque más eficiente y moderno es utilizar contenedores Docker. Docker nos permite ejecutar aplicaciones y sistemas operativos aislados en entornos ligeros llamados contenedores, que arrancan mucho más rápido y consumen menos recursos que las máquinas virtuales tradicionales.
Comenzaremos descargando (o "haciendo un pull", en la terminología de Docker) la imagen oficial de CentOS 7 desde Docker Hub, que es un registro público de imágenes de contenedores.
Primero, descarguemos la imagen de CentOS 7. El comando docker pull obtiene una imagen de un registro. Especificaremos centos como el nombre de la imagen y 7 como la etiqueta (tag), que corresponde a la versión de CentOS 7.
Ejecuta el siguiente comando en tu terminal:
docker pull centos:7
Verás una salida que muestra el progreso de la descarga. Docker descarga la imagen por capas. Una vez completado, el resultado será similar a este:
7: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Status: Downloaded newer image for centos:7
docker.io/library/centos:7
Ahora que la imagen se ha descargado, verifiquemos que esté disponible en nuestro sistema local. Podemos listar todas las imágenes de Docker que tenemos localmente usando el comando docker images.
docker images
La salida debería incluir una entrada para centos con la etiqueta 7. El IMAGE ID y la fecha en CREATED pueden variar en tu sistema.
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7 eeb6ee3f44bd 2 years ago 204MB
Con la imagen de CentOS 7 descargada correctamente, estamos listos para crear y ejecutar un contenedor a partir de ella en el siguiente paso.
Crear y configurar una nueva máquina virtual para CentOS 7
En este paso, crearemos y configuraremos nuestro entorno CentOS 7. En lugar de una máquina virtual tradicional, utilizaremos la imagen de Docker centos:7 que descargamos para lanzar un contenedor. Un contenedor es una instancia en ejecución de una imagen. Este servirá como nuestra "máquina virtual" durante el resto de esta práctica.
Utilizaremos el comando docker run para crear e iniciar el contenedor. Incluiremos algunas opciones importantes:
-it: Esta combinación de banderas conecta nuestra terminal a la terminal del contenedor, permitiéndonos ejecutar comandos de forma interactiva.--name centos_workstation: Esto asigna un nombre fácil de recordar,centos_workstation, a nuestro contenedor. Esto facilita su gestión (iniciar, detener, eliminar) más adelante.centos:7: Especifica la imagen que queremos ejecutar./bin/bash: Es el comando que se ejecutará dentro del contenedor al iniciar. Lanzará el shell Bash, proporcionándonos una línea de comandos.
Ahora, ejecuta el siguiente comando para iniciar tu contenedor CentOS:
docker run -it --name centos_workstation centos:7 /bin/bash
Tras ejecutar el comando, notarás que el indicador (prompt) de tu terminal cambia. Se verá algo parecido a esto:
[root@a1b2c3d4e5f6 /]#
Este nuevo prompt indica que ahora estás dentro del contenedor CentOS 7 como usuario root. La cadena de letras y números (por ejemplo, a1b2c3d4e5f6) es el ID único de tu contenedor. Ya no te encuentras en el shell del entorno anfitrión de LabEx.
Siguiendo el plan del ejercicio original, vamos a crear un usuario que no sea root. Crearemos un usuario llamado student1. Utiliza el comando useradd para ello:
useradd student1
A continuación, establece una contraseña para student1. Usaremos student1 como contraseña para simplificar las cosas. El comando passwd te pedirá que introduzcas y vuelvas a introducir la nueva contraseña.
passwd student1
Cuando se te solicite, escribe student1, presiona Enter, luego escribe student1 de nuevo y presiona Enter.
Changing password for user student1.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
Para completar este paso, necesitamos regresar a nuestra terminal principal de LabEx. Escribe exit y presiona Enter para salir del shell del contenedor.
exit
Esto detiene el contenedor y te devuelve al prompt del directorio ~/project. El contenedor centos_workstation ahora existe y puede iniciarse de nuevo en los pasos siguientes.
Realizar la instalación de CentOS 7 con particiones personalizadas
En este paso, configuraremos nuestro nuevo entorno CentOS 7. El ejercicio original implica un proceso de instalación detallado con particionamiento de disco personalizado. En nuestro entorno basado en Docker, este proceso es diferente. La "instalación" ya está hecha porque estamos usando una imagen pre-construida. El concepto de crear particiones manuales como /, /home y /var no se aplica a un contenedor Docker estándar, ya que utiliza el sistema de archivos del anfitrión de forma estratificada.
En su lugar, nos centraremos en la configuración inicial del contenedor en ejecución, que es una tarea común tras desplegar un nuevo sistema. Iniciaremos el contenedor, actualizaremos sus paquetes de software e instalaremos sudo para permitir que nuestro usuario sin privilegios de root realice tareas administrativas.
Primero, iniciemos el contenedor que creamos en el paso anterior. Actualmente está detenido. Usa el comando docker start:
docker start centos_workstation
Este comando devolverá el nombre del contenedor, centos_workstation, confirmando que se ha iniciado. Ahora, conecta tu terminal al contenedor en ejecución usando docker attach:
docker attach centos_workstation
El prompt de tu terminal cambiará al shell de root del contenedor, de forma similar a antes:
[root@a1b2c3d4e5f6 /]#
Ahora configuraremos los servicios necesarios y prepararemos el entorno. Primero, debemos corregir la configuración del repositorio de CentOS 7, ya que ha llegado al fin de su vida útil (EOL):
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Base.repo
sed -i 's/#baseurl/baseurl/g' /etc/yum.repos.d/CentOS-Base.repo
sed -i 's|http://mirror.centos.org|http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Base.repo
yum clean all
La imagen mínima de CentOS 7 es muy básica. Comencemos actualizando todos los paquetes instalados a sus versiones más recientes usando yum, el gestor de paquetes de CentOS. La bandera -y responde automáticamente "sí" a cualquier solicitud de confirmación.
yum update -y
Este proceso puede tardar unos minutos en completarse. Una vez finalizado, instalaremos el paquete sudo, que no está incluido en la imagen mínima. sudo permite a los usuarios autorizados ejecutar comandos como otro usuario, normalmente el usuario root.
yum install -y sudo
Tras completar la instalación, necesitamos otorgar privilegios de sudo al usuario student1 que creamos anteriormente. En CentOS, esto se hace normalmente añadiendo al usuario al grupo wheel.
usermod -aG wheel student1
usermodes un comando para modificar una cuenta de usuario.- Las banderas
-aGle indican al comando que añada (append) el usuario a un grupo (group) suplementario, que en este caso eswheel.
Para verificar que student1 ahora tiene acceso a sudo, cambiemos a ese usuario y probémoslo.
su - student1
Tu prompt cambiará a [student1@a1b2c3d4e5f6 ~]$. Ahora, intenta ejecutar el comando whoami con sudo. Debería informar que eres root.
sudo whoami
La salida esperada es:
root
¡Excelente! Nuestro contenedor está ahora configurado con un sistema actualizado y un usuario con derechos de sudo. Para continuar con el siguiente paso, necesitamos salir del contenedor pero dejarlo ejecutándose en segundo plano. No escribas exit. En su lugar, presiona la secuencia de teclas Ctrl+P seguida de Ctrl+Q. Esto desconectará tu terminal del contenedor, devolviéndote al prompt de LabEx, mientras el contenedor sigue funcionando.
Instalar el escritorio GNOME y habilitar el inicio de sesión gráfico
En este paso, adaptaremos el objetivo del ejercicio original de instalar un escritorio gráfico. En un entorno de contenedores como el que estamos usando, instalar una interfaz gráfica de usuario (GUI) completa como GNOME no es una práctica estándar. Los contenedores están diseñados para ser ligeros y normalmente se gestionan desde la línea de comandos.
En su lugar, practicaremos la misma habilidad —instalar grupos de paquetes de software relacionados— instalando un conjunto común de herramientas de línea de comandos. También instalaremos un navegador web basado en texto para cumplir con el objetivo original de tener acceso a un navegador en nuestro nuevo entorno.
Primero, necesitamos entrar en nuestro contenedor en ejecución. En el paso anterior, dejamos el contenedor centos_workstation funcionando en segundo plano. Usaremos el comando docker exec para abrir un nuevo shell dentro de él como el usuario student1.
Si ya te encuentras dentro del contenedor, puedes omitir este comando.
docker exec -it centos_workstation su - student1
El prompt de tu comando cambiará a [student1@a1b2c3d4e5f6 ~]$, indicando que ahora has iniciado sesión como student1 dentro del contenedor.
Ahora, usemos yum para instalar el grupo de paquetes "Development Tools". Este grupo contiene herramientas esenciales para compilar software desde el código fuente, como gcc, make y git. Dado que student1 tiene privilegios de sudo, podemos realizar esta instalación. La bandera -y responde automáticamente "sí" a cualquier aviso.
sudo yum groupinstall -y "Development Tools"
Esta instalación descargará e instalará muchos paquetes y puede tardar varios minutos. Verás mucha información en pantalla a medida que se instalan los paquetes.
A continuación, para completar nuestra configuración, instalaremos lynx, un navegador web ligero basado en texto. Esta es una herramienta útil para consultar rápidamente sitios web o descargar archivos directamente desde la línea de comandos.
sudo yum install -y lynx
La instalación de lynx debería ser muy rápida. Probemos nuestro nuevo navegador navegando a un sitio web sencillo.
lynx example.com
Verás el contenido de texto de la página de inicio de example.com renderizado en tu terminal. Puedes usar las teclas de flecha para navegar. Para salir de lynx, presiona la tecla q en tu teclado. Cuando se te pida confirmar (Are you sure you want to quit? [Y/N]), presiona y.
Has configurado con éxito tu entorno CentOS con herramientas de desarrollo importantes y un navegador de línea de comandos. Para finalizar esta práctica, sal del contenedor.
Escribe exit para cerrar la sesión del usuario student1, y luego escribe exit de nuevo para salir del shell del contenedor y volver a tu terminal principal de LabEx.
exit
exit
Resumen
En esta práctica, aprendiste a configurar un entorno CentOS 7 utilizando un enfoque moderno basado en contenedores con Docker. Comenzaste obteniendo la imagen oficial de CentOS 7 desde el registro público Docker Hub mediante el comando docker pull centos:7. Luego, verificaste que la imagen se descargó correctamente y estaba disponible en tu sistema local listando todas las imágenes de Docker locales con el comando docker images.
Esta configuración inicial prepara la base para los pasos posteriores, donde crearás y ejecutarás un contenedor a partir de esta imagen. El objetivo general es realizar una configuración completa de CentOS 7, incluyendo ajustes personalizados y la instalación de herramientas equivalentes al entorno gráfico GNOME, todo dentro de la eficiencia y ligereza de un contenedor Docker.



