<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://1984.lsi.us.es/wiki-egc/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pabcabmar3</id>
		<title>Wiki de EGC - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://1984.lsi.us.es/wiki-egc/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pabcabmar3"/>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php/Especial:Contribuciones/Pabcabmar3"/>
		<updated>2026-04-21T01:59:49Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.29.0</generator>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Tutorial_Campo_de_entrenamiento_de_Docker&amp;diff=9953</id>
		<title>Tutorial Campo de entrenamiento de Docker</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Tutorial_Campo_de_entrenamiento_de_Docker&amp;diff=9953"/>
				<updated>2024-12-16T10:43:55Z</updated>
		
		<summary type="html">&lt;p&gt;Pabcabmar3: Añadida explicación para Arch Linux&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Prerrequisitos =&lt;br /&gt;
&lt;br /&gt;
== Instalación Docker ==&lt;br /&gt;
&lt;br /&gt;
=== Instrucciones para instalar Docker en Ubuntu 22.04 (Jammy Jellyfish) ===&lt;br /&gt;
&lt;br /&gt;
Antes de comenzar a utilizar Docker, necesitamos asegurarnos de que está instalado en nuestro sistema. Aquí te mostramos cómo hacerlo.&lt;br /&gt;
&lt;br /&gt;
Primero, actualizaremos la lista de paquetes disponibles en tu sistema. Este paso asegura que tu sistema tenga la información más reciente sobre qué paquetes se pueden instalar y actualizar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación, instala algunos paquetes necesarios que permiten a `apt` manejar repositorios sobre HTTPS. Esto es importante porque garantiza que tu sistema puede descargar software de fuentes seguras y confiables:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install apt-transport-https ca-certificates curl software-properties-common&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, es momento de añadir la clave GPG del repositorio oficial de Docker a tu sistema. Esta clave es esencial porque se utiliza para verificar que el software que descargas es auténtico y no ha sido alterado por terceros:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación, añadirás el repositorio de Docker a las fuentes de `apt`. Este paso es necesario para que tu sistema sepa dónde buscar las actualizaciones y versiones de Docker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&amp;quot; | sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Después de añadir el repositorio, es recomendable actualizar la lista de paquetes nuevamente. Esto permite que `apt` reconozca el nuevo repositorio de Docker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finalmente, puedes instalar Docker con el siguiente comando. Este comando instalará la versión más reciente de Docker Community Edition (CE) en tu sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install docker-ce&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para asegurarte de que Docker se ha instalado correctamente y está funcionando, verifica el estado del servicio Docker. Al ejecutar este comando, deberías ver que el servicio está activo y en ejecución:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl status docker&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En caso de que no estés trabajando con Ubuntu o con una distribución de GNU/Linux basada en Ubuntu (como Linux Mint, en el caso de algunos compañeros), las instrucciones son diferentes. Si usas Arch o una distribución basada en Arch, como Endeavour, tendrás que usar el gestor de paquetes '''pacman''' y es tan sencillo como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo pacman -Syyu &amp;amp;&amp;amp; sudo pacman -S docker&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El primer comando actualizará tu base de datos de paquetes local y posteriormente actualizará los paquetes como tal, mientras que el segundo comando instalará docker en tu sistema. Además, por defecto ya tendrás permiso de super usuario sobre docker, por lo que no es recomendable que interactúes directamente con el socket. Finalmente, debes arrancar el servicio de systemd mediante el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl start docker&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No obstante, cuando quieras detenerlo, tienes que desactivar 2 servicios por separado: docker.service (basta con escribir &amp;quot;docker&amp;quot;), y docker.socket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl stop docker.socket docker&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Uso de Docker sin `sudo` ===&lt;br /&gt;
&lt;br /&gt;
Por defecto, Docker necesita permisos de administrador para ejecutar sus comandos. Sin embargo, puedes añadir tu usuario al grupo `docker` para evitar tener que usar `sudo` cada vez que ejecutes comandos de Docker. Esto simplifica el uso de Docker y hace que sea más conveniente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo usermod -aG docker ${USER}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Después de ejecutar este comando, necesitarás cerrar la sesión y volver a iniciarla para que los cambios surtan efecto. Si prefieres no cerrar la sesión, puedes aplicar los cambios usando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
su - ${USER}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si tuvieras problemas de permisos con el socket de Docker, una forma de solucionarlo es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 666 /var/run/docker.sock&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este comando permite lectura y escritura en el socket para todos los usuarios, pero es una solución temporal y no la más segura. Puede ser útil para probar si el problema es de permisos.&lt;br /&gt;
&lt;br /&gt;
= Tutorial de Iniciación a Docker =&lt;br /&gt;
&lt;br /&gt;
== Docker básico: primer contacto ==&lt;br /&gt;
&lt;br /&gt;
Para comenzar a trabajar con Docker, es fundamental asegurarte de que todo está funcionando correctamente en tu sistema.&lt;br /&gt;
&lt;br /&gt;
=== 1. Ejecutar tu primer contenedor: &amp;quot;Hello World&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
El primer paso en Docker es ejecutar un contenedor básico que te confirme que todo está configurado adecuadamente. Para ello, utilizaremos la imagen &amp;quot;hello-world&amp;quot;, que está diseñada para asegurarse de que Docker está instalado y funcionando correctamente.&lt;br /&gt;
&lt;br /&gt;
Abre tu terminal y ejecuta el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker run hello-world&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este comando realiza varias acciones:&lt;br /&gt;
* Descarga la imagen: Si no tienes la imagen &amp;quot;hello-world&amp;quot; en tu máquina, Docker la descargará desde Docker Hub, que es un repositorio de imágenes Docker.&lt;br /&gt;
* Crea un contenedor: Una vez que la imagen está disponible, Docker crea un nuevo contenedor basado en ella.&lt;br /&gt;
* Ejecuta el contenedor: Finalmente, Docker ejecuta el contenedor, que mostrará un mensaje de bienvenida en tu terminal.&lt;br /&gt;
&lt;br /&gt;
Si todo ha funcionado correctamente, deberías ver un mensaje que comienza con &amp;quot;Hello from Docker!&amp;quot;. ¡Esto significa que tu instalación de Docker está en buen estado!&lt;br /&gt;
&lt;br /&gt;
=== 2. Ver las imágenes disponibles en tu sistema ===&lt;br /&gt;
&lt;br /&gt;
Después de ejecutar un contenedor, Docker guarda una copia de la imagen en tu sistema. Para ver las imágenes que tienes localmente, usa el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker images&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este comando mostrará una lista de todas las imágenes almacenadas en tu sistema local. Aquí deberías ver la imagen de &amp;quot;hello-world&amp;quot; que acabas de descargar.&lt;br /&gt;
&lt;br /&gt;
=== 3. Descargando una imagen de Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
Ahora, vamos a descargar una imagen que es más útil para el desarrollo: Ubuntu. Para hacerlo, ejecuta el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker pull ubuntu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este comando descargará la última versión de la imagen de Ubuntu desde Docker Hub. Tener la imagen de Ubuntu te permitirá ejecutar una versión ligera de este sistema operativo dentro de un contenedor.&lt;br /&gt;
&lt;br /&gt;
=== 4. Ejecutar un contenedor interactivo con Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
Docker te permite ejecutar contenedores en modo interactivo, lo que significa que puedes acceder a una terminal dentro del contenedor y trabajar en él como si fuera una máquina independiente. Para hacerlo, ejecuta el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker run -it ubuntu bash&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este comando hace lo siguiente:&lt;br /&gt;
* `-it`: Esta opción combina dos parámetros: `-i` (interactivo) y `-t` (terminal), permitiéndote interactuar con el contenedor a través de una terminal.&lt;br /&gt;
* `ubuntu`: Especifica que quieres crear el contenedor a partir de la imagen de Ubuntu.&lt;br /&gt;
* `bash`: Es el comando que se ejecutará dentro del contenedor. Aquí es donde decides qué shell usar.&lt;br /&gt;
&lt;br /&gt;
Al usar `bash`, estás utilizando el shell por defecto de Ubuntu, que proporciona un entorno interactivo completo con muchas características avanzadas. Puedes probar algunos comandos de Linux como `ls`, `pwd`, o incluso instalar software usando `apt`.&lt;br /&gt;
&lt;br /&gt;
Cuando termines de trabajar en el contenedor, puedes salir escribiendo `exit`. Esto detendrá el contenedor y te devolverá a tu terminal principal.&lt;br /&gt;
&lt;br /&gt;
*Nota sobre los shells*: A veces, podrías ver `bash`, `/bin/bash` o `sh` al acceder a un contenedor. &lt;br /&gt;
* `bash` y `/bin/bash` se refieren al mismo shell, pero `/bin/bash` especifica la ruta exacta al ejecutable. Esto es útil en sistemas donde la variable de entorno PATH no está configurada adecuadamente. &lt;br /&gt;
* `sh` es un shell más básico y compatible que puede no tener todas las características de `bash`, por lo que es preferible usar `bash` cuando esté disponible.&lt;br /&gt;
&lt;br /&gt;
=== 5. Ver los contenedores en ejecución ===&lt;br /&gt;
&lt;br /&gt;
Si quieres ver qué contenedores están activos en tu sistema, utiliza el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker ps&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este comando te mostrará una lista de los contenedores que están en ejecución. Si acabas de salir del contenedor de Ubuntu, no verás nada en la lista, porque el contenedor se detuvo al salir.&lt;br /&gt;
&lt;br /&gt;
Si deseas ver todos los contenedores, incluidos los que están detenidos, puedes usar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker ps -a&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto te mostrará todos los contenedores, indicando su estado actual (en ejecución o detenidos).&lt;br /&gt;
&lt;br /&gt;
=== 6. Eliminar contenedores y liberar espacio ===&lt;br /&gt;
&lt;br /&gt;
Después de trabajar con contenedores, puede que desees eliminar algunos para liberar espacio en tu máquina. Para eliminar un contenedor, primero necesitas conocer su ID o nombre, que puedes obtener con `docker ps -a`. Luego, puedes eliminarlo usando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker rm id_contenedor&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si deseas eliminar todos los contenedores detenidos de una vez, usa este comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker rm $(docker ps -aq)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto es especialmente útil cuando tienes muchos contenedores detenidos y quieres limpiar tu sistema rápidamente.&lt;br /&gt;
&lt;br /&gt;
=== 7. Limpiar imágenes que ya no necesitas ===&lt;br /&gt;
&lt;br /&gt;
También puedes liberar espacio eliminando imágenes que ya no necesites. Para eliminar una imagen, primero lista todas las imágenes con:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker images&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Luego, usa el siguiente comando para eliminar una imagen específica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker rmi id_imagen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Trabajando de manera interactiva con contenedores ==&lt;br /&gt;
&lt;br /&gt;
=== 8. Mantener un contenedor vivo en segundo plano ===&lt;br /&gt;
&lt;br /&gt;
Cuando desees ejecutar un contenedor pero no necesitas interactuar directamente con él, puedes ejecutarlo en segundo plano (modo &amp;quot;detached&amp;quot;). Esto es útil para contenedores que corren servicios como servidores web o bases de datos. Para ejecutar un contenedor en modo detached, usa el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker run -td ubuntu bash&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí:&lt;br /&gt;
* `-t`: Asigna un terminal virtual al contenedor, pero en este caso, como el contenedor se ejecuta en segundo plano, no podrás interactuar con él directamente.&lt;br /&gt;
* `-d`: Indica que el contenedor debe ejecutarse en modo &amp;quot;detached&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Puedes comprobar que el contenedor se está ejecutando usando `docker ps`.&lt;br /&gt;
&lt;br /&gt;
=== 9. Acceder a un contenedor en segundo plano ===&lt;br /&gt;
&lt;br /&gt;
Si necesitas acceder a un contenedor que se está ejecutando en segundo plano, puedes hacerlo usando el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker exec -ti id_contenedor bash&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto te permitirá interactuar con el contenedor como si estuvieras en su terminal. Recuerda que debes sustituir `id_contenedor` por el ID real de tu contenedor.&lt;br /&gt;
&lt;br /&gt;
= Trabajando con Puertos y Volúmenes en Docker =&lt;br /&gt;
&lt;br /&gt;
Uno de los conceptos más importantes en Docker es el manejo de puertos y volúmenes. Los volúmenes permiten que los datos persistan incluso cuando un contenedor se detiene o se elimina. Esto es fundamental para aplicaciones en producción donde la pérdida de datos no es aceptable.&lt;br /&gt;
&lt;br /&gt;
En este tutorial, utilizaremos un '''bind mount''' para servir archivos HTML personalizados en un contenedor NGINX y también exploraremos cómo trabajar con '''volúmenes'''.&lt;br /&gt;
&lt;br /&gt;
== Creando un Contenedor NGINX con Archivos HTML Personalizados ==&lt;br /&gt;
&lt;br /&gt;
Vamos a ejecutar un servidor web básico utilizando la imagen oficial de NGINX. Para comenzar, ejecuta el siguiente comando para iniciar el contenedor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker run -it --rm -d -p 8080:80 --name web nginx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Explicación del Comando:'''&lt;br /&gt;
* `docker run`: Este comando se utiliza para crear y ejecutar un nuevo contenedor.&lt;br /&gt;
* `-it`: Esta opción combina dos parámetros:&lt;br /&gt;
  * `-i`: Mantiene la entrada estándar (stdin) abierta incluso si no estás conectado.&lt;br /&gt;
  * `-t`: Asigna un pseudo-terminal al contenedor, lo que permite interactuar con él.&lt;br /&gt;
* `--rm`: Indica que el contenedor debe ser eliminado automáticamente cuando se detiene. Esto ayuda a mantener limpio el entorno de trabajo.&lt;br /&gt;
* `-d`: Ejecuta el contenedor en modo &amp;quot;detached&amp;quot;, lo que significa que se ejecutará en segundo plano.&lt;br /&gt;
* `-p 8080:80`: Mapea el puerto 80 del contenedor al puerto 8080 de tu máquina local. Esto te permitirá acceder al servidor web en `http://localhost:8080`.&lt;br /&gt;
* `--name web`: Asigna un nombre al contenedor. En este caso, lo llamamos &amp;quot;web&amp;quot;.&lt;br /&gt;
* `nginx`: Especifica la imagen que se utilizará para crear el contenedor. En este caso, se utiliza la imagen oficial de NGINX.&lt;br /&gt;
&lt;br /&gt;
=== Servir Archivos HTML Personalizados ===&lt;br /&gt;
&lt;br /&gt;
Por defecto, NGINX busca archivos para servir en el directorio `/usr/share/nginx/html` dentro del contenedor. Necesitamos colocar nuestros archivos HTML en este directorio. Una forma sencilla de hacerlo es utilizando un '''bind mount'''. Esto nos permitirá vincular un directorio de nuestra máquina local y mapearlo dentro de nuestro contenedor en ejecución.&lt;br /&gt;
&lt;br /&gt;
==== Creando una Página HTML Personalizada ====&lt;br /&gt;
# Crea un directorio llamado `site-content` en tu máquina local.&lt;br /&gt;
# Dentro de este directorio, crea un archivo llamado `index.html` y agrega el siguiente contenido HTML:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!doctype html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;Docker Nginx&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Hello from Nginx container&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Iniciando el Contenedor con el Volumen Montado ====&lt;br /&gt;
Ahora, ejecuta el siguiente comando para iniciar un nuevo contenedor NGINX que utilice el '''bind mount''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker run -it --rm -d -p 8080:80 --name web -v ~/site-content:/usr/share/nginx/html nginx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Explicación del Comando:'''&lt;br /&gt;
* `-v ~/site-content:/usr/share/nginx/html`: Esta opción crea un '''bind mount''' que mapea el directorio `~/site-content` de tu máquina local al directorio `/usr/share/nginx/html` en el contenedor. Esto permite que cualquier archivo que coloques en `~/site-content` esté disponible dentro del contenedor.&lt;br /&gt;
&lt;br /&gt;
=== Accediendo a tu Página HTML ===&lt;br /&gt;
Una vez que el contenedor esté en funcionamiento, abre tu navegador favorito y navega a `http://localhost:8080`. Deberías ver tu página HTML personalizada renderizada en la ventana del navegador.&lt;br /&gt;
&lt;br /&gt;
=== Deteniendo el Contenedor ===&lt;br /&gt;
Si deseas detener el contenedor en cualquier momento, utiliza el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker stop web&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Persistencia de Datos con Volúmenes ===&lt;br /&gt;
Los volúmenes permiten que los datos persistan más allá del ciclo de vida del contenedor. Si detienes o eliminas el contenedor, los archivos que colocaste en un volumen seguirán estando disponibles.&lt;br /&gt;
&lt;br /&gt;
== Ejemplo de Uso de Volúmenes ==&lt;br /&gt;
&lt;br /&gt;
Ahora, veamos cómo crear un contenedor NGINX utilizando un volumen para persistir datos.&lt;br /&gt;
&lt;br /&gt;
=== Creando un Volumen ===&lt;br /&gt;
Primero, crea un volumen utilizando el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker volume create nginx-data&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Explicación del Comando:'''&lt;br /&gt;
* `docker volume create nginx-data`: Este comando crea un volumen llamado `nginx-data`, que se puede utilizar para almacenar datos de forma persistente.&lt;br /&gt;
&lt;br /&gt;
=== Iniciando el Contenedor con el Volumen ===&lt;br /&gt;
Ahora, ejecuta el siguiente comando para iniciar un nuevo contenedor NGINX utilizando el volumen que acabas de crear:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker run -it --rm -d -p 8080:80 --name web -v nginx-data:/usr/share/nginx/html nginx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Explicación del Comando:'''&lt;br /&gt;
* `-v nginx-data:/usr/share/nginx/html`: Esta opción mapea el volumen `nginx-data` al directorio `/usr/share/nginx/html` en el contenedor. Cualquier archivo que coloques en este volumen persistirá incluso si el contenedor se detiene o se elimina.&lt;br /&gt;
&lt;br /&gt;
=== Accediendo al Contenedor y Agregando Archivos ===&lt;br /&gt;
Para agregar archivos al volumen, puedes usar el siguiente comando para acceder a la terminal del contenedor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker exec -it web sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez dentro del contenedor, puedes crear un archivo HTML directamente en el volumen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;&amp;lt;!doctype html&amp;gt;&amp;lt;html lang='en'&amp;gt;&amp;lt;head&amp;gt;&amp;lt;meta charset='utf-8'&amp;gt;&amp;lt;title&amp;gt;Docker Nginx&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;h2&amp;gt;Hello from Nginx Volume&amp;lt;/h2&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot; &amp;gt; /usr/share/nginx/html/index.html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accediendo a tu Página HTML ===&lt;br /&gt;
Ahora abre tu navegador y navega a `http://localhost:8080`. Deberías ver el contenido del archivo HTML que acabas de crear.&lt;br /&gt;
&lt;br /&gt;
=== Conclusión ===&lt;br /&gt;
Hemos aprendido a manejar puertos y volúmenes en Docker, creando un contenedor NGINX que sirve nuestros propios archivos HTML personalizados. Hemos visto cómo utilizar '''bind mounts''' para desarrollo y '''volúmenes''' para persistencia de datos. Esto es fundamental para desarrollar aplicaciones web que requieren persistencia de datos.&lt;br /&gt;
&lt;br /&gt;
== Documentación oficial ==&lt;br /&gt;
&lt;br /&gt;
Para más información y detalles sobre todas las características de Docker, consulta la [documentación oficial de Docker](https://docs.docker.com/).&lt;br /&gt;
&lt;br /&gt;
= Conclusión =&lt;br /&gt;
&lt;br /&gt;
¡Felicidades! Ahora has completado un tutorial básico sobre Docker. Has aprendido a instalar Docker, ejecutar contenedores, administrar imágenes, y cómo utilizar volúmenes para persistencia de datos. Continúa explorando las capacidades de Docker para mejorar tu flujo de trabajo y desarrollo de software.&lt;/div&gt;</summary>
		<author><name>Pabcabmar3</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Tutorial_Campo_de_entrenamiento_de_Vagrant&amp;diff=9920</id>
		<title>Tutorial Campo de entrenamiento de Vagrant</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Tutorial_Campo_de_entrenamiento_de_Vagrant&amp;diff=9920"/>
				<updated>2024-11-20T19:47:01Z</updated>
		
		<summary type="html">&lt;p&gt;Pabcabmar3: Añadida explicación rápida de vim para la gente que nunca lo haya usado&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Vagrant =&lt;br /&gt;
&lt;br /&gt;
== Instalación de Vagrant ==&lt;br /&gt;
&lt;br /&gt;
Instrucciones para instalar Vagrant, VirtualBox y Ansible sobre Ubuntu 22.04 (Jammy Jellyfish):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Actualizar la lista de paquetes&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
# Instalar vagrant, ansible y virtualbox&lt;br /&gt;
sudo apt install vagrant ansible virtualbox&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si el paquete vagrant no está disponible tendrás que añadir manualmente el repo oficial y la clave GPG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main&amp;quot; | sudo tee /etc/apt/sources.list.d/hashicorp.list&lt;br /&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install vagrant ansible virtualbox&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducción a Vagrant ==&lt;br /&gt;
&lt;br /&gt;
Vagrant es una herramienta que permite crear y gestionar entornos de máquinas virtuales de forma sencilla y reproducible. Para comenzar, ejecutaremos una máquina sencilla utilizando una box de Ubuntu.&lt;br /&gt;
&lt;br /&gt;
=== Pasos iniciales ===&lt;br /&gt;
&lt;br /&gt;
==== ¿Por qué no debemos tener más de un `Vagrantfile` en el mismo directorio? ====&lt;br /&gt;
&lt;br /&gt;
En Vagrant, cada directorio puede contener solo un archivo `Vagrantfile`. Este archivo es el que Vagrant utiliza para configurar y gestionar las máquinas virtuales. Si tienes más de un `Vagrantfile` en el mismo directorio, Vagrant no sabrá cuál utilizar y esto causará errores. '''Por lo tanto, es importante organizar los ejercicios en directorios separados para mantener los entornos de trabajo independientes.'''&lt;br /&gt;
&lt;br /&gt;
 '''Recomendación''': Cada vez que trabajes en un ejercicio de Vagrant, crea una carpeta diferente para cada entorno. De este modo, te   asegurarás de que cada `Vagrantfile` está aislado y no interfiere con otros.&lt;br /&gt;
&lt;br /&gt;
==== Crear un directorio para el primer ejercicio ====&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la creación de la máquina virtual, vamos a crear un directorio para este ejercicio. Esto es esencial para que el entorno de trabajo esté organizado y no interfiera con otros posibles proyectos o ejercicios.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Crear un directorio para el ejercicio&lt;br /&gt;
$ mkdir ejercicio1&lt;br /&gt;
$ cd ejercicio1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicializar un entorno con un `Vagrantfile` ====&lt;br /&gt;
&lt;br /&gt;
Ahora que tenemos el directorio preparado, vamos a inicializar un entorno de trabajo con Vagrant. Al ejecutar el siguiente comando, Vagrant creará un archivo llamado `Vagrantfile`, que contendrá la configuración básica para la máquina virtual que vamos a levantar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Inicializar un entorno con la box ubuntu/trusty32&lt;br /&gt;
$ vagrant init ubuntu/trusty32&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto generará un archivo `Vagrantfile` en el directorio actual, que contiene las configuraciones predeterminadas para crear una máquina virtual basada en Ubuntu 14.04 (Trusty Tahr).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Explicación del `Vagrantfile` Generado =====&lt;br /&gt;
&lt;br /&gt;
Cuando ejecutas el comando `vagrant init`, Vagrant genera un archivo llamado `Vagrantfile` en el directorio actual. Este archivo contiene la configuración básica para la máquina virtual. A continuación se muestra un ejemplo de un `Vagrantfile` básico y una explicación de cada parte.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
# -*- mode: ruby -*-&lt;br /&gt;
# vi: set ft=ruby :&lt;br /&gt;
&lt;br /&gt;
Vagrant.configure(&amp;quot;2&amp;quot;) do |config|&lt;br /&gt;
&lt;br /&gt;
  # Definición de la Box&lt;br /&gt;
  config.vm.box = &amp;quot;ubuntu/trusty32&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # Redirección de puertos&lt;br /&gt;
  # Este comando es útil si se quiere acceder a servicios dentro de la máquina&lt;br /&gt;
  config.vm.network &amp;quot;forwarded_port&amp;quot;, guest: 80, host: 8080&lt;br /&gt;
&lt;br /&gt;
  # Carpeta compartida entre la máquina host y la máquina virtual&lt;br /&gt;
  config.vm.synced_folder &amp;quot;.&amp;quot;, &amp;quot;/vagrant&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # Habilitar el uso de VirtualBox como proveedor&lt;br /&gt;
  config.vm.provider &amp;quot;virtualbox&amp;quot; do |vb|&lt;br /&gt;
    # Personalización de la memoria RAM para la VM&lt;br /&gt;
    vb.memory = &amp;quot;1024&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Descripción de cada sección ======&lt;br /&gt;
&lt;br /&gt;
'''Configuración Básica de Vagrant''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Vagrant.configure(&amp;quot;2&amp;quot;) do |config|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta línea indica que se está utilizando la versión 2 de la configuración de Vagrant. El bloque que sigue (`do |config|`) define todas las configuraciones para la máquina virtual.&lt;br /&gt;
&lt;br /&gt;
'''Box a utilizar''':&lt;br /&gt;
&amp;lt;pre&amp;gt;  &lt;br /&gt;
config.vm.box = &amp;quot;ubuntu/trusty32&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Define la box que se utilizará para crear la máquina virtual. En este caso, se utiliza una box de Ubuntu 14.04 de 32 bits, pero puedes cambiarla a cualquier otra según tus necesidades.&lt;br /&gt;
&lt;br /&gt;
'''Redirección de puertos''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.vm.network &amp;quot;forwarded_port&amp;quot;, guest: 80, host: 8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta línea establece la redirección de puertos entre la máquina virtual y el host. En este caso, se redirige el puerto 80 de la máquina virtual al puerto 8080 del host. Esto es útil para acceder a servicios como un servidor web que esté corriendo dentro de la máquina virtual desde el navegador del host.&lt;br /&gt;
&lt;br /&gt;
'''Carpeta compartida''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.vm.synced_folder &amp;quot;.&amp;quot;, &amp;quot;/vagrant&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí se establece una carpeta compartida entre el host y la máquina virtual. El primer parámetro (`&amp;quot;.&amp;quot;`) se refiere a la carpeta actual en el host, y el segundo (`&amp;quot;/vagrant&amp;quot;`) es la carpeta en la máquina virtual. Cualquier archivo colocado en la carpeta del host será accesible dentro de la máquina virtual y viceversa.&lt;br /&gt;
&lt;br /&gt;
'''Configuración de VirtualBox''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.vm.provider &amp;quot;virtualbox&amp;quot; do |vb|&lt;br /&gt;
 vb.memory = &amp;quot;1024&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta sección configura el proveedor de virtualización a utilizar (en este caso, VirtualBox). En este caso, se ha configurado para que la máquina virtual tenga 1 GB de memoria RAM (1024 MB). Puedes ajustar este valor según los recursos disponibles en tu máquina.&lt;br /&gt;
&lt;br /&gt;
==== Levantar la máquina virtual ====&lt;br /&gt;
&lt;br /&gt;
Con el `Vagrantfile` listo, es hora de levantar la máquina virtual. El siguiente comando descargará la imagen de la box (si no está previamente descargada) y creará una máquina virtual según las especificaciones del `Vagrantfile`.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Levantar la máquina virtual&lt;br /&gt;
$ vagrant up&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este proceso puede tardar algunos minutos dependiendo de la velocidad de tu conexión a Internet, ya que Vagrant descargará la box y configurará la máquina virtual.&lt;br /&gt;
&lt;br /&gt;
==== Verificar que tenemos dos sistemas funcionando ====&lt;br /&gt;
&lt;br /&gt;
Una vez que la máquina virtual esté en funcionamiento, podemos verificar que todo está bien ejecutándose. Primero, accedemos a la máquina virtual a través de SSH y comprobamos el nombre del sistema operativo con el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Conecta a la máquina virtual a través de SSH y ejecuta una orden&lt;br /&gt;
$ vagrant ssh -c 'hostnamectl' # Si pide contraseña, utiliza 'vagrant'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La opción -c de la orden anterior hace que tras conectarse por SSH y ejecutar la orden 'hostnamectl' en la máquina virtual, regresa automáticamente al host. Así que en esta misma terminal puedes verificar el sistema operativo del host para comprobar que estamos trabajando con dos sistemas diferentes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# En el host, verificar el sistema operativo&lt;br /&gt;
$ hostnamectl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ver el estado de las máquinas virtuales ====&lt;br /&gt;
&lt;br /&gt;
Puedes comprobar el estado de todas las máquinas virtuales que Vagrant está gestionando con el siguiente comando. Esto te permitirá ver si tu máquina está funcionando correctamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Ver el estado de las máquinas virtuales&lt;br /&gt;
$ vagrant global-status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Entrar en la máquina virtual ====&lt;br /&gt;
&lt;br /&gt;
Si deseas interactuar con la máquina virtual, puedes acceder a ella en cualquier momento utilizando SSH. El siguiente comando te permitirá iniciar sesión en la máquina virtual:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Iniciar sesión en la máquina virtual&lt;br /&gt;
$ vagrant ssh # Si pide contraseña, utiliza 'vagrant'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Crear un fichero en el sistema guest ====&lt;br /&gt;
&lt;br /&gt;
Dentro de la máquina virtual, podemos crear un archivo para comprobar que tenemos acceso al sistema de archivos. El siguiente comando creará un archivo de texto llamado `hola.txt` en el directorio `/home` de la máquina virtual.&lt;br /&gt;
Con el comando &amp;quot;vi&amp;quot; realmente estamos abriendo el editor &amp;quot;vim&amp;quot;. Cuando entres notarás que aunque escribas, no aparece texto. Esto es porque te encuentras en el modo &amp;quot;normal&amp;quot;. Para escribir, presiona &amp;quot;i&amp;quot; (cambiar a modo &amp;quot;insert&amp;quot;) y escribe lo que sea. Cuando termines, pulsa &amp;quot;esc&amp;quot; para volver a modo normal. Finalmente, pulsa &amp;quot;:&amp;quot; para entrar en modo &amp;quot;command line&amp;quot;, y escribe &amp;quot;wq&amp;quot; (&amp;quot;w&amp;quot; para &amp;quot;write&amp;quot;, es decir, guardar cambios; y &amp;quot;q&amp;quot; para &amp;quot;quit&amp;quot;, es decir, salir de vim):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Crear un archivo en el sistema de archivos de la VM&lt;br /&gt;
$ cd /home&lt;br /&gt;
$ sudo vi hola.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dentro del archivo, puedes escribir cualquier contenido y guardarlo.&lt;br /&gt;
&lt;br /&gt;
==== Apagar la máquina y liberar recursos ====&lt;br /&gt;
&lt;br /&gt;
Cuando hayas terminado de trabajar, es recomendable apagar la máquina para liberar recursos en tu máquina local. Puedes hacerlo con el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#Sal de la terminal de la máquina virtual&lt;br /&gt;
$ exit&lt;br /&gt;
# Apagar la máquina&lt;br /&gt;
$ vagrant halt #(la opción -f simula un apagado forzado)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto apagará la máquina virtual y liberará los recursos que estaba utilizando.&lt;br /&gt;
&lt;br /&gt;
==== Levantar la máquina nuevamente ====&lt;br /&gt;
&lt;br /&gt;
Al levantar nuevamente la máquina virtual, podemos comprobar que el archivo que creamos sigue existiendo en el sistema. Vagrant guarda el estado de la máquina virtual, por lo que los cambios realizados se conservan entre apagados y arranques:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Iniciar de nuevo la máquina&lt;br /&gt;
$ vagrant up&lt;br /&gt;
# Entrar en la máquina mediante ssh&lt;br /&gt;
$ vagrant ssh &lt;br /&gt;
# Verificar que el fichero sigue presente&lt;br /&gt;
$ cat /home/hola.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Parar y destruir la máquina virtual ====&lt;br /&gt;
&lt;br /&gt;
Cuando ya no necesitemos la máquina virtual, podemos detenerla y destruirla para liberar los recursos del sistema. El siguiente comando apagará la máquina y la eliminará completamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Salir de la máquina virtual&lt;br /&gt;
$ exit&lt;br /&gt;
# Destruir la máquina y liberar los recursos&lt;br /&gt;
$ vagrant destroy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gestión de Boxes ==&lt;br /&gt;
&lt;br /&gt;
Vagrant gestiona las boxes, que son imágenes de máquinas virtuales preconfiguradas. Es importante saber cómo listar y eliminar las boxes cuando ya no las necesitemos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Lista de boxes disponibles en nuestro sistema local&lt;br /&gt;
$ vagrant box list&lt;br /&gt;
&lt;br /&gt;
# Para eliminar una box&lt;br /&gt;
$ vagrant box remove ubuntu/trusty32&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Carpetas Compartidas y Redirección de Puertos ==&lt;br /&gt;
&lt;br /&gt;
En este ejercicio, aprenderás a trabajar con carpetas compartidas entre el sistema host y la máquina virtual, y a configurar la redirección de puertos para acceder a servicios dentro de la máquina virtual desde el host.&lt;br /&gt;
&lt;br /&gt;
==== Crear un directorio para el segundo ejercicio ====&lt;br /&gt;
&lt;br /&gt;
Vamos a crear un nuevo directorio para este ejercicio. Esto nos permite mantener los entornos de trabajo aislados:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Crear un directorio para el segundo ejercicio&lt;br /&gt;
$ mkdir ejercicio2&lt;br /&gt;
$ cd ejercicio2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicializar el entorno con la box &amp;quot;obihann/nginx&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Vamos a utilizar la box &amp;quot;obihann/nginx&amp;quot;, que es una imagen preconfigurada con Nginx. Inicializamos el entorno con esta box:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Inicializar un entorno con la box obihann/nginx&lt;br /&gt;
$ vagrant init obihann/nginx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Levantar la máquina virtual ====&lt;br /&gt;
&lt;br /&gt;
Ahora que hemos configurado el entorno con la box de Nginx, levantamos la máquina virtual:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Levantar la máquina&lt;br /&gt;
$ vagrant up&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Verificar la carpeta compartida ====&lt;br /&gt;
&lt;br /&gt;
Vagrant crea automáticamente una carpeta compartida en la máquina virtual. Para verificar que esta carpeta existe, ejecutamos el siguiente comando dentro de la máquina virtual:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Verificar el directorio compartido&lt;br /&gt;
$ ls /vagrant&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta carpeta `/vagrant` está vinculada al directorio en el host donde ejecutaste el comando `vagrant init`.&lt;br /&gt;
&lt;br /&gt;
==== Configurar la redirección de puertos ====&lt;br /&gt;
&lt;br /&gt;
La máquina virtual que estamos usando ejecuta un servidor Nginx en el puerto 80. Para poder acceder a este servidor desde el navegador del host, necesitamos redirigir el puerto 80 de la máquina virtual al puerto 8080 de nuestro host. Para hacer esto, editamos el `Vagrantfile` y agregamos la siguiente línea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
config.vm.network &amp;quot;forwarded_port&amp;quot;, guest: 80, host: 8080&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto hará que el servidor Nginx en el puerto 80 de la máquina virtual sea accesible desde el puerto 8080 en tu máquina host.&lt;br /&gt;
&lt;br /&gt;
==== Recargar la máquina virtual ====&lt;br /&gt;
&lt;br /&gt;
Después de realizar cambios en el `Vagrantfile`, debemos recargar la máquina virtual para aplicar la configuración:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Recargar la máquina para aplicar cambios&lt;br /&gt;
$ vagrant reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Añadir un archivo index.html ====&lt;br /&gt;
&lt;br /&gt;
Para comprobar que la redirección de puertos funciona correctamente, añadimos un archivo `index.html` en el directorio `/www` de la máquina virtual. Este archivo se mostrará cuando accedamos a la dirección `localhost:8080` en el navegador.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Entrar en la máquina virtual&lt;br /&gt;
$ vagrant ssh&lt;br /&gt;
# Ir al directorio vagrant/www&lt;br /&gt;
$ cd /vagrant/www &lt;br /&gt;
# Crear el archivo index.html dentro de la máquina virtual&lt;br /&gt;
$ echo '&amp;lt;h1&amp;gt;Bienvenido a Nginx en Vagrant&amp;lt;/h1&amp;gt;' &amp;gt; index.html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, desde el navegador del host, podemos ver el sistema funcionando en la dirección http://localhost:8080/.&lt;br /&gt;
&lt;br /&gt;
==== Modifica el archivo index.html desde el host====&lt;br /&gt;
&lt;br /&gt;
Para comprobar que la carpeta compartida funciona correctamente, puedes modificar el archivo `index.html` del directorio `www` en la propia máquina anfitriona. Este es el archivo que se muestra cuando accedemos a la dirección `localhost:8080` en el navegador.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Desde el host&lt;br /&gt;
$ echo '&amp;lt;h2&amp;gt;Modificado desde el host&amp;lt;/h2&amp;gt;' &amp;gt;&amp;gt; www/index.html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, desde el navegador del host, podemos ver la modificación realizada al visitar de nuevo la dirección http://localhost:8080/.&lt;br /&gt;
&lt;br /&gt;
==== Parar y destruir la máquina virtual ====&lt;br /&gt;
&lt;br /&gt;
Al igual que en el primer ejercicio, es recomendable apagar y destruir la máquina para liberar recursos cuando hayamos terminado de trabajar con ella:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
# Apagar la máquina&lt;br /&gt;
$ vagrant halt&lt;br /&gt;
&lt;br /&gt;
# Destruir la máquina&lt;br /&gt;
$ vagrant destroy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pabcabmar3</name></author>	</entry>

	</feed>