<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Virtualización archivos &#187; Aprende IT</title>
	<atom:link href="https://aprendeit.com/category/virtualizacion/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>Todas las novedades sobre IT</description>
	<lastBuildDate>Mon, 29 May 2023 10:56:00 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://aprendeit.com/wp-content/uploads/2020/02/LOGO-CORTO-100x100.png</url>
	<title>Virtualización archivos &#187; Aprende IT</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Gestión de Recursos en Entornos Virtualizados: Técnicas y Buenas Prácticas</title>
		<link>https://aprendeit.com/gestion-de-recursos-en-entornos-virtualizados-tecnicas-y-buenas-practicas/</link>
					<comments>https://aprendeit.com/gestion-de-recursos-en-entornos-virtualizados-tecnicas-y-buenas-practicas/#respond</comments>
		
		<dc:creator><![CDATA[Gerardo G. Urtiaga]]></dc:creator>
		<pubDate>Mon, 29 May 2023 10:56:00 +0000</pubDate>
				<category><![CDATA[Basico-Linux]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Virtualización]]></category>
		<guid isPermaLink="false">https://aprendeit.com/?p=5064</guid>

					<description><![CDATA[<p>Hola, lector del ciberespacio. Hoy, vamos a sumergirnos en un mundo que quizás no sea tan tangible como el físico, pero que tiene una importancia crucial en nuestro día a ...</p>
<p>La entrada <a href="https://aprendeit.com/gestion-de-recursos-en-entornos-virtualizados-tecnicas-y-buenas-practicas/">Gestión de Recursos en Entornos Virtualizados: Técnicas y Buenas Prácticas</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="group w-full text-gray-800 dark:text-gray-100 border-b border-black/10 dark:border-gray-900/50 bg-gray-50 dark:bg-[#444654]">
<div class="flex p-4 gap-4 text-base md:gap-6 md:max-w-2xl lg:max-w-xl xl:max-w-3xl md:py-6 lg:px-0 m-auto">
<div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]">
<div class="flex flex-grow flex-col gap-3">
<div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap break-words">
<div class="markdown prose w-full break-words dark:prose-invert light">
<p>Hola, lector del ciberespacio. Hoy, vamos a sumergirnos en un mundo que quizás no sea tan tangible como el físico, pero que tiene una importancia crucial en nuestro día a día. Hablamos de la gestión de recursos en entornos virtualizados. ¿Te has preguntado alguna vez cómo se administran todos esos datos y procesos que se generan y se transfieren cada segundo en la red?</p>
<h2>¡Bienvenido al Mundo de la Virtualización!</h2>
<p>Antes de nada, es esencial entender qué es la virtualización. Se trata de una tecnología que nos permite crear versiones virtuales de recursos físicos, como servidores, sistemas de almacenamiento y redes. ¿Suena futurista? Pues bien, este es nuestro presente, y se perfila como el futuro más inmediato en la gestión de TI.</p>
<p>Los entornos virtualizados pueden proporcionar una gran flexibilidad y eficiencia, pero también presentan desafíos únicos cuando se trata de la gestión de recursos. La clave está en conocer y aplicar técnicas y buenas prácticas que permitan maximizar su potencial.</p>
<h2>Todo es Cuestión de Balance</h2>
<p>Una de las claves en la gestión de recursos en entornos virtualizados es el balance. Esto significa que los recursos de hardware y software deben estar equilibrados para garantizar un rendimiento óptimo. Para ello, es esencial la monitorización constante del sistema, algo que puede realizarse a través de diversas herramientas que te proporcionarán datos en tiempo real sobre el uso de los recursos.</p>
<p>El desequilibrio puede llevar a problemas de rendimiento y fallos en el sistema, algo que obviamente queremos evitar. Asegúrate de estar siempre un paso adelante, anticipando necesidades y planificando la asignación de recursos de forma inteligente.</p>
<h2>La Automatización: Tu Mejor Aliada</h2>
<p>¿Sabías que es posible automatizar gran parte de la gestión de recursos en entornos virtualizados? Esto se hace a través de lo que se conoce como «políticas de automatización», que son reglas que puedes configurar para que el sistema realice acciones automáticamente basándose en ciertos criterios.</p>
<p>Por ejemplo, puedes establecer una política que automáticamente aumente la capacidad de almacenamiento cuando se alcance un cierto porcentaje de uso. De esta forma, puedes prevenir situaciones en las que se quede sin espacio de almacenamiento, lo que podría llevar a interrupciones en el servicio y pérdida de datos.</p>
<p>La automatización también puede ser útil para mantener la seguridad del sistema, por ejemplo, configurando políticas que automáticamente instalen las últimas actualizaciones de seguridad o que realicen copias de seguridad de los datos a intervalos regulares.</p>
<h2>El Valor de la Capacidad de Previsión</h2>
<p>Si eres capaz de prever las necesidades de tu sistema, estarás en una buena posición para gestionar eficientemente los recursos en entornos virtualizados. Esto implica hacer un seguimiento constante de las tendencias y patrones de uso de recursos, y utilizar esta información para tomar decisiones informadas.</p>
<p>Por ejemplo, si observas que la demanda de recursos aumenta regularmente a ciertas horas del día, puedes programar que se asignen más recursos durante esos periodos. Esto te ayudará a mantener un alto rendimiento incluso durante los picos de demanda.</p>
<p>Además, tener una capacidad de previsión significa que puedes anticipar y prepararte para eventos futuros que puedan afectar a tu sistema. Por ejemplo, si se va a lanzar una nueva aplicación que probablemente atraerá a un gran número de usuarios, puedes anticiparte y asignar más recursos para manejar el aumento de la demanda.</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="group w-full text-gray-800 dark:text-gray-100 border-b border-black/10 dark:border-gray-900/50 bg-gray-50 dark:bg-[#444654]">
<div class="flex p-4 gap-4 text-base md:gap-6 md:max-w-2xl lg:max-w-xl xl:max-w-3xl md:py-6 lg:px-0 m-auto">
<div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]">
<div class="flex flex-grow flex-col gap-3">
<div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap break-words">
<div class="markdown prose w-full break-words dark:prose-invert light">
<h2>La Importancia de un Buen Diseño</h2>
<p>Un buen diseño de la infraestructura virtual es fundamental para una gestión eficiente de los recursos. Esto implica considerar factores como la redundancia, la tolerancia a fallos, el equilibrio de carga, la escalabilidad y la seguridad.</p>
<p>Un diseño bien pensado puede ayudarte a maximizar el uso de los recursos, evitar cuellos de botella y proporcionar un alto nivel de rendimiento y disponibilidad. Además, un diseño adecuado te permitirá adaptarte rápidamente a los cambios y a las nuevas necesidades que puedan surgir.</p>
<h2>La Formación Continua es Clave</h2>
<p>La gestión de recursos en entornos virtualizados es un campo que está en constante evolución. Las tecnologías, las técnicas y las mejores prácticas cambian con rapidez, por lo que es vital mantenerse al día.</p>
<p>Asegúrate de invertir en formación continua, tanto para ti como para tu equipo. Participa en seminarios web, talleres, cursos y otras oportunidades de aprendizaje. Mantén un ojo en las últimas tendencias y desarrollos en el campo de la virtualización y la gestión de recursos.</p>
<p>Además, recuerda que la formación no es solo sobre aprender nuevas cosas, sino también sobre compartir conocimientos. Fomenta una cultura de aprendizaje en tu equipo, donde todos se sientan cómodos compartiendo sus ideas y experiencias.</p>
<p>Esperamos que este artículo te haya proporcionado un poco de claridad e inspiración en tu camino hacia la eficiencia en la gestión de recursos en entornos virtualizados. Y, aunque no haya una conclusión en sí, creo que ya has captado la idea principal: con las técnicas y prácticas correctas, la gestión de estos entornos se vuelve menos intimidante y más efectiva. ¡Hasta la próxima!</p>
</div>
</div>
</div>
</div>
</div>
</div>
<p>La entrada <a href="https://aprendeit.com/gestion-de-recursos-en-entornos-virtualizados-tecnicas-y-buenas-practicas/">Gestión de Recursos en Entornos Virtualizados: Técnicas y Buenas Prácticas</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aprendeit.com/gestion-de-recursos-en-entornos-virtualizados-tecnicas-y-buenas-practicas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo montar un disco en WSL y acceder a él desde la terminal</title>
		<link>https://aprendeit.com/como-montar-un-disco-en-wsl-y-acceder-a-el-desde-la-terminal/</link>
					<comments>https://aprendeit.com/como-montar-un-disco-en-wsl-y-acceder-a-el-desde-la-terminal/#respond</comments>
		
		<dc:creator><![CDATA[Gerardo G. Urtiaga]]></dc:creator>
		<pubDate>Mon, 01 May 2023 05:40:34 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Otros]]></category>
		<category><![CDATA[Virtualización]]></category>
		<guid isPermaLink="false">https://aprendeit.com/?p=4873</guid>

					<description><![CDATA[<p>Windows Subsystem for Linux (WSL) es una característica de Windows que permite a los usuarios ejecutar un ambiente Linux en Windows. Una de las ventajas de WSL es que los ...</p>
<p>La entrada <a href="https://aprendeit.com/como-montar-un-disco-en-wsl-y-acceder-a-el-desde-la-terminal/">Cómo montar un disco en WSL y acceder a él desde la terminal</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Windows Subsystem for Linux (WSL) es una característica de Windows que permite a los usuarios ejecutar un ambiente Linux en Windows. Una de las ventajas de WSL es que los usuarios pueden acceder a los archivos en el disco duro de Windows desde Linux, lo que les permite trabajar en proyectos de Linux utilizando archivos almacenados en su disco duro de Windows.</p>
<p>En este artículo, te mostraremos cómo montar un disco en WSL y acceder a él desde Linux. Sigue leyendo para aprender más.</p>
<h2>¿Qué es WSL?</h2>
<p>WSL es una función de Windows que permite a los usuarios ejecutar una distribución de Linux en Windows. WSL es una capa de compatibilidad que traduce las llamadas del sistema Linux en llamadas del sistema Windows, lo que permite a los usuarios ejecutar aplicaciones Linux en Windows.</p>
<p>WSL es una característica extremadamente útil para los desarrolladores que necesitan trabajar en proyectos de Linux mientras utilizan Windows como sistema operativo principal. La capacidad de acceder a los archivos de Windows desde Linux en WSL es una de las ventajas de esta característica.</p>
<h2>Cómo montar un disco en WSL</h2>
<p>Montar un disco en WSL es un proceso sencillo que se puede hacer con unos pocos comandos en la línea de comandos.</p>
<p>Abre la aplicación «Terminal» en WSL. Si no tienes instalado WSL, puedes descargarlo desde la Microsoft Store.</p>
<p>Escribe el siguiente comando en la terminal para asegurarte de que tienes los permisos necesarios para montar el disco:</p>
<pre>sudo mkdir /mnt/e</pre>
<p>Este comando creará una carpeta llamada «e» en la ubicación /mnt. El prefijo «sudo» te dará permisos de administrador para ejecutar el comando.</p>
<p>A continuación, monta el disco E: en la carpeta /mnt/e con el siguiente comando:</p>
<pre>sudo mount -t drvfs E: /mnt/e</pre>
<p>Este comando utiliza la herramienta «mount» para montar el disco E: en la carpeta /mnt/e. El parámetro «-t drvfs» indica que se está utilizando el controlador de sistema de archivos de Windows para montar el disco.</p>
<p>Ahora deberías poder acceder al disco E: desde la terminal de WSL en la carpeta /mnt/e. Puedes cambiar al directorio E: con el siguiente comando:</p>
<pre>cd /mnt/e</pre>
<h2>Cómo acceder a un disco montado en WSL desde la terminal</h2>
<p>Una vez que hayas montado el disco en WSL, puedes acceder a él desde la terminal de Linux.</p>
<p>Abre la terminal de Linux en WSL.</p>
<p>Para acceder al disco E:, cambia al directorio /mnt/e con el siguiente comando:</p>
<pre>cd /mnt/e</pre>
<p>Ahora deberías poder ver los archivos y carpetas en el disco E: desde la terminal de Linux en WSL. Puedes utilizar los comandos habituales de Linux para trabajar con estos archivos y carpetas.<br />
Cómo desmontar un disco en WSL</p>
<p>Para desmontar un disco en WSL, utiliza el siguiente comando:</p>
<pre>sudo umount /mnt/e</pre>
<p>Este comando desmontará el disco E: de la carpeta /mnt/e en WSL.</p>
<p>La entrada <a href="https://aprendeit.com/como-montar-un-disco-en-wsl-y-acceder-a-el-desde-la-terminal/">Cómo montar un disco en WSL y acceder a él desde la terminal</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aprendeit.com/como-montar-un-disco-en-wsl-y-acceder-a-el-desde-la-terminal/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Introducción a Vagrant: gestión de entornos de desarrollo virtualizados</title>
		<link>https://aprendeit.com/introduccion-a-vagrant-gestion-de-entornos-de-desarrollo-virtualizados/</link>
					<comments>https://aprendeit.com/introduccion-a-vagrant-gestion-de-entornos-de-desarrollo-virtualizados/#respond</comments>
		
		<dc:creator><![CDATA[Gerardo G. Urtiaga]]></dc:creator>
		<pubDate>Tue, 25 Apr 2023 22:26:53 +0000</pubDate>
				<category><![CDATA[Desarrollo / programacion]]></category>
		<category><![CDATA[Otros]]></category>
		<category><![CDATA[Virtualización]]></category>
		<guid isPermaLink="false">https://aprendeit.com/?p=4834</guid>

					<description><![CDATA[<p>¡Hola a todos! Hoy vamos a adentrarnos en el mundo de Vagrant, una herramienta fantástica que nos permite gestionar entornos de desarrollo virtualizados de forma sencilla y rápida. Si eres ...</p>
<p>La entrada <a href="https://aprendeit.com/introduccion-a-vagrant-gestion-de-entornos-de-desarrollo-virtualizados/">Introducción a Vagrant: gestión de entornos de desarrollo virtualizados</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>¡Hola a todos! Hoy vamos a adentrarnos en el mundo de Vagrant, una herramienta fantástica que nos permite gestionar entornos de desarrollo virtualizados de forma sencilla y rápida. Si eres un desarrollador, sabes lo complicado que puede ser configurar y mantener entornos de desarrollo consistentes y eficientes. Pues bien, Vagrant es la solución a esos problemas. ¡Vamos a verlo!</p>
<h2>¿Qué es Vagrant y por qué deberías usarlo?</h2>
<p>Vagrant es una herramienta de código abierto que nos permite crear, configurar y gestionar entornos de desarrollo virtualizados. Con Vagrant, podemos tener un entorno de desarrollo uniforme y controlado en nuestra máquina, independientemente del sistema operativo que utilicemos. Así, evitamos problemas de compatibilidad y podemos centrarnos en lo realmente importante: ¡desarrollar!</p>
<p>Pero, ¿qué ventajas tiene Vagrant? Pues bien, algunas de ellas son:</p>
<ol>
<li>Facilita la colaboración entre desarrolladores, ya que todos pueden trabajar en el mismo entorno.</li>
<li>Simplifica la configuración y administración de máquinas virtuales.</li>
<li>Permite automatizar la creación y el aprovisionamiento de entornos de desarrollo.</li>
<li>Fomenta el uso de buenas prácticas en el desarrollo, como la infraestructura como código.</li>
</ol>
<h2>Instalación y configuración de Vagrant</h2>
<p>Para instalar Vagrant, primero necesitamos tener un proveedor de virtualización en nuestra máquina. Uno de los más populares es VirtualBox, pero también podemos utilizar VMware, Hyper-V, entre otros. En este artículo, nos centraremos en VirtualBox. Para instalarlo, simplemente sigue las instrucciones en la página oficial de VirtualBox.<br />
Una vez instalado el proveedor de virtualización, podemos descargar Vagrant desde su página oficial. Allí encontraremos versiones para Windows, macOS y Linux. Descarga e instala la versión adecuada para tu sistema operativo.</p>
<h2>Primeros pasos con Vagrant</h2>
<p>Ahora que tenemos Vagrant instalado, vamos a crear nuestro primer entorno de desarrollo virtualizado. Para ello, seguiremos estos pasos:</p>
<p>Abre una terminal y crea un nuevo directorio para nuestro proyecto:</p>
<pre>mkdir mi-primer-entorno-vagrant
cd mi-primer-entorno-vagrant</pre>
<p>Inicializa Vagrant en el directorio:</p>
<pre>vagrant init</pre>
<p>Este comando creará un archivo llamado Vagrantfile en nuestro directorio. Este archivo es la clave para configurar y personalizar nuestro entorno de desarrollo virtualizado.</p>
<p>Edita el Vagrantfile con tu editor de texto favorito y añade la siguiente línea:</p>
<pre>config.vm.box = "hashicorp/bionic64"</pre>
<p>Esta línea indica que vamos a utilizar la imagen «hashicorp/bionic64» como base para nuestra máquina virtual. Esta imagen es una versión de Ubuntu 18.04 (Bionic Beaver) de 64 bits. Hay muchas otras imágenes disponibles en el catálogo oficial de Vagrant, que puedes explorar en Vagrant Cloud.</p>
<p>Arranca la máquina virtual con el comando:</p>
<pre>vagrant up</pre>
<p>Vagrant descargará la imagen (si aún no lo ha hecho) y creará una nueva máquina virtual basada en ella. Este proceso puede tardar un poco, dependiendo de la velocidad de tu conexión a Internet y de tu equipo.</p>
<p>Una vez que la máquina virtual esté en funcionamiento, podemos conectarnos a ella mediante SSH:</p>
<pre>vagrant ssh</pre>
<p>¡Felicidades! Ahora estás conectado a tu primer entorno de desarrollo virtualizado con Vagrant. Puedes comenzar a instalar software, desarrollar aplicaciones y experimentar sin miedo a romper tu entorno local.</p>
<h2>Provisionamiento de entornos</h2>
<p>Una de las características más interesantes de Vagrant es el provisionamiento, que nos permite automatizar la configuración y la instalación de software en nuestras máquinas virtuales. Vagrant es compatible con varios sistemas de provisionamiento, como Shell, Puppet, Ansible y Chef, entre otros.<br />
Para ilustrar cómo funciona el provisionamiento, vamos a utilizar un simple script de Shell. Añade las siguientes líneas a tu Vagrantfile, justo debajo de config.vm.box = «hashicorp/bionic64»:</p>
<pre>config.vm.provision "shell", inline: &lt;&lt;-SHELL
    sudo apt-get update
    sudo apt-get install -y git nginx
SHELL</pre>
<p>Estas líneas indican que Vagrant debe ejecutar un script de Shell que actualiza los repositorios de paquetes de Ubuntu e instala Git y Nginx. Para aplicar estos cambios, debemos volver a aprovisionar nuestra máquina virtual con el comando:</p>
<pre>vagrant reload --provision</pre>
<p>Una vez que el proceso haya finalizado, nuestra máquina virtual tendrá Git y Nginx instalados.</p>
<h2>Comandos básicos de Vagrant</h2>
<p>Aquí tienes una lista de algunos comandos básicos de Vagrant que te serán útiles en tu día a día:</p>
<ul>
<li>vagrant init: Inicializa un nuevo entorno de Vagrant en el directorio actual.</li>
<li>vagrant up: Arranca la máquina virtual.</li>
<li>vagrant ssh: Conéctate a la máquina virtual mediante SSH.</li>
<li>vagrant halt: Apaga la máquina virtual.</li>
<li>vagrant reload: Reinicia la máquina virtual.</li>
<li>vagrant destroy: Elimina la máquina virtual y todos sus recursos.</li>
<li>vagrant status: Muestra el estado de la máquina virtual.</li>
<li>vagrant global-status: Muestra el estado de todas las máquinas virtuales en tu sistema.</li>
<li>vagrant box: Gestiona las imágenes de máquinas virtuales (boxes) en tu sistema.</li>
</ul>
<h2>Trabajar con múltiples máquinas virtuales</h2>
<p>Vagrant nos permite gestionar fácilmente múltiples máquinas virtuales en un mismo proyecto. Para ello, simplemente debemos añadir una nueva definición de máquina virtual en nuestro Vagrantfile. Por ejemplo, si queremos añadir una segunda máquina virtual con CentOS 7, podríamos hacer lo siguiente:</p>
<pre>config.vm.define "centos" do |centos|
    centos.vm.box = "centos/7"
    centos.vm.hostname = "centos.local"
    centos.vm.network "private_network", ip: "192.168.33.20"
end</pre>
<p>Con esta configuración, hemos creado una nueva máquina virtual llamada «centos» basada en la imagen «centos/7». Además, le hemos asignado un nombre de host y una dirección IP en una red privada.</p>
<p>Para arrancar ambas máquinas virtuales, simplemente ejecutamos el comando `vagrant up`. Si queremos arrancar solo una de ellas, podemos especificar su nombre:</p>
<pre>vagrant up centos</pre>
<p>Podemos conectarnos a la máquina virtual de CentOS mediante SSH con el siguiente comando:</p>
<pre>vagrant ssh centos</pre>
<h2>Sincronización de archivos entre el host y la máquina virtual</h2>
<p>Vagrant facilita la sincronización de archivos entre nuestra máquina host y las máquinas virtuales. Por defecto, el directorio en el que se encuentra nuestro `Vagrantfile` se sincroniza automáticamente con el directorio `/vagrant` dentro de la máquina virtual. Esto nos permite compartir archivos fácilmente entre ambos entornos.</p>
<p>Si queremos configurar una carpeta compartida personalizada, podemos hacerlo añadiendo la siguiente línea a nuestro `Vagrantfile`:</p>
<pre>config.vm.synced_folder "mi-carpeta-local", "/mi-carpeta-remota"</pre>
<p>Esta línea indica que la carpeta «mi-carpeta-local» en nuestra máquina host se sincronizará con la carpeta «/mi-carpeta-remota» en la máquina virtual. Vagrant se encargará de mantener ambos directorios sincronizados automáticamente.</p>
<h2>Redes en Vagrant</h2>
<p>Vagrant nos ofrece varias opciones para configurar la red en nuestras máquinas virtuales. Algunas de las más comunes son:</p>
<p>&#8211; Red privada: Permite a las máquinas virtuales comunicarse entre sí y con el host a través de una red privada. Para configurar una red privada, añade la siguiente línea a tu `Vagrantfile`:</p>
<pre>config.vm.network "private_network", ip: "192.168.33.10"</pre>
<p>&#8211; Red pública: Conecta la máquina virtual directamente a la red pública, permitiendo a otras máquinas en la red acceder a ella. Para configurar una red pública, añade la siguiente línea a tu `Vagrantfile`:</p>
<pre>config.vm.network "public_network"</pre>
<p>&#8211; Redireccionamiento de puertos: Permite acceder a servicios en la máquina virtual a través de un puerto específico en el host. Para configurar el reenvío de puertos, añade la siguiente línea a tu `Vagrantfile`:</p>
<pre>config.vm.network "forwarded_port", guest: 80, host: 8080</pre>
<p>Esta línea indica que el puerto 80 en la máquina virtual se redireccionará al puerto 8080 en nuestra máquina host.</p>
<p>La entrada <a href="https://aprendeit.com/introduccion-a-vagrant-gestion-de-entornos-de-desarrollo-virtualizados/">Introducción a Vagrant: gestión de entornos de desarrollo virtualizados</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aprendeit.com/introduccion-a-vagrant-gestion-de-entornos-de-desarrollo-virtualizados/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo supervisar los recursos de CPU y RAM de tu ESX desde Python</title>
		<link>https://aprendeit.com/como-supervisar-los-recursos-de-cpu-y-ram-de-tu-esx-desde-python/</link>
					<comments>https://aprendeit.com/como-supervisar-los-recursos-de-cpu-y-ram-de-tu-esx-desde-python/#respond</comments>
		
		<dc:creator><![CDATA[Gerardo G. Urtiaga]]></dc:creator>
		<pubDate>Mon, 17 Apr 2023 16:41:01 +0000</pubDate>
				<category><![CDATA[Desarrollo / programacion]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Virtualización]]></category>
		<guid isPermaLink="false">https://aprendeit.com/?p=4760</guid>

					<description><![CDATA[<p>En este artículo les enseñaré cómo supervisar los recursos de CPU y RAM de tu ESX desde Python. Para ello, utilizaremos un script en Python que nos permitirá monitorear los ...</p>
<p>La entrada <a href="https://aprendeit.com/como-supervisar-los-recursos-de-cpu-y-ram-de-tu-esx-desde-python/">Cómo supervisar los recursos de CPU y RAM de tu ESX desde Python</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>En este artículo les enseñaré cómo supervisar los recursos de CPU y RAM de tu ESX desde Python. Para ello, utilizaremos un script en Python que nos permitirá monitorear los recursos utilizados en nuestro hypervisor ESX.</p>
<p>Antes de comenzar, es importante destacar que el monitoreo de los recursos de tu ESX es crucial para asegurar que tu infraestructura esté funcionando de manera eficiente y evitar problemas de rendimiento y tiempo de inactividad. Además, al automatizar este proceso con un script en Python, podrás ahorrar tiempo y esfuerzo al no tener que hacerlo manualmente.</p>
<p>Ahora bien, para comenzar con el proceso de monitoreo de los recursos de tu ESX desde Python, necesitarás instalar las siguientes librerías:</p>
<ul>
<li>pyVmomi: es una librería de Python que proporciona una API para interactuar con vSphere y ESX.</li>
<li>ssl: es una librería de Python que proporciona funcionalidades de seguridad de capa de sockets.</li>
</ul>
<p>Una vez que hayas instalado estas librerías, podrás comenzar a escribir tu script para monitorear los recursos de tu ESX. El script que utilizaremos en este artículo se conectará a tu ESX y recuperará la información de hardware del host, así como la información de las máquinas virtuales en ejecución. Luego, calculará la cantidad total de CPU y RAM asignada a las máquinas virtuales y mostrará los resultados en la salida.</p>
<p>¡Pero no te preocupes si todo esto parece un poco complicado! Te explicaré cómo funciona el script paso a paso.</p>
<p>En primer lugar, importamos las librerías que necesitamos y establecemos las credenciales de inicio de sesión de nuestro hypervisor ESX:</p>
<pre>import ssl
from pyVim.connect import SmartConnect, Disconnect
from pyVmomi import vim

# Información de inicio de sesión en el hypervisor ESX
hostname = 'esx_hostname_or_ip'
username = 'username'
password = 'password'</pre>
<p>A continuación, creamos un contexto SSL personalizado que nos permitirá conectarnos al hypervisor ESX:</p>
<pre># Crear un contexto SSL personalizado
context = ssl.create_default_context()
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE

# Conexión al hypervisor ESX con el contexto SSL personalizado
si = SmartConnect(host=hostname, user=username, pwd=password, sslContext=context)
content = si.RetrieveContent()</pre>
<p>Luego, recuperamos la información de hardware del host utilizando el objeto content que creamos en el paso anterior:</p>
<pre># Obtener la información de hardware del host
host_system = content.rootFolder.childEntity[0].hostFolder.childEntity[0].host[0].summary.hardware
num_cpu_cores = host_system.numCpuCores
num_cpu_threads = host_system.numCpuThreads
total_memory = host_system.memorySize / (1024 ** 3)
cpu_model = host_system.cpuModel</pre>
<p>Después, recuperamos la información de las máquinas virtuales en ejecución utilizando el objeto content nuevamente:</p>
<pre># Obtener la información de las máquinas virtuales en ejecución
vm_properties = ['name', 'config.hardware.numCPU', 'config.hardware.memoryMB']
vm_view = content.viewManager.CreateContainerView(content.rootFolder, [vim.VirtualMachine], True)
vms = vm_view.view
vm_view.Destroy()</pre>
<p>A continuación, calculamos la cantidad total de CPU y RAM asignada a las máquinas virtuales en ejecución y la mostramos en la salida:</p>
<pre># Calcular la cantidad total de CPU y RAM asignada a las máquinas virtuales
num_vcpu_assigned = sum(vm.config.hardware.numCPU for vm in vms if vm.summary.runtime.powerState == vim.VirtualMachinePowerState.poweredOn)
total_memory_assigned = sum(vm.config.hardware.memoryMB for vm in vms if vm.summary.runtime.powerState == vim.VirtualMachinePowerState.poweredOn) / 1024

print(f"Tipo de procesador del host: {cpu_model}")
print(f"Número de núcleos con hyperthreading disponibles: {num_cpu_threads}")
print(f"Cantidad total de CPU asignada a las máquinas virtuales: {num_vcpu_assigned}")
print(f"Cantidad total de memoria asignada a las máquinas virtuales: {total_memory_assigned:.2f} GB")
print(f"Memoria total del host: {total_memory:.2f} GB")</pre>
<p>Finalmente, cerramos la conexión al hypervisor ESX:</p>
<pre># Desconectar del hypervisor ESX
Disconnect(si)</pre>
<p>Con este script, podremos obtener información valiosa sobre los recursos de nuestro ESX y asegurarnos de que todo esté funcionando correctamente. Además, al utilizar un script en Python para monitorear los recursos de nuestro ESX, podemos automatizar este proceso y ahorrar tiempo y esfuerzo.</p>
<p>En resumen, la supervisión de los recursos de CPU y RAM de tu ESX es fundamental para asegurar que tu infraestructura esté funcionando de manera eficiente y evitar problemas de rendimiento y tiempo de inactividad. Al automatizar este proceso con un script en Python, podrás ahorrar tiempo y esfuerzo al no tener que hacerlo manualmente. ¡Espero que este artículo te haya sido útil y te animo a probar este script en tu propio entorno!</p>
<p>La entrada <a href="https://aprendeit.com/como-supervisar-los-recursos-de-cpu-y-ram-de-tu-esx-desde-python/">Cómo supervisar los recursos de CPU y RAM de tu ESX desde Python</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aprendeit.com/como-supervisar-los-recursos-de-cpu-y-ram-de-tu-esx-desde-python/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Comandos de red y FC para ESXi</title>
		<link>https://aprendeit.com/comandos-de-red-y-fc-para-esxi/</link>
					<comments>https://aprendeit.com/comandos-de-red-y-fc-para-esxi/#respond</comments>
		
		<dc:creator><![CDATA[Gerardo G. Urtiaga]]></dc:creator>
		<pubDate>Fri, 13 Jan 2023 16:11:45 +0000</pubDate>
				<category><![CDATA[Virtualización]]></category>
		<guid isPermaLink="false">https://aprendeit.com/?p=3375</guid>

					<description><![CDATA[<p>El sistema de virtualización de infraestructura de VMware, conocido como vSphere, utiliza el sistema operativo ESX (Enhanced Scalability and Performance) para proporcionar un entorno de virtualización de alta eficiencia y ...</p>
<p>La entrada <a href="https://aprendeit.com/comandos-de-red-y-fc-para-esxi/">Comandos de red y FC para ESXi</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]">
<div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0">
<div class="relative flex w-[calc(100%-50px)] md:flex-col lg:w-[calc(100%-115px)]">
<div class="flex flex-grow flex-col gap-3">
<div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">
<div class="markdown prose w-full break-words dark:prose-invert light">
<p>El sistema de virtualización de infraestructura de VMware, conocido como vSphere, utiliza el sistema operativo ESX (Enhanced Scalability and Performance) para proporcionar un entorno de virtualización de alta eficiencia y rendimiento. ESX incluye un conjunto de comandos que pueden utilizarse para gestionar y configurar el sistema de red y el almacenamiento en red (SAN, por sus siglas en inglés).</p>
<h2>Comandos de red</h2>
<p>En primer lugar, veamos algunos de los comandos básicos de ESX para gestionar el sistema de red.</p>
<p>El comando anterior permite configurar direcciones IP, máscaras de subred y puertas de enlace para las interfaces de red del sistema ESX:</p>
<div class="bg-black mb-4 rounded-md">
<pre class="p-4 overflow-y-auto"><code class="!whitespace-pre-wrap hljs language-css">esxcli network ip interface ipv4 set -<span class="hljs-selector-tag">i</span> vmnic0 -<span class="hljs-selector-tag">I</span> <span class="hljs-number">192.168</span>.<span class="hljs-number">1.100</span> -N <span class="hljs-number">255.255</span>.<span class="hljs-number">255.0</span> -G <span class="hljs-number">192.168</span>.<span class="hljs-number">1.1</span>
</code></pre>
</div>
<p>Este comando permite crear y configurar «vswitches» (interruptores virtuales) en ESX. Un vSwitch es un componente lógico que permite conectar máquinas virtuales a una red física:</p>
<div class="bg-black mb-4 rounded-md">
<pre class="p-4 overflow-y-auto"><code class="!whitespace-pre-wrap hljs language-csharp">esxcli network vswitch standard <span class="hljs-keyword">add</span> -v vSwitch1
</code></pre>
</div>
<p>Una vez creado el vSwitch, podemos añadir interfaces de red a él utilizando este comando:</p>
<div class="bg-black mb-4 rounded-md">
<pre class="p-4 overflow-y-auto"><code class="!whitespace-pre-wrap hljs language-csharp">esxcli network vswitch standard uplink <span class="hljs-keyword">add</span> -u vmnic0 -v vSwitch1
</code></pre>
</div>
<p>Este comando permite configurar y gestionar el cortafuegos de ESX. Este comando habilita el firewall:</p>
<div class="bg-black mb-4 rounded-md">
<pre class="p-4 overflow-y-auto"><code class="!whitespace-pre-wrap hljs language-bash">esxcli network firewall <span class="hljs-built_in">set</span> --enabled <span class="hljs-literal">true</span>
</code></pre>
</div>
<p>Este comando permite ver el estado de las reglas del cortafuegos:</p>
<div class="bg-black mb-4 rounded-md">
<pre class="p-4 overflow-y-auto"><code class="!whitespace-pre-wrap hljs">esxcli network firewall ruleset list
</code></pre>
</div>
<p>Para añadir una regla al cortafuegos, podemos utilizar este comando:</p>
<div class="bg-black mb-4 rounded-md">
<pre class="p-4 overflow-y-auto"><code class="!whitespace-pre-wrap hljs language-csharp">esxcli network firewall ruleset rule <span class="hljs-keyword">add</span> -r sshServer -p TCP -o inbound -y allow</code></pre>
</div>
<h2>Comandos de SAN</h2>
<p>Ahora, pasemos a ver algunos de los comandos de ESX para gestionar el almacenamiento en red.</p>
<p>Este comando permite gestionar el mapeo de dispositivos de almacenamiento a host y permite ver el estado de los dispositivos de almacenamiento mapeados a un host:</p>
<div class="bg-black mb-4 rounded-md">
<pre class="p-4 overflow-y-auto"><code class="!whitespace-pre-wrap hljs">esxcli storage nmp device list
</code></pre>
</div>
<p>Este comando permite gestionar el almacenamiento en red conectado a un host ESX y permite ver el estado de los dispositivos de almacenamiento en red conectados a un host:</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-50 dark:bg-[#444654]">
<div class="text-base gap-4 md:gap-6 m-auto md:max-w-2xl lg:max-w-2xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0">
<div class="relative flex w-[calc(100%-50px)] md:flex-col lg:w-[calc(100%-115px)]">
<div class="flex flex-grow flex-col gap-3">
<div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">
<div class="markdown prose w-full break-words dark:prose-invert light">
<div class="bg-black mb-4 rounded-md">
<pre class="p-4 overflow-y-auto"><code class="!whitespace-pre-wrap hljs language-bash">esxcli storage san <span class="hljs-built_in">fc</span> list
</code></pre>
</div>
<p>El comando <code>esxcli storage vmfs</code> permite gestionar los volúmenes VMFS (Virtual Machine File System) en ESX y este comando permite ver el estado de los volúmenes VMFS en un host:</p>
<div class="bg-black mb-4 rounded-md">
<pre class="p-4 overflow-y-auto"><code class="!whitespace-pre-wrap hljs">esxcli storage vmfs extent list
</code></pre>
</div>
<h2>Otros comandos útiles de ESX para gestionar la red y el almacenamiento en red son los siguientes:</h2>
<p>Este comando permite configurar el nombre y la vSwitch de un grupo de puertos:</p>
</div>
<div class="bg-black mb-4 rounded-md">
<pre class="p-4 overflow-y-auto"><code class="!whitespace-pre-wrap hljs language-python">esxcli network vswitch standard portgroup <span class="hljs-built_in">set</span> -p <span class="hljs-string">"Management Network"</span> -v vSwitch0
</code></pre>
<p class="p-4 overflow-y-auto">Este comando permite configurar la política de seguridad de un grupo de puertos, permitiendo el modo promiscuo:</p>
</div>
<div class="bg-black mb-4 rounded-md">
<pre class="p-4 overflow-y-auto"><code class="!whitespace-pre-wrap hljs language-python">esxcli network vswitch standard portgroup policy security <span class="hljs-built_in">set</span> -p <span class="hljs-string">"Management Network"</span> -m promiscuous-mode -M accept</code></pre>
<div class="p-4 overflow-y-auto">Este comando permite configurar la política de VLAN de un grupo de puertos:</div>
<div></div>
</div>
<div class="bg-black mb-4 rounded-md">
<pre class="p-4 overflow-y-auto"><code class="!whitespace-pre-wrap hljs language-python">esxcli network vswitch standard portgroup policy vlan <span class="hljs-built_in">set</span> -p <span class="hljs-string">"Management Network"</span> -v <span class="hljs-number">4095</span>
</code></pre>
<div></div>
</div>
<p>Este comando permite añadir una regla de enrutamiento de dispositivos de almacenamiento para un SATP (Plataforma de Asignación de Almacenamiento):</p>
<div class="bg-black mb-4 rounded-md">
<pre class="p-4 overflow-y-auto"><code class="!whitespace-pre-wrap hljs language-csharp">esxcli storage nmp satp rule <span class="hljs-keyword">add</span> -s <span class="hljs-string">"VMW_SATP_ALUA"</span> -V <span class="hljs-string">"VMW_VAAI_NFS"</span> -M <span class="hljs-string">"VMW_NMP_ALUA_DSS"</span>
</code></pre>
<div>Este comando permite ver la lista de adaptadores de almacenamiento de un host ESX:</div>
</div>
<pre><span style="background-color: #f2f4f5; color: #222222; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: inherit; font-style: inherit; font-variant-ligatures: inherit; font-variant-caps: inherit; font-weight: inherit;">esxcli storage core adapter list</span></pre>
<div class="bg-black mb-4 rounded-md">
<div class="p-4 overflow-y-auto">Este comando permite ver la información de un dispositivo de almacenamiento específico en un host ESX:</div>
</div>
<div class="bg-black mb-4 rounded-md">
<pre class="p-4 overflow-y-auto"><code class="!whitespace-pre-wrap hljs">esxcli storage core device list -d naa.600601602ac0000000120000035000001</code></pre>
</div>
<p>ESX ofrece una gran cantidad de comandos útiles para la gestión y configuración del sistema de red y el almacenamiento en red. Estos comandos son esenciales para la administración y mantenimiento de entornos de virtualización de alta escala y proporcionan un control preciso y detallado sobre el funcionamiento de la red y el almacenamiento en un host ESX.</p>
</div>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<p>La entrada <a href="https://aprendeit.com/comandos-de-red-y-fc-para-esxi/">Comandos de red y FC para ESXi</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aprendeit.com/comandos-de-red-y-fc-para-esxi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Compilar e instalar qemu-kvm y libvirt</title>
		<link>https://aprendeit.com/compilar-qemu-kvm-y-libvirt/</link>
					<comments>https://aprendeit.com/compilar-qemu-kvm-y-libvirt/#respond</comments>
		
		<dc:creator><![CDATA[Gerardo G. Urtiaga]]></dc:creator>
		<pubDate>Sat, 05 Jun 2021 16:35:01 +0000</pubDate>
				<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Virtualización]]></category>
		<guid isPermaLink="false">https://aprendeit.com/?p=2090</guid>

					<description><![CDATA[<p>¡Hola de nuevo! En este artículo queremos mostrar como compilar e instalar qemu-kvm y libvirt en varias distribuciones linux para tener una virtualización totalmente funcional. En la instalación que ejecutaremos ...</p>
<p>La entrada <a href="https://aprendeit.com/compilar-qemu-kvm-y-libvirt/">Compilar e instalar qemu-kvm y libvirt</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>¡Hola de nuevo! En este artículo queremos mostrar como compilar e instalar qemu-kvm y libvirt en varias distribuciones linux para tener una virtualización totalmente funcional.</p>
<p>En la instalación que ejecutaremos todo se gestionará desde CLI por lo que es valido tanto para sistemas de escritorio como para servidores.</p>
<p>¡Empezamos!</p>
<h2>Compilar libvirt</h2>
<p>Empezamos compilando e instalando libvirt. Para ello tenemos que instalar distintas dependencias dependiendo del sistema. Mostraremos como hacerlo tanto en CentOS como en Ubuntu. Antes de empezar, el sistema tiene que estar actualizado lo máximo posible.</p>
<p>Ubuntu:</p>
<pre>apt install  ninja-build automake gcc  make zlib1g zlib1g-dev libpixman-1-0 libpixman-1-dev flex bison  numad libnuma-dev numactl  libtool gnutls-bin libghc-gnutls-dev libnl-genl-3-dev libxml2-dev  libtirpc-dev python3-docutils libdevmapper-dev libpciaccess-dev  rpcbind  libreadline-dev libyajl-dev libxslt-dev bzip2 meson libssh-4 libssh-dev libiscsi-bin libiscsi-dev xsltproc libcurl-ocaml libcurl-ocaml-dev fuse libfuse-dev libglusterfs-dev libgfapi0 libssh2-1 libssh2-1-dev libdevmapper-dev libparted-dev libxml2-utils pkg-config libglib2.0-dev

pip install -U meson==0.54.0

pip install ninja -U

groupadd --system libvirt
usermod -a -G libvirt $(whoami)
useradd -s /usr/bin/nologin libvirt-qemu
</pre>
<p>Centos7</p>
<pre>yum install -y automake gcc  make glibc glibc-utils glib2-devel zlib-devel pixman-devel flex bison  numad numactl-devel numactl-libs numactl  libtool gnutls-utils  gnutls-devel  libnl3-devel libxml2-devel  libtirpc-devel python3-docutils device-mapper-devel libpciaccess-devel  rpcbind  readline-devel rpcgen yajl-devel libxslt-devel bzip2 meson libssh libssh-devel libiscsi libiscsi-devel

pip3 install rst2html5

pip install -U meson==0.54.0

pip install ninja -U

systemctl stop libvirtd
</pre>
<p>Ahora compilamos libvirt:</p>
<pre>wget https://libvirt.org/sources/libvirt-6.9.0.tar.xz
tar xvfz libvirt-6.9.0.tar.xz 
xzcat libvirt-6.9.0.tar.xz | tar xv 
cd libvirt-6.9.0

meson build -D libssh2=enabled -D libssh=enabled -D glusterfs=enabled -D driver_qemu=enabled -D driver_vmware=enabled -D storage_mpath=enabled -D storage_lvm=enabled -D storage_iscsi=enabled -D storage_gluster=enabled -D storage_fs=enabled -D storage_disk=enabled -D driver_esx=enabled -D readline=enabled -D numad=enabled -D docs=disabled -D init_script=systemd -D system=true -D driver_qemu=enabled -D fuse=enabled -D prefix=/usr -D sharedstatedir=/var/lib -D localstatedir=/var -D curl=enabled -D sysctl_config=enabled

ninja -C build
sudo ninja -C build install

systemctl daemon-reload
systemctl start libvirtd-tcp.socket
systemctl enable libvirtd-tcp.socket
systemctl start libvirtd

</pre>
<p>Para poder hacer migraciones en caliente entre varios servidores de una forma rapida, configuraremos la migración sin autenticación.</p>
<pre>[root@hypervisor1 libvirt-6.9.0]# cat /etc/libvirt/libvirtd.conf | grep auth_tcp
#auth_tcp = "sasl"
auth_tcp = "none"
</pre>
<p>También es necesario configurar la variable <em>mech_list</em>:</p>
<pre>[root@hypervisor1 libvirt-6.9.0]# cat /etc/sasl2/libvirt.conf |grep -v "^#" |grep -v "^$"
mech_list: gssapi
[root@hypervisor1 libvirt-6.9.0]# 
</pre>
<p>Si reiniciamos libvirt-tcp.socket</p>
<pre>[root@hypervisor1 libvirt-6.9.0]# systemctl restart libvirtd-tcp.socket
[root@hypervisor1 libvirt-6.9.0]# ss -putan|grep 16509
tcp LISTEN 0 4096 *:16509 *:* users:(("systemd",pid=1,fd=42))     
</pre>
<h2>Qemu</h2>
<p>Ahora que ya tenemos instalado libvirt, vamos a compilar Qemu a prepararlo para funcionar con libvirt. Al igual que ocurre en la compilación de livirt, para la compilación e instalación debemos realizar unos pasos previos que son distintos dependiendo del sistema operativo:</p>
<p>CentOS</p>
<pre> yum install -y spice-server spice-protocol SDL2-devel spice-protocol-devel spice-server-devel libusb libusb-devel libusb libusb-devel  usbredir usbredir-devel libnfs libnfs-devel wget; 
</pre>
<p>Ubuntu</p>
<pre>apt install libcacard-dev libcacard0 pkg-config ninja-build libcurl-ocaml libcurl-ocaml-dev  libglib2.0-0 libglib2.0-dev libspice-server1 libspice-server-dev libusb-1.0-0 libusb-1.0-0-dev libusbredirhost1 libusbredirhost-dev libnfs-dev meson libpixman-1-0 libpixman-1-dev libsdl2-2.0-0 libsdl2-dev wget
</pre>
<p>Después debemos descargar el paquete de Qemu que vamos a compilar:</p>
<pre>wget https://download.qemu.org/qemu-5.2.0.tar.xz
tar xvJf qemu-5.2.0.tar.xz
cd qemu-5.2.0
</pre>
<p>Ya estando dentro del directorio vamos a compilar con el siguiente comando:</p>
<pre>./configure --prefix=/usr/local/qemu-kvm --enable-vhost-net --enable-kvm --enable-smartcard --enable-attr --enable-spice --enable-pie --enable-linux-user --enable-curl --enable-vnc --enable-sdl --enable-libusb --enable-usb-redir --enable-libnfs --enable-tools &amp;&amp; make -j 20 &amp;&amp; make install
</pre>
<p>Para finalizar tenemos que generar el enlace simbolico que hará que nuestro libvirt use la versión de qemu que acabamos de compilar e instalar:</p>
<pre>ln -sf /usr/local/qemu-kvm/bin/qemu-system-x86_64 /usr/libexec/qemu-kvm
</pre>
<p>Para finalizar, debemos crear un enlace</p>
<h2>Enlaces de interés</h2>
<p><a href="https://libvirt.org/sources/" target="_blank" rel="nofollow noopener">https://libvirt.org/sources/</a><br />
<a href="https://libvirt.org/compiling.html#compiling" target="_blank" rel="nofollow noopener">https://libvirt.org/compiling.html#compiling</a><br />
<a href="https://mesonbuild.com/Running-Meson.html" target="_blank" rel="nofollow noopener">https://mesonbuild.com/Running-Meson.html</a></p>
<p>La entrada <a href="https://aprendeit.com/compilar-qemu-kvm-y-libvirt/">Compilar e instalar qemu-kvm y libvirt</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aprendeit.com/compilar-qemu-kvm-y-libvirt/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>20 comandos de ESXCLI que te serán de utilidad</title>
		<link>https://aprendeit.com/20-comandos-de-esxcli-que-te-seran-de-utilidad/</link>
					<comments>https://aprendeit.com/20-comandos-de-esxcli-que-te-seran-de-utilidad/#respond</comments>
		
		<dc:creator><![CDATA[Gerardo G. Urtiaga]]></dc:creator>
		<pubDate>Mon, 18 Jan 2021 09:30:28 +0000</pubDate>
				<category><![CDATA[Curiosidades]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Virtualización]]></category>
		<guid isPermaLink="false">https://aprendeit.com/?p=2000</guid>

					<description><![CDATA[<p>En esta entrada te traemos 20 comandos de ESXCLI que te serán de utilidad. Si en tu día a día estás acostumbrado a usar la linea de comandos, es probable ...</p>
<p>La entrada <a href="https://aprendeit.com/20-comandos-de-esxcli-que-te-seran-de-utilidad/">20 comandos de ESXCLI que te serán de utilidad</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>En esta entrada te traemos 20 comandos de ESXCLI que te serán de utilidad. Si en tu día a día estás acostumbrado a usar la linea de comandos, es probable que conozcas algunos comandos esxcli. Es posible que ya sepas como utilizarlo para administrar y configurar ESXi. Pero aún así te recomendamos revisar los comando que ponemos a continuación ya que es posible que no conozcas alguno. Por otro lado, si esto es nuevo para ti, saberte los comandos para ESXi o tener una guia de referencia te dara una gran ayuda en la administración de tus maquinas.</p>
<h2>ESXi Shell</h2>
<p>Lo primero que debemos hacer es habilitar la shell de ESXi, normalmente está deshabilitada por defecto por seguridad. Para hacerlo tienes que seguir los pasos que el fabricante especifica en este enlace <a href="https://kb.vmware.com/s/article/2004746" target="_blank" rel="noopener">https://kb.vmware.com/s/article/2004746</a></p>
<p>Una vez habilitada la shell podras conectarte mediante SSH con el usuario root o cualquier otro con privilegios similares. Otra forma de acceder es desde la pantalla de la consola de la maquin ESXi (La pantalla amarilla y gris) presionando ALT+F1.</p>
<h2>Utilizando ESXCLI</h2>
<p>Cuando accedemos a la shell de ESXi uno de las herramientas que mas nos pueden ayudar es esxcli.<br />
Esta herramienta viene preinstalada en los sistemas ESXi. Tiene una serie de <em>namespaces</em> dependiendo de para que queramos utilizarla. A continuación los namespaces disponibles en ESXi 6.5, si se quieren ver todos los namespaces disponibles solo hay que ejecutar <em>esxcli</em> sin parámetros:</p>
<ul>
<li><strong><em>esxcli device:</em></strong> Nos devuelve las opciones de este comando para dispositivos.</li>
<li><strong><em>esxcli elxnet:</em></strong> Lista las opciones de este comando para el administrar los drivers Emulex elxnet.</li>
<li><strong><em>esxcli esxcli:</em></strong> Facilita el listado de opciones del comando <em>esxcli</em>.</li>
<li><strong><em>esxcli fcoe:</em></strong> Comandos para administrar FCOE (Fibre Channel Over Ethernet).</li>
<li><strong><em>esxcli graphics:</em></strong> Comandos para graficos</li>
<li><strong><em>esxcli hardware:</em></strong> Se usa principalmente para ver la información de hardware.</li>
<li><strong><em>esxcli iscsi:</em></strong> Comandos para administrar y monitorizar iSCSI.</li>
<li><strong><em>esxcli network:</em></strong> Comandos para administrar la red (incluyendo vSwitches y vmKernel).</li>
<li><strong><em>esxcli nvme:</em></strong> Administración de NVME.</li>
<li><strong><em>esxcli rdma:</em></strong> Comandos para monitorizar RDMA.</li>
<li><strong><em>esxcli sched:</em></strong> Administra los espacios de intercambio del sistema.</li>
<li><strong><em>esxcli software:</em></strong> Namespace de Software. Administra e instala software en el sistema.</li>
<li><strong><em>esxcli storage:</em></strong> Comandos para administrar el almacenamiento.</li>
<li><strong><em>esxcli system:</em></strong> Comandos para administrar y monitorizar el sistema.</li>
<li><strong><em>esxcli vm:</em></strong> Comandos para listar y administrar maquinas virtuales.</li>
<li><strong><em>esxcli vsan:</em></strong> Administración de vSAN.</li>
</ul>
<h2>Los 20 comandos de ESXCLI prometidos</h2>
<h3>Comandos para el sistema</h3>
<p><em><strong>esxcli system version get</strong></em><br />
Devuelve la version de ESXi</p>
<p><em><strong>esxcli system hostname get</strong></em><br />
Devuelve el hostname y el FQDN del host.</p>
<p><strong><em>esxcli system stats installtime get</em></strong><br />
Devuelve la fecha de instalación de ESXi.</p>
<p><em><strong>esxcli system account list</strong></em><br />
Lista los usuarios locales.</p>
<p><em><strong>esxcli system account add -d=»Mi User» -i=»user1&#8243; -p=»MiPas$.word45&#8243; -c=»MiPas$.word45″</strong></em><br />
Crea un usuario llamado user1 con contraseña <em>MiPas$.word45</em></p>
<p><em><strong>esxcli system maintenanceMode set &#8211;enable true</strong></em><br />
Habilita el modo mantenimiento en el host.</p>
<p><em><strong>esxcli system shutdown reboot -d 10 -r «Razon del reinicio»</strong></em><br />
Reinicia el sistema en 10 segundos. El sistema debe haberse puesto primero en modo mantenimiento</p>
<h3>Comandos para la red</h3>
<p><em><strong>esxcli network firewall get</strong></em><br />
Devuelve el estado del firewall. La accion por defecto el bloquear trafico que no esté permitido por una regla especifica.</p>
<p><em><strong>esxcli network firewall set &#8211;enabled true | false</strong></em><br />
Este comando habilita o deshabilita el firewall.</p>
<p><em><strong>esxcli network firewall ruleset list | awk ‘$2 ==»true»‘</strong></em><br />
Devuelve una lista de reglas habilitadas.</p>
<p><em><strong>esxcli network ip interface ipv4 get</strong></em><br />
Nos da la configuración IPV4 de todas las interfaces de este nodo.</p>
<h3>Comandos para software</h3>
<p><em><strong>esxcli software vib list</strong></em><br />
Lista VIBs instalados. Un VIB es un formato de paquete para distribuir software en ESXi.</p>
<p><em><strong>esxcli software vib update -d «/tmp/paquete.zip»</strong></em><br />
Este comando actualiza un software ya instalado en el sistema.</p>
<p><em><strong>esxcli software vib install /tmp/paquete.zip</strong></em><br />
Instala software nuevo en el sistema.</p>
<h3>Comandos para maquinas virtuales</h3>
<p><em><strong>esxcli vm process list</strong></em><br />
Lista las maquinas virtuales que están corriendo en el sistema. El ID se puede usar para realizar tareas sobre una maquina virtual en concreto.</p>
<p><em><strong>esxcli vm process kill -w ID_DE_LA_MAQUINA -t soft</strong></em><br />
Mata una maquina con el ID optenido en el comando anterior. Para forzar esta operación hay que modificar el parametro <em>-t </em>por <em>hard</em> y ejecutará un <em>kill -9 </em>a esa maquina.</p>
<h3>Comandos para almacenamiento</h3>
<p><em><strong>esxcli storage vmfs extent list</strong></em><br />
Facilita un listado de cada volumen con su mapping.</p>
<p><em><strong>esxcli storage filesystem list</strong></em><br />
Devuelve un listado de volumenes o datastores accesibles por el host. En el listado vendrá el nombre, el tipo de sistema de ficheros, el path y el UUID.</p>
<h3>Comandos para iSCSI</h3>
<p><em><strong>esxcli iscsi software set &#8211;enabled true &amp;&amp; esxcli iscsi software get</strong></em><br />
Son dos comandos concatenados, el primero habilita el adaptador iSCSI y el segundo verifica su estado.</p>
<p><em><strong>esxcli iscsi adapter param get -A vmhba65</strong></em><br />
Este comando devuelve métricas de un adaptador especifico, en este caso vmhba65</p>
<p>&nbsp;</p>
<p>La entrada <a href="https://aprendeit.com/20-comandos-de-esxcli-que-te-seran-de-utilidad/">20 comandos de ESXCLI que te serán de utilidad</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aprendeit.com/20-comandos-de-esxcli-que-te-seran-de-utilidad/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo crear un contenedor que soporte systemd con docker</title>
		<link>https://aprendeit.com/como-crear-un-contenedor-que-soporte-systemd-con-docker/</link>
					<comments>https://aprendeit.com/como-crear-un-contenedor-que-soporte-systemd-con-docker/#respond</comments>
		
		<dc:creator><![CDATA[Gerardo G. Urtiaga]]></dc:creator>
		<pubDate>Sat, 25 Jul 2020 19:02:20 +0000</pubDate>
				<category><![CDATA[Basico-Linux]]></category>
		<category><![CDATA[Desarrollo / programacion]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Virtualización]]></category>
		<guid isPermaLink="false">https://aprendeit.com/?p=1876</guid>

					<description><![CDATA[<p>En este artículo explicaremos cómo crear un contenedor que soporte systemd con docker ya que es un tema bastante curioso. Lo primero, ¿Qué es systemd? Como dice en su web ...</p>
<p>La entrada <a href="https://aprendeit.com/como-crear-un-contenedor-que-soporte-systemd-con-docker/">Cómo crear un contenedor que soporte systemd con docker</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>En este artículo explicaremos cómo crear un contenedor que soporte systemd con docker ya que es un tema bastante curioso.</p>
<h2>Lo primero, ¿Qué es <em>systemd</em>?</h2>
<p>Como dice en su web oficial:<br />
systemd es un conjunto de bloques de construcción básicos para un sistema Linux. Proporciona un administrador de sistemas y servicios que se ejecuta como PID 1 e inicia el resto del sistema.</p>
<p><a href="https://aprendeit.com/crear-un-servicio-en-linux-en-systemd/" target="_blank" rel="noopener noreferrer">Puedes ver como crear un servicio en systemd pinchando aquí</a></p>
<h2>¿Está bien usar systemd en un contenedor docker?</h2>
<p>Siempre que se utilice en un entorno local o de desarrollo no hay ningún problema, pero no es algo que yo recomiende para un servidor de producción siempre y cuando existan otras alternativas.</p>
<h2>¿Por qué usar un contenedor docker que use systemd?</h2>
<p>En ocasiones necesitamos hacer pruebas con una aplicación que utiliza systemd en vez de sysvinit, si queremos hacer las pruebas en un entorno basado en docker por defecto no podemos ya que requiere que que es sistema donde se ejecuta sea capaz de instalar servicios de systemd.</p>
<p>También nos puede venir bien de cara a simular un sistema mas completo pero sin consumir tantos recursos como una virtualización.</p>
<h2>Creand el contenedor con systemd incluido</h2>
<p>En un contenedor con una imagen de CentOS no es necesario crear el dockerfile para crear una imagen con systemd incluido ya que por defecto viene incluido en la imagen y solo debemos levantarlo con la sentencia <em>docker run</em> que enseñaremos mas tarde.</p>
<p>Para ubuntu crearemos el siguiente dockerfile para incluir soporte de systemd, crearemos un fichero llamado <em>«ubuntu-systemd-dockerfile»</em>:</p>
<pre>FROM ubuntu:latest

#BASE INSTALL 


RUN export DEBIAN_FRONTEND=noninteractive;ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime;apt-get update &amp;&amp; apt-get install tzdata &amp;&amp; apt-get install -y vim autotools-dev dosfstools libmailtools-perl kmod net-tools apt-utils bind9utils binutils bsdmainutils bsdutils coreutils debianutils diffutils dnsutils docutils-common docutils-doc findutils iputils-ping iputils-tracepath klibc-utils libkeyutils1:amd64 libpaper-utils sensible-utils sysvinit-utils xz-utils systemd systemd-sysv 

RUN ln -f /usr/bin/systemd /sbin/init 

## for apt to be noninteractive 
ENV DEBIAN_FRONTEND noninteractive 
ENV DEBCONF_NONINTERACTIVE_SEEN true 
STOPSIGNAL SIGRTMIN+3 
CMD [ "/sbin/init" ]
</pre>
<p>Para crear la imagen <em>ubuntu:systemd</em> tenemos que ejecutar la siguiente sentencia desde el mismo directorio donde tenemos el fichero Dockerfile con nombre ubuntu-systemd-dockerfile que hemos creado:</p>
<pre>docker build -f Dockerfile -t "ubuntu:systemd" .
</pre>
<p>Lo haremos como se puede ver en:</p>
<pre>root@ger:/tmp# mkdir ubuntu-systemd
root@ger:/tmp# cd ubuntu-systemd/
root@ger:/tmp/ubuntu-systemd# vi ubuntu-systemd-dockerfile 
root@ger:/tmp/ubuntu-systemd# docker build -f ubuntu-systemd-dockerfile -t "ubuntu:systemd" .
Sending build context to Docker daemon   2.56kB
Step 1/7 : FROM ubuntu:latest
 ---&gt; 1e4467b07108
Step 2/7 : RUN export DEBIAN_FRONTEND=noninteractive;ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime;apt-get update &amp;&amp; apt-get install tzdata &amp;&amp; apt-get install -y vim autotools-dev dosfstools libmailtools-perl kmod net-tools apt-utils bind9utils binutils bsdmainutils bsdutils coreutils debianutils diffutils dnsutils docutils-common docutils-doc findutils iputils-ping iputils-tracepath klibc-utils libkeyutils1:amd64 libpaper-utils sensible-utils sysvinit-utils xz-utils systemd systemd-sysv
 ---&gt; Using cache
 ---&gt; 27e6132e5c37
Step 3/7 : RUN ln -f /usr/bin/systemd /sbin/init
 ---&gt; Using cache
 ---&gt; 0e1242818129
Step 4/7 : ENV DEBIAN_FRONTEND noninteractive
 ---&gt; Using cache
 ---&gt; ad16907c6036
Step 5/7 : ENV DEBCONF_NONINTERACTIVE_SEEN true
 ---&gt; Using cache
 ---&gt; 6c27cc829879
Step 6/7 : STOPSIGNAL SIGRTMIN+3
 ---&gt; Using cache
 ---&gt; 2fc7405c18d1
Step 7/7 : CMD [ "/sbin/init" ]
 ---&gt; Using cache
 ---&gt; 5ba555ffd849
Successfully built 5ba555ffd849
Successfully tagged ubuntu:systemd
root@ger:/tmp/ubuntu-systemd# 
</pre>
<p>Una vez creada la imagen <em>ubuntu:systemd</em> podemos ejecutar la siguiente sentencia para crear el contenedor:</p>
<pre>docker run -it -d --tmpfs=/run --tmpfs=/run/lock -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name mitest --hostname mitest ubuntu:systemd /sbin/init
</pre>
<p>Este es un ejemplo de la ejecución anterior:</p>
<pre>root@ger:/tmp/ubuntu-systemd# docker run -it -d --tmpfs=/run --tmpfs=/run/lock -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name mitest --hostname mitest centos /sbin/init
243f2021ec3921aad4f34bc05eac034d91143f4ad2a3bc61fc47ad136370c3be
root@ger:/tmp/ubuntu-systemd# docker exec -it mitest su -
[root@mitest ~]# systemctl |more      
  UNIT                                   LOAD   ACTIVE SUB       DESCRIPTION
  -.mount                                loaded active mounted   /
  dev-mqueue.mount                       loaded active mounted   POSIX Message Queue File System
  etc-hostname.mount                     loaded active mounted   /etc/hostname
  etc-hosts.mount                        loaded active mounted   /etc/hosts
  etc-resolv.conf.mount                  loaded active mounted   /etc/resolv.conf
  proc-acpi.mount                        loaded active mounted   /proc/acpi
  proc-asound.mount                      loaded active mounted   /proc/asound
  proc-bus.mount                         loaded active mounted   /proc/bus
  proc-fs.mount                          loaded active mounted   /proc/fs
  proc-irq.mount                         loaded active mounted   /proc/irq
  proc-kcore.mount                       loaded active mounted   /proc/kcore
  proc-keys.mount                        loaded active mounted   /proc/keys
  proc-sched_debug.mount                 loaded active mounted   /proc/sched_debug
  proc-scsi.mount                        loaded active mounted   /proc/scsi
  proc-sysrq\x2dtrigger.mount            loaded active mounted   /proc/sysrq-trigger
  proc-timer_list.mount                  loaded active mounted   /proc/timer_list
  run-lock.mount                         loaded active mounted   /run/lock
  sys-firmware.mount                     loaded active mounted   /sys/firmware
● sys-fs-fuse-connections.mount          loaded failed failed    FUSE Control File System
  systemd-ask-password-console.path      loaded active waiting   Dispatch Password Requests to Console Directory Watch
  systemd-ask-password-wall.path         loaded active waiting   Forward Password Requests to Wall Directory Watch
  session-c1.scope                       loaded active running   Session c1 of user root
  dbus.service                           loaded active running   D-Bus System Message Bus
  systemd-hwdb-update.service            loaded active exited    Rebuild Hardware Database
  systemd-journal-catalog-update.service loaded active exited    Rebuild Journal Catalog
  systemd-journal-flush.service          loaded active exited    Flush Journal to Persistent Storage
  systemd-journald.service               loaded active running   Journal Service
  systemd-logind.service                 loaded active running   Login Service
  systemd-random-seed.service            loaded active exited    Load/Save Random Seed
  systemd-readahead-collect.service      loaded active exited    Collect Read-Ahead Data
  systemd-tmpfiles-setup.service         loaded active exited    Create Volatile Files and Directories
  systemd-update-done.service            loaded active exited    Update is Completed
  systemd-update-utmp.service            loaded active exited    Update UTMP about System Boot/Shutdown
  systemd-user-sessions.service          loaded active exited    Permit User Sessions
  -.slice                                loaded active active    Root Slice
  system-getty.slice                     loaded active active    system-getty.slice
  system.slice                           loaded active active    System Slice
  user-0.slice                           loaded active active    User Slice of root
[root@mitest ~]# 

</pre>
<h2>Crear un contenedor basado en CentOS con soporte para systemd</h2>
<p>Como decíamos antes, si necesitamos crear un contenedor basado en CentOS o en otra imagen que ya incluya soporte para systemd no es necesario hacer el proceso anterior, solo debemos ejecutar:</p>
<pre>docker run -it -d --tmpfs=/run --tmpfs=/run/lock -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name mitest --hostname mitest centos /sbin/init
</pre>
<p>Como se puede ver a continuación:</p>
<pre>root@ger:/tmp/ubuntu-systemd# docker run -it -d --tmpfs=/run --tmpfs=/run/lock -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name mitest2 --hostname mitest2 centos /sbin/init
00ebdd7192062fe15b54b9a6ae7ed5eae979b1560a3dd82127f8fe9dc30afa43
root@ger:/tmp/ubuntu-systemd# docker exec -it mitest2 su -
[root@mitest2 ~]# systemctl|more
  UNIT                                   LOAD   ACTIVE SUB       DESCRIPTION
  -.mount                                loaded active mounted   /
  dev-mqueue.mount                       loaded active mounted   POSIX Message Queue File System
  etc-hostname.mount                     loaded active mounted   /etc/hostname
  etc-hosts.mount                        loaded active mounted   /etc/hosts
  etc-resolv.conf.mount                  loaded active mounted   /etc/resolv.conf
  proc-acpi.mount                        loaded active mounted   /proc/acpi
  proc-asound.mount                      loaded active mounted   /proc/asound
  proc-bus.mount                         loaded active mounted   /proc/bus
  proc-fs.mount                          loaded active mounted   /proc/fs
</pre>
<p>Se pueden ver mas parámetros interesantes en la documentación oficial de docker <a href="https://docs.docker.com/engine/reference/run/" target="_blank" rel="noopener noreferrer">pinchando aquí</a></p>
<h4 style="text-align: center;" align="left"><a href="https://aprendeit.com/producto/docker-para-novatos/">Si estás interesado en aprender Docker puedes puedes adquirir nuestro libro aquí.</a></h4>
<h3 style="text-align: center;"><a href="https://aprendeit.com/producto/docker-para-novatos/">Docker para novatos</a></h3>
<p><a href="https://aprendeit.com/producto/docker-para-novatos/"><img fetchpriority="high" decoding="async" class="wp-image-1834 size-medium aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/05/Docker-para-novatos-Gerardo-G.-Urtiaga-portada-web-2-300x300.jpg" alt="Docker para novatos - Gerardo G. Urtiaga-portada-web" width="300" height="300" srcset="https://aprendeit.com/wp-content/uploads/2020/05/Docker-para-novatos-Gerardo-G.-Urtiaga-portada-web-2-300x300.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/05/Docker-para-novatos-Gerardo-G.-Urtiaga-portada-web-2-150x150.jpg 150w, https://aprendeit.com/wp-content/uploads/2020/05/Docker-para-novatos-Gerardo-G.-Urtiaga-portada-web-2-100x100.jpg 100w, https://aprendeit.com/wp-content/uploads/2020/05/Docker-para-novatos-Gerardo-G.-Urtiaga-portada-web-2.jpg 600w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>La entrada <a href="https://aprendeit.com/como-crear-un-contenedor-que-soporte-systemd-con-docker/">Cómo crear un contenedor que soporte systemd con docker</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aprendeit.com/como-crear-un-contenedor-que-soporte-systemd-con-docker/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo aprovechar tu Windows abandonado en una partición con QEMU</title>
		<link>https://aprendeit.com/como-aprovechar-tu-windows-abandonado-en-una-particion-con-qemu/</link>
					<comments>https://aprendeit.com/como-aprovechar-tu-windows-abandonado-en-una-particion-con-qemu/#comments</comments>
		
		<dc:creator><![CDATA[David Cruz Langreo]]></dc:creator>
		<pubDate>Wed, 15 Apr 2020 12:04:35 +0000</pubDate>
				<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Virtualización]]></category>
		<guid isPermaLink="false">https://aprendeit.com/?p=1643</guid>

					<description><![CDATA[<p>¡Hola! Hoy hablaremos de virtualización, más exactamente de como aprovechar tu Windows abandonado en una partición con QEMU. Muchos de nosotros tenemos una instalación de Windows medio abandonada en una ...</p>
<p>La entrada <a href="https://aprendeit.com/como-aprovechar-tu-windows-abandonado-en-una-particion-con-qemu/">Cómo aprovechar tu Windows abandonado en una partición con QEMU</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>¡Hola! Hoy hablaremos de virtualización, más exactamente de como aprovechar tu Windows abandonado en una partición con QEMU. Muchos de nosotros tenemos una instalación de Windows medio abandonada en una partición tras hacer la transición a Linux como nuestro sistema operativo de uso diario. Normalmente se utiliza cuando vamos a jugar a algún juego o cuando necesitas compatibilidad completa con un documento de Word. Normalmente se queda medio abandonada y cada vez que la arrancas se tarda un buen rato en instalar actualizaciones y poder tenerla disponible de nuevo al 100%.</p>
<p>Voy a explicar cómo darle uso desde Linux sin reiniciar, utilizando QEMU + Virt Manager, con algunas optimizaciones para que vaya maś rápido y sin perder la licencia de Windows.</p>
<p>En mi caso, tengo Windows instalado en /dev/sda, adapta la ruta de estos ejemplos porque lo que vamos a hacer es arrancar un emulador (QEMU) directamente sobre esa partición. Mi tabla de particiones de ese disco sda (un disco SSD en realidad) es la siguiente:</p>
<p><img decoding="async" class="wp-image-1652 size-full aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/04/fdisk-l.jpg" alt="fdisk-l" width="618" height="231" srcset="https://aprendeit.com/wp-content/uploads/2020/04/fdisk-l.jpg 618w, https://aprendeit.com/wp-content/uploads/2020/04/fdisk-l-300x112.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/04/fdisk-l-100x37.jpg 100w" sizes="(max-width: 618px) 100vw, 618px" /></p>
<p>Es sencillo arrancar una máquina virtual con QEMU utilizando “sda” como disco. Lo difícil es optimizar para que no se pierda mucho rendimiento respecto a un arranque normal.</p>
<p>Necesitaréis los paquetes de vuestra distribución de qemu-kvm, libvirtd, y virt-manager, aunque este último es casi mejor instalarlo bajando el git y ejecutando “python3 setup.py install” como root.</p>
<pre>git clone https://github.com/virt-manager/virt-manager.git
</pre>
<p>Lo primero es dar permisos a Libvirt para que pueda acceder al disco. Hay una manera muy fácil de hacerlo que es arrancar el servicio Libvirt con un SUID. Esto se hace editando el fichero /etc/libvirt/qemu.conf y modificando la configuración con “user = +0”, como muestro en la siguiente captura. Luego tan solo hay que reiniciar libvirtd utilizando “systemctl restart libvirtd” o “systemctl restart libvirt-daemon”, dependiendo de vuestra distribución de Linux.</p>
<p><img decoding="async" class="wp-image-1653 size-full aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/04/u0.jpg" alt="u+0" width="560" height="142" srcset="https://aprendeit.com/wp-content/uploads/2020/04/u0.jpg 560w, https://aprendeit.com/wp-content/uploads/2020/04/u0-300x76.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/04/u0-100x25.jpg 100w" sizes="(max-width: 560px) 100vw, 560px" /></p>
<p>Ahora hay que ir a Windows, para obtener un dato necesario para no perder la licencia. De manera que reinicia, y, abriendo una consola de comandos como administrador, vamos a buscar el UUID real de esa instalación utilizando el comando:</p>
<pre>wmic csproduct get uuid
</pre>
<p><img loading="lazy" decoding="async" class="wp-image-1654 size-full aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/04/cmd.jpg" alt="cmd" width="488" height="150" srcset="https://aprendeit.com/wp-content/uploads/2020/04/cmd.jpg 488w, https://aprendeit.com/wp-content/uploads/2020/04/cmd-300x92.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/04/cmd-100x31.jpg 100w" sizes="(max-width: 488px) 100vw, 488px" /></p>
<p>En este punto puedes aprovechar e instalar los drivers que van a hacer falta luego. QEMU “simula” tarjetas de red, gráficas y tiene drivers pensados para optimizar la velocidad de acceso a disco que tienen un gran impacto luego en el rendimiento.</p>
<p>La ISO con los drivers se puede conseguir en:</p>
<p><a href="https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.173-9/">https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.173-9/</a></p>
<p>La última versión siempre estará disponible en:</p>
<p><a href="https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/">https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/</a></p>
<p>Dentro viene un instalador para poder instalar la mayor parte de los drivers de una vez.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1655 aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/04/virtio.jpg" alt="virtio" width="600" height="452" srcset="https://aprendeit.com/wp-content/uploads/2020/04/virtio.jpg 600w, https://aprendeit.com/wp-content/uploads/2020/04/virtio-300x226.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/04/virtio-100x75.jpg 100w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p>Aunque lo mejor a veces es ir carpeta por carpeta (amd64 será la arquitectura de tu PC salvo extrañas excepciones) y, pulsando con el botón derecho del ratón, seleccionar “Install”.</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-1656 aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/04/opsu.jpg" alt="" width="794" height="290" srcset="https://aprendeit.com/wp-content/uploads/2020/04/opsu.jpg 794w, https://aprendeit.com/wp-content/uploads/2020/04/opsu-300x110.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/04/opsu-768x281.jpg 768w, https://aprendeit.com/wp-content/uploads/2020/04/opsu-100x37.jpg 100w" sizes="(max-width: 794px) 100vw, 794px" /></p>
<p>Ahora, ya con el UUID para no perder la licencia y los drivers instalados, vamos de vuelta a Linux.</p>
<p>En mi PC tengo dos GPUS (Tarjetas gráficas). Una de marca NVidia que tengo colocada en un PCI y otra que viene integrada en placa base. Hay que decidir cual usamos en Linux y cual en nuestros Windows simulado. No es 100% obligatorio porque QEMU os mostrará la salida por pantalla como una ventana más dentro de Linux, usad esto si se quiere tener la salida por un monitor específico directamente de la tarjeta secundaria.</p>
<p>Los pasos para habilitar ambas tarjetas a la vez no son sencillos. Lo voy a explicar de manera breve porque depende completamente de tu distribución de Linux y de tu modelo de placa base y tarjetas gráficas. Lo primero de todo es ir a la BIOS y habilitar que ambas tarjetas puedan funcionar a la vez. Esta opción depende de la BIOS de tu placa base.</p>
<p>En Linux, recomiendo utilizar un módulo llamado VFIO. Hay muchos tutoriales que explican cómo hacerlo. Si tan solo queréis usar la tarjeta gráfica que viene emulada en QEMU, no hace falta seguir estos pasos, que consisten en configurar el ID PCI de la tarjeta gráfica secundaria en VFIO y luego evitar que Linux cargue el módulo para controlarla, dejándola libre para que QEMU la pueda usar.</p>
<p>Al final, como en mi caso, ambas tarjetas os tienen que aparecer disponibles en el comando PCI. En la siguiente captura podemos ver mi tarjeta NVidia y la Intel que viene con mi placa base.</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-1657 aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/04/lspci.jpg" alt="lspci" width="730" height="76" srcset="https://aprendeit.com/wp-content/uploads/2020/04/lspci.jpg 730w, https://aprendeit.com/wp-content/uploads/2020/04/lspci-300x31.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/04/lspci-100x10.jpg 100w" sizes="(max-width: 730px) 100vw, 730px" /></p>
<p>En mi caso, el módulo que controla la tarjeta gráfica Intel en Linux es el “i915”. Para deshabilitar este módulo creo un fichero vfio.conf en /etc/modprobe.d.</p>
<p>options vfio-pci ids=8086:3e98<br />
blacklist i915</p>
<p>Una vez ya has terminado con las tarjetas, puedes arrancar el gestor de máquinas virtuales “virt-manager”. Al pulsar sobre el botón de “Crear nueva máquina virtual”, aparecerá un asistente. La opción que buscamos es la última “Import Existing Disk Image”, o “Importar disco existente”.</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-1658 aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/04/new-vm.jpg" alt="new vm" width="502" height="536" srcset="https://aprendeit.com/wp-content/uploads/2020/04/new-vm.jpg 502w, https://aprendeit.com/wp-content/uploads/2020/04/new-vm-300x320.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/04/new-vm-281x300.jpg 281w, https://aprendeit.com/wp-content/uploads/2020/04/new-vm-94x100.jpg 94w" sizes="(max-width: 502px) 100vw, 502px" /></p>
<p>Ahora, seleccionamos “/dev/sda” o el disco en donde tengamos la instalación de Windows. En la selección de sistema operativo seleccionamos Windows 10, porque esto habilita ciertas optimizaciones desde el inicio.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1659 aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/04/new-vm-2.jpg" alt="new vm" width="507" height="523" srcset="https://aprendeit.com/wp-content/uploads/2020/04/new-vm-2.jpg 507w, https://aprendeit.com/wp-content/uploads/2020/04/new-vm-2-300x309.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/04/new-vm-2-291x300.jpg 291w, https://aprendeit.com/wp-content/uploads/2020/04/new-vm-2-97x100.jpg 97w" sizes="(max-width: 507px) 100vw, 507px" /></p>
<p>En el siguiente paso seleccionamos el número de cores y memoria. Mi PC tiene 32 GB de RAM y 8 cores, pero habilito 8 GB de RAM y 4 cores para la máquina virtual. Esto no significa que los vaya a tener siempre en uso. Los compartirá con tu sistema operativo Linux.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1660" src="https://aprendeit.com/wp-content/uploads/2020/04/set-mem.jpg" alt="set mem" width="302" height="221" srcset="https://aprendeit.com/wp-content/uploads/2020/04/set-mem.jpg 302w, https://aprendeit.com/wp-content/uploads/2020/04/set-mem-300x221.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/04/set-mem-100x73.jpg 100w" sizes="(max-width: 302px) 100vw, 302px" /></p>
<p>En el paso final, marcamos “Customize installation before install” o “Personalizar instalación antes de instalar”. No os asustéis, que no vamos a “instalar” nada, se refiere enteramente a crear la máquina virtual.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1661 aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/04/finish.jpg" alt="finish" width="504" height="515" srcset="https://aprendeit.com/wp-content/uploads/2020/04/finish.jpg 504w, https://aprendeit.com/wp-content/uploads/2020/04/finish-300x307.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/04/finish-294x300.jpg 294w, https://aprendeit.com/wp-content/uploads/2020/04/finish-98x100.jpg 98w" sizes="(max-width: 504px) 100vw, 504px" /></p>
<p>En el siguiente paso, previo a arrancar la máquina virtual, selecciono mi tarjeta secundaria Intel en la lista de “Add Hardware” (Añadir Hardware), en la sección de “PCI Host Device”, y buscando en la lista mi tarjeta Intel.</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-1662 aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/04/pci-dev.jpg" alt="" width="710" height="578" srcset="https://aprendeit.com/wp-content/uploads/2020/04/pci-dev.jpg 710w, https://aprendeit.com/wp-content/uploads/2020/04/pci-dev-300x244.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/04/pci-dev-100x81.jpg 100w" sizes="(max-width: 710px) 100vw, 710px" /></p>
<p>Los discos inicialmente estarán en modo SATA. No es para nada el más rápido, pero antes de que Windows pueda reconocer los discos en modo Virtio, que es el más rápido, hay que usar un truco.</p>
<p>Añade un segundo disco duro, esta vez en modo Virtio, en esta misma ventana, en la secció de Storage. Modifica también las opciones de arranque en “Boot Options” para que arranque del disco real donde está Windows.</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-1663 aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/04/add-new-hard.jpg" alt="add-new-hhw" width="714" height="377" srcset="https://aprendeit.com/wp-content/uploads/2020/04/add-new-hard.jpg 714w, https://aprendeit.com/wp-content/uploads/2020/04/add-new-hard-300x158.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/04/add-new-hard-100x53.jpg 100w" sizes="(max-width: 714px) 100vw, 714px" /></p>
<p>Y ahora, ya le puedes dar al botón de Play para arrancar tu máquina virtual.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1664 aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/04/windows.jpg" alt="windows" width="803" height="659" srcset="https://aprendeit.com/wp-content/uploads/2020/04/windows.jpg 803w, https://aprendeit.com/wp-content/uploads/2020/04/windows-300x246.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/04/windows-768x630.jpg 768w, https://aprendeit.com/wp-content/uploads/2020/04/windows-100x82.jpg 100w" sizes="(max-width: 803px) 100vw, 803px" /></p>
<p>El primer arranque va a tardar un rato, porque tiene que configurar todas los dispositivos nuevos que se encuentra al arrancar con QEMU. No os preocupéis, que luego podréis arrancar en modo normal Windows como siempre, e igual de rápido.</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-1665 aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/04/dash.jpg" alt="dashboard 1 y 2" width="305" height="76" srcset="https://aprendeit.com/wp-content/uploads/2020/04/dash.jpg 305w, https://aprendeit.com/wp-content/uploads/2020/04/dash-300x76.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/04/dash-100x25.jpg 100w" sizes="(max-width: 305px) 100vw, 305px" /></p>
<p><img loading="lazy" decoding="async" class="wp-image-1666 size-full aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/04/dash2.jpg" alt="dashboard2" width="498" height="471" srcset="https://aprendeit.com/wp-content/uploads/2020/04/dash2.jpg 498w, https://aprendeit.com/wp-content/uploads/2020/04/dash2-300x284.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/04/dash2-100x95.jpg 100w" sizes="(max-width: 498px) 100vw, 498px" /></p>
<p>Tras el primer arranque, si habéis usado el truco de colocar un disco secundario en modo Virtio, es posible modificar el disco raíz a VirtIO también, haciendo que vaya más rápido. Esto se hace en las propiedades del disco en Virt-Manager.</p>
<p>También habrá que modificar el “IO Mode” a “hypervisor default”.</p>
<p>En estos experimentos siempre dejo el modo de caché a “writeback”, porque hace que vayan mucho más rápidas las escrituras.</p>
<p>También es posible modificar el tipo de tarjeta de red a Virtio. Esto se nota cuando se transfieren grandes archivos, y es el modo recomendado para simular máquinas con Windows y QEMU.</p>
<p>Ahora, el último paso. Recordad que al principio nos guardamos un UUID usando el comando “wmic” en Windows para poder mantener la instalación de Windows como válida y que nos permita instalar actualizaciones, etc…</p>
<p>Hay que seguir los siguientes pasos, como usuario root. En mi caso mi servidor se llama “win10”. Primero exporto el fichero XML de configuración a un fichero de texto “win10.xml”. Dentro de ese fichero modifico donde pone “UUID” y cambio el que viene por el que me guardé de Windows. Luego redefino la máquina virtual Win10 en Libvirt usando el XML con el UUID modificado. Estos son los comandos a ejecutar. Si no sabéis cual es el nombre de vuestra máquina virtual, podéis ejecutar “virsh list &#8211;all”.</p>
<pre>virsh dumpxml win10 &gt; win10.xml

vi win10.xml (or use your favourite editor)

virsh undefine win10

virsh define win10.xml
</pre>
<p>Y ya está. Ya puedes arrancar tu Windows desde tu Linux sin tener que reiniciar.</p>
<p><img loading="lazy" decoding="async" class="wp-image-1668 size-full aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/04/windows-screen-saver.jpg" alt="screen saver" width="800" height="605" srcset="https://aprendeit.com/wp-content/uploads/2020/04/windows-screen-saver.jpg 800w, https://aprendeit.com/wp-content/uploads/2020/04/windows-screen-saver-300x227.jpg 300w, https://aprendeit.com/wp-content/uploads/2020/04/windows-screen-saver-768x581.jpg 768w, https://aprendeit.com/wp-content/uploads/2020/04/windows-screen-saver-100x76.jpg 100w" sizes="(max-width: 800px) 100vw, 800px" /></p>
<p>Más optimizaciones<br />
Las optimizaciones que explico ahora son para tipos de máquina QEMU llamadas “q35”. El tipo de máquina aparece en la información de tu VM en Libvirt o bien dentro del fichero XML. De hecho, lo mejor para modificar la configuración a veces es exportar la configuración XML a fichero de texto, modificarlo, luego cargarlo en Libvirt con “virsh define”.</p>
<p>hvm</p>
<p>Siempre es interesante tener un backup del fichero XML antes de tocar nada 😉</p>
<p>Dos opciones básicas, que yo añadiría son:</p>
<p align="left"><em><span style="font-family: Courier New, serif;">&lt;vmport state=&#8217;off&#8217;/&gt;</span></em></p>
<p align="left"><em><span style="font-family: Courier New, serif;">&lt;ioapic driver=&#8217;kvm&#8217;/&gt;</span></em></p>
<p>Existe un modo de acelerar el acceso a la memoria RAM utilizando “Transparent Huge Pages”, que es una funcionalidad del kernel de Linux. Para habilitarlo, configuramos a “always” el fichero:</p>
<pre>echo always &gt; /sys/kernel/mm/transparent_hugepage/mm/transparent_hugepage/enabled
</pre>
<p>En el fichero XML de configuración también puedes definir muchas funcionalidades del simulador. Cuidado con estas opciones porque pueden hacer que vuestro Windows no arranque correctamente. En mi caso, tengo estas. Pero hay posibilidades</p>
<p>&nbsp;</p>
<p>Además tengo modificado el modelo de reloj de CPU que utiliza mi máquina virtual.</p>
<p>&nbsp;</p>
<p>También hay una optimización para la CPU que funciona directamente y mejora entre un 5% y un 15% el rendimiento, que consiste en copiar el modelo de CPU directamente en la máquina virtual (normalmente QEMU utiliza un tipo de CPU simulada)</p>
<p>&nbsp;</p>
<p>Una optimización sencilla que muchas veces se nos escapa. En la mayor parte de los PCs o portátiles las opciones de ahorrar energía suelen estar activadas. Seleccionar el perfil de mayor rendimiento tiene un impacto bastante serio en las máquinas virtuales.</p>
<p>cpupower frequency-set -r -g powersave</p>
<p>Y para terminar, os voy a ahorrar horas de búsqueda si no os funciona el puntero del ratón. Descargad los drivers de esta web y utilizad en vuestro Linux un servicio llamado “spice-vdagent”. Se utiliza para que el puntero del ratón no se quede bloqueado en vuestra máquina virtual y mejora la velocidad.</p>
<p>https://www.spice-space.org/download.html</p>
<p>La entrada <a href="https://aprendeit.com/como-aprovechar-tu-windows-abandonado-en-una-particion-con-qemu/">Cómo aprovechar tu Windows abandonado en una partición con QEMU</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aprendeit.com/como-aprovechar-tu-windows-abandonado-en-una-particion-con-qemu/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo empezar con docker</title>
		<link>https://aprendeit.com/como-empezar-con-docker/</link>
					<comments>https://aprendeit.com/como-empezar-con-docker/#respond</comments>
		
		<dc:creator><![CDATA[AprendeIT]]></dc:creator>
		<pubDate>Sun, 25 Nov 2018 23:08:49 +0000</pubDate>
				<category><![CDATA[Desarrollo / programacion]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Virtualización]]></category>
		<guid isPermaLink="false">https://aprendeit.com/?p=484</guid>

					<description><![CDATA[<p>¡Hola! Llevaba tiempo queriendo hacer este artículo sobre como empezar con docker. Te agradecemos que compartas este artículo en tus redes sociales y/o dejes un comentario. ¡Empezamos! 1- ¿Qué es ...</p>
<p>La entrada <a href="https://aprendeit.com/como-empezar-con-docker/">Cómo empezar con docker</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>¡Hola! Llevaba tiempo queriendo hacer este artículo sobre como empezar con docker.</p>
<p>Te agradecemos que compartas este artículo en tus redes sociales y/o dejes un comentario.</p>
<p>¡Empezamos!</p>
<h2>1- ¿Qué es docker?</h2>
<p>Hay gente que considera que docker es un sistema de virtualización como KVM, Vmware, etc. Esto es falso. Docker es un sistema de contenedores como LXC pero mas avanzado. Tiene mejor gestión de las instancias levantadas y tiene un sistemade gestión plantillas.</p>
<p>Es decir, docker es un sistema para abstraer la aplicación y hacer su ecosistema independiente del sistema operativo. Haciendo que todo lo configurado dentro de un contenedor se ejecute correctamente en cualquier sistema operativo con docker instalado.</p>
<h2>2- ¿Qué ventajas tiene?</h2>
<p>Las ventajas son varias dependiendo de con que lo comparemos.</p>
<p>Si lo comparamos con ejecutar aplicaciones en un sistema directamente, la principal ventaja es la compatibilidad, ya que lo que se ha probado en el contenedor, en el mismo contenedor de otro sistema funcionará igual.</p>
<p>Si nos referimos a ventaja respecto a utilizar una virtualización completa, principal ventaja es que cada contenedor utiliza prácticamente la memoria de la aplicación  mientras que una instancia de KVM, Vmware, etc requiere también  consumo de memoria para el kernel del sistema virtual, etc</p>
<p>Otra ventaja es que se pueden ejecutar aplicaciones como si tuviésemos otro sistema distinto. Es decir, en el sistema anfitrión tenemos un sistema CentOS por ejemplo y en el contenedor podemos tener, Free BSD o Debian, o Arch o cualquier otro. Por lo que si en un sistema funciona mejor que en el anfitrión podemos utilizar esta ventaja.</p>
<h2>3- ¿Cómo puedo utilizarlo?</h2>
<p>Bien se puede utilizar para crear entornos de desarrollo y luego subir el contenedor a producción (hay que tener en cuenta que antes de poner nada en producción con docker se debe securizar el anfitrión y el contenedor para evitar problemas). Así podemos evitar problemas en despliegues de códigos</p>
<p>Lo primero es instalar docker. En CentOS se hace de la siguiente forma: <em>#yum install docker -y</em></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-489 size-full" src="https://aprendeit.com/wp-content/uploads/2018/11/Selección_064.png" alt="Instalacion docker CentOS" width="773" height="536" srcset="https://aprendeit.com/wp-content/uploads/2018/11/Selección_064.png 773w, https://aprendeit.com/wp-content/uploads/2018/11/Selección_064-300x208.png 300w, https://aprendeit.com/wp-content/uploads/2018/11/Selección_064-768x533.png 768w, https://aprendeit.com/wp-content/uploads/2018/11/Selección_064-392x272.png 392w, https://aprendeit.com/wp-content/uploads/2018/11/Selección_064-130x90.png 130w" sizes="(max-width: 773px) 100vw, 773px" /></p>
<p>En debian y derivados: <em>#apt install docker.io</em></p>
<p>Después de instalarlo, si es un sistema moderno, basado en systemd, levantamos el servicio: <em>#systemctl start docker</em></p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-490" src="https://aprendeit.com/wp-content/uploads/2018/11/Selección_065.png" alt="" width="399" height="47" srcset="https://aprendeit.com/wp-content/uploads/2018/11/Selección_065.png 399w, https://aprendeit.com/wp-content/uploads/2018/11/Selección_065-300x35.png 300w, https://aprendeit.com/wp-content/uploads/2018/11/Selección_065-392x47.png 392w, https://aprendeit.com/wp-content/uploads/2018/11/Selección_065-390x47.png 390w" sizes="(max-width: 399px) 100vw, 399px" /></p>
<p>Si no tiene systemd, ejecutamos: <em>#service docker start</em></p>
<h2>4- Comandos útiles</h2>
<h3>Arrancar contenedores (aunque no se hayan descargado la imágenes):</h3>
<pre lang="bash">docker run -i -t -d   IMAGEN:VERSION
</pre>
<p>Donde la imagen y la versión se pueden especificar así:</p>
<pre lang="bash">docker run -i -t -d   centos:latest
</pre>
<p>Podemos definir un nombre para el contenedor con <em> &#8211;name NOMBRE </em></p>
<pre lang="bash">[root@localhost ~]# docker run -i -t -d --name testing debian:9
Unable to find image 'debian:9' locally
Trying to pull repository docker.io/library/debian ... 
9: Pulling from docker.io/library/debian
54f7e8ac135a: Pull complete 
Digest: sha256:df6ebd5e9c87d0d7381360209f3a05c62981b5c2a3ec94228da4082ba07c4f05
Status: Downloaded newer image for docker.io/debian:9
b6f568b78470b417b8a141f4b7c5686420df7cc1050402239ab1847310a67116
[root@localhost ~]# 
</pre>
<p>Se puede especificar un puerto que será redirigido desde la maquina anfitrión al contenedor:</p>
<pre lang="bash">docker run -i -t -d -p PUERTO_EXTERIOR:INTERIOR IMAGEN
</pre>
<p>O también se puede hacer especificando la ip del anfitrion:</p>
<pre lang="bash">docker run -i -t -d -p IP_ANFITRION:PUERTO_EXTERIOR:INTERIOR IMAGEN
</pre>
<p>Añadiendo <em>«&#8211;restart always» </em>a la ecuación, se consigue que siempre que se pare el contenedor, se reinicie. Incluso en el reinicio del anfitrión:</p>
<pre lang="bash">docker run -i -t -d -p PUERTO_EXTERIOR:INTERIOR --restart always IMAGEN
</pre>
<h3>Para crear un contenedor y no levantarlo de forma inmediata:</h3>
<pre lang="bash">docker create -i -t centos:6 /bin/bash
</pre>
<h3>Descargar imagenes y gestionarlas</h3>
<p>Para descargar una imagen y tenerla disponible a la hora de levantar un nuevo contenedor sin tener que esperar a que se descargue de docker-hub, solamente tenemos que hacer lo siguiente:</p>
<pre lang="bash">docker pull IMAGEN:VERSION
</pre>
<p>O también:</p>
<pre lang="bash">docker pull IMAGEN
</pre>
<p>Por ejemplo:</p>
<pre lang="bash">#Eligiendo version
docker pull centos:7
#o seleccionando la ultima disponible
docker pull centos:latest
</pre>
<p>También podemos ver las imágenes disponibles en local ejecutando:</p>
<pre lang="bash">docker images
</pre>
<p>Por ejemplo:</p>
<pre lang="bash">ger@portatil$ sudo docker images
[sudo] contraseña para ger: 
REPOSITORY                                  TAG                 IMAGE ID            CREATED             SIZE
debian                                      9                   4879790bd60d        9 days ago          101MB
ubuntu                                      18.04               ea4c82dcd15a        5 weeks ago         85.8MB
centos                                      6                   0cbf37812bff        6 weeks ago         194MB
centos                                      7                   75835a67d134        6 weeks ago         200MB
ubuntu                                      17.04               fe1cc5b91830        11 months ago       95.6MB
</pre>
<p>Podemos buscar las imágenes disponibles en docker hub:</p>
<pre lang="bash">ger@portatil$ sudo docker search ubuntu
NAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
ubuntu                                                 Ubuntu is a Debian-based Linux operating sys…   8793                [OK]                
dorowu/ubuntu-desktop-lxde-vnc                         Ubuntu with openssh-server and NoVNC            244                                     [OK]
rastasheep/ubuntu-sshd                                 Dockerized SSH service, built on top of offi…   184                                     [OK]
consol/ubuntu-xfce-vnc                                 Ubuntu container with "headless" VNC session…   136                                     [OK]
ansible/ubuntu14.04-ansible                            Ubuntu 14.04 LTS with ansible                   95                                      [OK]
ubuntu-upstart                                         Upstart is an event-based replacement for th…   92                  [OK]                
neurodebian                                            NeuroDebian provides neuroscience research s…   55                  [OK]                
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5   ubuntu-16-nginx-php-phpmyadmin-mysql-5          47                                      [OK]
ubuntu-debootstrap                                     debootstrap --variant=minbase --components=m…   40                  [OK]                
nuagebec/ubuntu                                        Simple always updated Ubuntu docker images w…   23                                      [OK]
tutum/ubuntu                                           Simple Ubuntu docker images with SSH access     18                                      
i386/ubuntu                                            Ubuntu is a Debian-based Linux operating sys…   15                                      
</pre>
<p>&nbsp;</p>
<p>Podemos importar una imagen personalizada: <em>docker import /path/to/exampleimage.tgz</em>:</p>
<pre lang="bash">[root@localhost ~]# docker import /tmp/debian-personalizado.tgz
[root@localhost ~]#
</pre>
<h3>Ver el estado de los contenedores y sus datos</h3>
<p>Para ver los contenedores creados y su estado actual solo tenemos que ejecutar:</p>
<pre lang="bash">docker ps -a
</pre>
<p>Por ejemplo:</p>
<pre lang="bash">[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
b6f568b78470        debian:9            "bash"              About a minute ago   Up About a minute                       testing
[root@localhost ~]# 
</pre>
<p>Para levantar una maquina solo tenemos que ejecutar <em>docker start ID-DEL-CONTENEDOR</em> el ID lo podemos encontrar ejecutando <em>docker ps -a </em>:</p>
<pre lang="bash">[root@localhost ~]# docker start b6f568b78470
b6f568b78470
[root@localhost ~]#
</pre>
<p>&nbsp;</p>
<h3>Gestionar contenedores</h3>
<p>Para parar un contenedor <em>docker stop id-del-container</em>:</p>
<pre lang="bash">[root@localhost ~]# docker stop b6f568b78470
b6f568b78470
[root@localhost ~]#
</pre>
<p>Y para eliminar un contenedor <em>docker stop id-del-container</em>:</p>
<pre lang="bash">[root@localhost ~]# docker rm b6f568b78470
b6f568b78470
[root@localhost ~]#
</pre>
<p>Podemos hacer una copia de un contenedor ejecutando: <em>docker export -o filesystem.tar ID_DE_CONTAINER</em>:</p>
<pre lang="bash">[root@localhost ~]# docker export -o filesystem.tar b6f568b78470
[root@localhost ~]#
</pre>
<p>&nbsp;</p>
<p>Podemos acceder a una consola del contenedor: <em>docker exec -it «id of running container» bash</em>:</p>
<pre lang="bash">[root@localhost ~]# docker exec -it b6f568b78470 bash
[root@b6f568b78470 ~]#
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4 style="text-align: center;" align="left"><a href="https://aprendeit.com/producto/docker-para-novatos/">Si estás interesado en aprender Docker puedes puedes adquirir nuestro libro aquí.</a></h4>
<h3 style="text-align: center;"><a href="https://aprendeit.com/producto/docker-para-novatos/"><img loading="lazy" decoding="async" class="wp-image-705 size-thumbnail aligncenter" src="https://aprendeit.com/wp-content/uploads/2020/05/Docker-para-novatos-Gerardo-G.-Urtiaga-portada-web-150x150.jpg" alt="Docker para novatos" width="150" height="150" />Docker para novatos</a></h3>
<p>&nbsp;</p>
<p>Y esto ha sido todo sobre como empezar con docker, en un siguiente post, trataremos sobre como manejar docker con python.</p>
<p>Recuerda que si te ha gustado este post te agradecemos que compartas en tus redes sociales y/o comentes la publicación.</p>
<p>¡Nos vemos!</p>
<p>La entrada <a href="https://aprendeit.com/como-empezar-con-docker/">Cómo empezar con docker</a> se publicó primero en <a href="https://aprendeit.com">Aprende IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aprendeit.com/como-empezar-con-docker/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Almacenamiento en caché de páginas con Disk: Enhanced 
Carga diferida (feed)
Minified using Disk
Caché de base de datos 14/191 consultas en 0.135 segundos usando Disk

Served from: aprendeit.com @ 2026-04-11 01:04:08 by W3 Total Cache
-->