<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Johsttin Eduardo Curahua Gutierrez - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Descubre miles de cursos de programación escritos por expertos. Aprende Desarrollo Web, Ciencia de Datos, DevOps, Seguridad y obtén asesoramiento profesional para desarrolladores. ]]>
        </description>
        <link>https://www.freecodecamp.org/espanol/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Johsttin Eduardo Curahua Gutierrez - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/espanol/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sun, 31 May 2026 04:47:20 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/espanol/news/author/johsttin/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Cómo cambiar los programas de inicio en Windows 7, 8 y 10 ]]>
                </title>
                <description>
                    <![CDATA[ Los programas de inicio son programas que se ejecutan automáticamente cuando se inicia un sistema. Esta es una buena práctica para los programas que utilizas con frecuencia. Te ahorra el estrés de buscar esos programas o, en algunos casos, de configurarlos manualmente. Algunos programas también ya tienen esta característica de ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-cambiar-los-programas-de-inicio-en-windows-7-8-y-10/</link>
                <guid isPermaLink="false">65bc3ef1aa1f2203f0eb04f3</guid>
                
                    <category>
                        <![CDATA[ windows ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Windows 10 ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Johsttin Eduardo Curahua Gutierrez ]]>
                </dc:creator>
                <pubDate>Mon, 05 Feb 2024 06:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/02/5f9c9d4b740569d1a4ca36f9.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-change-startup-program-in-windows-7-8-and-10/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Change Startup Programs in Windows 7, 8 And 10</a>
      </p><p>Los programas de inicio son programas que se ejecutan automáticamente cuando se inicia un sistema. Esta es una buena práctica para los programas que utilizas con frecuencia. Te ahorra el estrés de buscar esos programas o, en algunos casos, de configurarlos manualmente.</p><p>Algunos programas también ya tienen esta característica de forma predeterminada cuando se instalan recientemente.</p><p>Pero si tienes demasiados programas de inicio, puede ralentizar el proceso de inicio. Esto tiene un efecto negativo especialmente en sistemas con pocos recursos o menos potencia de procesamiento.</p><p>En este artículo, aprenderemos cómo abrir el panel de control de aplicaciones de inicio, cómo habilitar y deshabilitar aplicaciones de inicio y, finalmente, cómo agregar los programas de inicio que deseemos en Windows 7, 8 y 10.</p><p>En cada una de estas versiones de Windows, hay un Panel de control para aplicaciones de inicio que muestra una lista de aplicaciones que se pueden ejecutar automáticamente al inicio. Estas aplicaciones están habilitadas para el inicio o deshabilitadas.</p><p>Así que, veamos el proceso para cada versión de Windows.</p><h2 id="en-windows-7"><strong>En Windows 7</strong></h2><h3 id="abrir-el-panel-de-control-de-aplicaciones-de-inicio">Abrir el Panel de Control de Aplicaciones de Inicio</h3><p>Abre el menú de inicio de Windows (tecla Windows), luego escriba "<strong>MSCONFIG</strong>". Cuando presiones Enter, se abre la consola de Configuración del sistema. Luego haz clic en la pestaña "<strong>Inicio de Windows</strong>" que mostrará algunos programas que se pueden habilitar o deshabilitar para el inicio. </p><h3 id="deshabilitar-habilitar-la-aplicaci-n-de-inicio">Deshabilitar/Habilitar la Aplicación de Inicio</h3><p>Las casillas de verificación al lado de las aplicaciones indican el estado. Si está marcado, está habilitado para el inicio; de lo contrario, está deshabilitado.</p><p>Para deshabilitar una aplicación habilitada, simplemente desmarca la casilla de verificación y haz clic en Aplicar.</p><p>Para habilitar una aplicación deshabilitada, marca la casilla de verificación y haz clic en Aplicar.</p><p>Estos dos procesos requieren que se reinicie el sistema antes de que se apliquen los cambios en las aplicaciones.</p><h3 id="agregar-aplicaci-n-de-inicio">Agregar Aplicación de Inicio</h3><p>Para agregar una aplicación, deberás explorar la carpeta de inicio. Para ello, prueba cualquiera de los siguientes métodos;</p><ul><li>Abre el menú de inicio Windows y escribe "<strong>Inicio</strong>" (para buscarlo). Cuando la encuentres, haz clic derecho y selecciona Explorar para abrir la carpeta. </li><li>Abre el menú de inicio Windows, seleccione "<strong>Todos los programas</strong>" y desplázate hacia abajo en la lista hasta encontrar la carpeta de Inicio. Cuando lo encuentres, haz clic derecho y selecciona Explorar para abrir la carpeta.</li></ul><p>Crea un acceso directo al programa que deseas, luego cópialo y pégalo en esta carpeta. Después de esto, el programa se agregará automáticamente al panel con el estado "<strong>habilitado</strong>".</p><h2 id="en-windows-8"><strong>En Windows 8</strong></h2><h3 id="abrir-el-panel-de-control-de-aplicaciones-de-inicio-1">Abrir el Panel de Control de Aplicaciones de Inicio</h3><p>Para abrir el panel, intenta cualquiera de las siguientes opciones;</p><ul><li>Abre el "<strong>Administrador de tareas</strong>" y selecciona la pestaña "<strong>Inicio</strong>" (sino ve la opción Inicio debes dar click a Más detalles).</li><li>Abre el menú de inicio de Windows y escribe "<strong>Inicio</strong>" para buscar el programa. Luego selecciona cualquiera de las opciones proporcionadas. </li></ul><h3 id="deshabilitar-habilitar-la-aplicaci-n-de-inicio-1">Deshabilitar/Habilitar la Aplicación de Inicio</h3><p>Para desactivar una aplicación de inicio que esté habilitada, haz clic derecho en la aplicación y selecciona "<strong>Desactivar</strong>".</p><p>Para habilitar una aplicación de inicio que está deshabilitada, haz clic derecho en la aplicación y selecciona "<strong>Habilitar</strong>".</p><h3 id="agregar-aplicaci-n-de-inicio-1">Agregar Aplicación de Inicio</h3><p>Presiona la tecla Windows y la letra R para abrir el cuadro de diálogo Ejecutar. Luego ingresa %<strong>AppData</strong>%. Esto abrirá la carpeta Roaming.</p><p>Navega hacia <strong><strong>\Microsoft\Windows\</strong>Menu Inicio<strong>\Program</strong>a<strong>s\</strong>Inicio</strong>. En esta carpeta, pega el acceso directo de la aplicación que deseas. Esto la convertirá en una aplicación de inicio con el estado "habilitado".</p><h2 id="en-windows-10"><strong>En Windows 10</strong></h2><h3 id="abrir-el-panel-de-control-de-aplicaciones-de-inicio-2">Abrir el Panel de Control de Aplicaciones de Inicio</h3><p>Para abrir el panel, intenta cualquiera de las siguientes opciones;</p><ul><li>Abre el menú de inicio Windows y escribe "<strong>Aplicaciones de Inicio</strong>" y haz clic en cualquiera de los resultados.</li><li>Abre el "<strong>Administrador de tareas</strong>", luego selecciona la pestaña "<strong>Inicio</strong>".</li></ul><h3 id="deshabilitar-habilitar-la-aplicaci-n-de-inicio-2">Deshabilitar/Habilitar la Aplicación de Inicio</h3><p>Para deshabilitar una aplicación de inicio, haz clic derecho en cualquier aplicación de la lista con el estado "<strong>habilitada</strong>" y selecciona "<strong>deshabilitar</strong>". </p><p>Para habilitar una aplicación de inicio en la lista que está deshabilitada, haz clic derecho en la aplicación y selecciona "<strong>habilitar</strong>".</p><h3 id="agregar-aplicaci-n-de-inicio-2">Agregar Aplicación de Inicio</h3><p>Mantén presionadas las teclas Windows y la letra R en el teclado. En el cuadro de diálogo de ejecución, ingresa "<strong>shell:startup</strong>" y luego presiona Enter.</p><p>En la carpeta, puedes agregar cualquier aplicación de tu elección que deseas ejecutar al inicio. Se agregarán a la lista para que cuando acceda a tus aplicaciones de inicio, pueda habilitarlas o deshabilitarlas.</p><h2 id="en-resumen"><strong>En Resumen</strong></h2><p>Si hay alguna aplicación que siempre ejecuta cuando inicia su sistema, es una buena práctica convertirla en un programa de inicio.</p><p>Cuando tu sistema arranca con lentitud, lo más probable es que los responsables sean los programas de inicio. Ahora ya sabes cómo desactivarlos o reducirlos.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Cómo usar Vim: Tutorial para principiantes ]]>
                </title>
                <description>
                    <![CDATA[ Vim es uno de los editores de texto más populares entre los usuarios de Linux. Los administradores de sistemas Linux lo prefieren especialmente frente a otros editores. En este artículo, aprenderá mucho sobre Vim y verá cómo puede comenzar a usar Vim rápidamente como si fuera un desarrollador. ¿Qué es ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-usar-vim-tutorial-para-principiantes/</link>
                <guid isPermaLink="false">641f1d4c083d0a0781fde53a</guid>
                
                    <category>
                        <![CDATA[ Vim ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Johsttin Eduardo Curahua Gutierrez ]]>
                </dc:creator>
                <pubDate>Mon, 03 Apr 2023 20:10:10 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/03/BB---Vim---A-Quick-Beginner-s-Guide.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/vim-beginners-guide/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Use Vim – Tutorial for Beginners</a>
      </p><p>Vim es uno de los editores de texto más populares entre los usuarios de Linux. Los administradores de sistemas Linux lo prefieren especialmente frente a otros editores.</p><p>En este artículo, aprenderá mucho sobre Vim y verá cómo puede comenzar a usar Vim rápidamente como si fuera un desarrollador.</p><h2 id="-qu-es-vim"><strong>¿</strong>Qué<strong> es<strong> Vim?</strong></strong></h2><p>Vim es un acrónimo de Vi IMproved. Es un editor de texto multiplataforma gratuito y de código abierto. Fue lanzado por primera vez por Bram Moolenaar en 1991 para variantes de UNIX.</p><p>Vim se basa en el editor Vi original, que fue creado por Bill Joy en 1976. En los años 90, comenzó a quedar claro que a Vi le faltaban algunas funciones en comparación con el editor Emacs. Así que Bram implementó muchas funciones que faltaban y lo lanzó con el nombre de Vim.</p><h2 id="c-mo-instalar-vim"><strong>Cómo instalar<strong> Vim</strong></strong></h2><p>Vim se ejecuta en varias plataformas, como Windows, Linux y Mac.</p><p>Para instalar Vim en Windows, descargue el archivo ejecutable del <a href="https://www.vim.org/download.php">sitio de Vim</a> y ejecútelo. Siga las instrucciones que se muestran en la pantalla y estará listo para comenzar.</p><p>Vim viene preinstalado en la mayoría de los sistemas operativos *nix. Pero si no está instalado en su sistema, puede instalarlo con un administrador de paquetes de su elección.</p><p>Aquí está el comando de instalación para sistemas operativos basados en Debian:</p><figure class="kg-card kg-code-card"><pre><code class="language-bash">sudo apt-get update
sudo apt-get install vim</code></pre><figcaption>Terminal commands to install Vim on Debian based operating systems</figcaption></figure><p>Para asegurarse de que esté instalado correctamente, ejecute <code>which vim</code> y debería obtener <code>/usr/bin/vim</code> en su output.</p><h2 id="c-mo-iniciar-con-vim"><strong>Cómo iniciar con <strong> Vim</strong></strong></h2><p>Puede comenzar con Vim escribiendo su nombre en la terminal de esta manera:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-274.png" class="kg-image" alt="image-274" width="600" height="400" loading="lazy"><figcaption>Start Vim</figcaption></figure><p>Una vez que ingrese el comando anterior, podrá ver una pantalla que muestra información sobre Vim y algunas instrucciones para encontrar ayuda y salir de Vim.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-276.png" class="kg-image" alt="image-276" width="600" height="400" loading="lazy"><figcaption>Vim Introduction</figcaption></figure><h2 id="modos-de-vim"><strong>Modos de <strong>Vim</strong></strong></h2><p>Debe conocer el concepto más importante en Vim antes de continuar: los modos en Vim.</p><p>Todo en Vim se considera un modo. Puedes lograr lo que quieras si entiendes los modos en Vim. Hay muchos modos en Vim. Pero, veremos los 4 modos más importantes.</p><p>Ellos son:</p><ol><li>Modo Comando</li><li>Modo Línea de Comandos</li><li>Modo Insertar</li><li>Modo Visual</li></ol><p>Explorémoslos uno por uno.</p><h3 id="-qu-es-el-modo-comando">¿Qué es el Modo Comando?</h3><p>Este es el modo predeterminado (también llamado modo Normal) en Vim. Siempre que se inicie Vim, estarás en este modo. Puede cambiar a cualquier modo desde este modo. No puede hacer esto en ningún otro modo.</p><p>Básicamente, para cambiar de un modo a otro, primero debe ingresar al Modo Comando y luego navegar al otro modo. Los comandos que ejecuta sin ningún prefijo (dos puntos) indican que está ejecutando el comando en Modo Comando.</p><h3 id="-qu-es-el-modo-insertar">¿Qué es el Modo Insertar?</h3><p>Este modo se utiliza para editar el contenido del archivo. Puede cambiar al Modo &nbsp;Insertar presionando <code>i</code> desde el Modo Comando. Puede usar la tecla <code>Esc</code> para volver al Modo Comando.</p><h3 id="-qu-es-el-modo-l-nea-de-comandos">¿Qué es el Modo Línea de Comandos?</h3><p>Puede usar este modo para jugar con algunos comandos. Pero los comandos en este modo tienen el prefijo de dos puntos (:). Puede cambiar a este modo presionando : (dos puntos) en el Modo Comando.</p><h3 id="-qu-es-el-modo-visual">¿Qué es el Modo Visual?</h3><p>Utiliza este modo para seleccionar visualmente algún texto y ejecutar comandos sobre esa sección de código. Puede cambiar a este modo presionando <code>v</code> desde el Modo Comando.</p><p>Los 4 modos anteriores son suficientes para realizar un conjunto básico de operaciones de archivo en Vim.</p><p>Ok, terminamos con la teoría. Exploremos Vim de manera práctica.</p><h2 id="operaciones-comunes-del-editor-de-texto-en-vim">Operaciones comunes del editor de texto en Vim</h2><p>Crear un nuevo archivo con Vim es simple. Puedes hacerlo desde el Modo Línea de Comandos.</p><p>Ejecute el siguiente comando para crear un nuevo archivo:</p><figure class="kg-card kg-code-card"><pre><code class="language-vim">:edit sample.txt</code></pre><figcaption>Command to create (if it doesn't exist)/edit a file</figcaption></figure><p>El comando anterior abre un archivo <code>sample.txt</code> en Modo de Edición, si existe, y crea un nuevo archivo de lo contrario.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-278.png" class="kg-image" alt="image-278" width="600" height="400" loading="lazy"><figcaption>Create a new file with the name <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">sample.txt</code></figcaption></figure><p>Después de ejecutar ese comando, estará en el Modo Comando (como se muestra en la siguiente captura de pantalla) y no podrá ingresar ningún texto:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-279.png" class="kg-image" alt="image-279" width="600" height="400" loading="lazy"><figcaption>Command mode showing new file created</figcaption></figure><p>Para agregar algo de texto al archivo creado, presione <code>i</code> en el teclado. Utiliza el comando <code>i</code> para ingresar texto en el archivo. Una vez que presione <code>i</code>, podrá ver que ingresó al Modo Insertar en Vim mirando la parte inferior izquierda del archivo.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-280.png" class="kg-image" alt="image-280" width="600" height="400" loading="lazy"><figcaption>Insert mode in <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">sample.txt</code> file in Vim</figcaption></figure><p>En este modo, puede escribir lo que quiera en el archivo.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-281.png" class="kg-image" alt="image-281" width="600" height="400" loading="lazy"><figcaption>Added some content in <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">sample.txt</code> file</figcaption></figure><p>Hemos terminado de escribir nuestro contenido. Y ahora querremos guardar el archivo. Si no llegas a guardar y simplemente cierras la terminal en este punto, todo su contenido se perderá.</p><h3 id="c-mo-guardar-un-archivo">Cómo guardar un archivo</h3><p>Para guardar un archivo, debe cambiar del Modo Insertar al Modo Línea de Comandos. Recuerde que le dije antes: siempre que desee cambiar de un modo a otro, primero debe cambiar al Modo Comando y luego puede cambiar fácilmente al modo que desee.</p><p>Para cambiar al Modo Comando desde el Modo Insertar, debe presionar la tecla <code>Esc</code>.</p><p>Después de presionar la tecla &nbsp;<code>Esc</code>, no podrá ver --INSERT-- en la parte inferior izquierda. Esto indica que ya no está en Modo Insertar y ahora está en Modo Comando.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-283.png" class="kg-image" alt="image-283" width="600" height="400" loading="lazy"><figcaption>Command mode in <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">sample.txt</code> file</figcaption></figure><p>Para guardar el archivo, escriba el siguiente comando:</p><figure class="kg-card kg-code-card"><pre><code class="language-vim">:w</code></pre><figcaption>Vim command to save the file</figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-284.png" class="kg-image" alt="image-284" width="600" height="400" loading="lazy"><figcaption>Command to save the file</figcaption></figure><h3 id="c-mo-cerrar-un-archivo-y-salir-de-vim">Cómo cerrar un archivo y salir de Vim</h3><p>Una vez que guarde el archivo, puede cerrar Vim cerrando la terminal. Pero, la forma correcta de cerrar el archivo y el editor Vim es usando el siguiente comando:</p><figure class="kg-card kg-code-card"><pre><code class="language-vim">:q</code></pre><figcaption>Vim command to close file and quit Vim</figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-285.png" class="kg-image" alt="image-285" width="600" height="400" loading="lazy"><figcaption>Close the file and vim editor</figcaption></figure><p>El comando anterior cierra el archivo y sale del editor Vim.</p><p>Alternativamente, puede usar un comando que es la combinación de los 2 comandos anteriores (guardar y salir) para guardar y salir rápidamente de Vim. El comando es:</p><figure class="kg-card kg-code-card"><pre><code class="language-vim">:wq</code></pre><figcaption>Vim command to save the file and close immediately</figcaption></figure><p>El comando anterior cierra el editor Vim inmediatamente después de guardar el archivo.</p><h3 id="c-mo-editar-un-archivo-en-vim">Cómo editar un archivo en Vim</h3><p>Para editar un archivo, debe abrir el archivo usando Vim y cambiar al Modo Insertar.</p><p>Abramos el archivo <code>sample.txt</code> que creamos arriba:</p><figure class="kg-card kg-code-card"><pre><code class="language-vim">vim sample.txt</code></pre><figcaption>Vim command to edit <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">sample.txt</code> file</figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-287.png" class="kg-image" alt="image-287" width="600" height="400" loading="lazy"><figcaption>Open <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">sample.txt</code> file using Vim</figcaption></figure><p>Ahora estamos en Modo Comando. Para editar el archivo, tenemos que cambiar al Modo Insertar. Como vimos anteriormente, al presionar <code>i</code> desde el Modo Comando cambiará al Modo Insertar.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-289.png" class="kg-image" alt="image-289" width="600" height="400" loading="lazy"><figcaption>Switch to Insert mode by pressing <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">i</code></figcaption></figure><p>Siga el mismo procedimiento para guardar el archivo y salir de Vim. Presione <code>Esc</code> en el teclado y escriba <code>:w</code> para guardar el archivo y <code>:q</code> para salir de Vim.</p><p>Sin embargo, es posible que se pregunte qué sucede si quiero cerrar el archivo sin guardar los cambios. (Ignorar los cambios que hice y devolver el archivo al estado anterior).</p><h4 id="c-mo-cerrar-el-archivo-sin-guardar-los-cambios">Cómo cerrar el archivo sin guardar los cambios</h4><p>Para cerrar el archivo sin guardar los cambios, debe ejecutar <code>:q!</code> desde el Modo Comando.</p><p>Exploremos esto con un ejemplo:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-292.png" class="kg-image" alt="image-292" width="600" height="400" loading="lazy"><figcaption>Content in <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">sample.txt</code> file</figcaption></figure><p>He agregado algo más de contenido al archivo.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-293.png" class="kg-image" alt="image-293" width="600" height="400" loading="lazy"><figcaption>Added some content in <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">sample.txt</code> file</figcaption></figure><p>Pero no quiero guardar los cambios que hice ahora. Para cerrar el archivo sin guardar este cambio, tenemos que cambiar al Modo Comando (pulsando la tecla <code>Esc</code>). Escribe <code>:q!</code> en el Modo Comando. Esto cerrará el archivo ignorando los cambios realizados.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-294.png" class="kg-image" alt="image-294" width="600" height="400" loading="lazy"><figcaption>Ignore saving the <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">sample.txt</code> file</figcaption></figure><p>Veamos el archivo y confirmemos si obtenemos el resultado esperado:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-295.png" class="kg-image" alt="image-295" width="600" height="400" loading="lazy"><figcaption>View <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">sample.txt</code> file</figcaption></figure><p>Vemos que el archivo no tiene la última línea que agregamos recientemente. Por lo tanto, los cambios no se guardaron.</p><h3 id="c-mo-cortar-copiar-y-pegar-texto-de-un-archivo-usando-vim">Cómo cortar, copiar y pegar texto de un archivo usando Vim</h3><p>Puede cortar, copiar y pegar de 2 maneras en Vim. Estas son:</p><ol><li>Usando el Modo Visual</li><li>Usando el teclado</li></ol><p>De estas dos formas, el Modo Visual es más fácil de entender. Dado que esta es una guía para principiantes, exploremos cómo cortar, copiar y pegar en el modo Visual.</p><p>Abramos el archivo en Modo Comando antes de continuar:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-231.png" class="kg-image" alt="image-231" width="600" height="400" loading="lazy"><figcaption><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">sample.txt</code> file opened in command mode in Vim</figcaption></figure><p>Supongamos que desea copiar la palabra "Hola" de la primera línea y pegarla en la tercera línea.</p><p>El primer paso es colocar el cursor en el lugar desde donde desea copiar el texto (estando en modo comando).</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-232.png" class="kg-image" alt="image-232" width="600" height="400" loading="lazy"><figcaption>Moved the cursor to the beginning of the word <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">Hello</code></figcaption></figure><p>Ingrese al modo Visual presionando la tecla <code>v</code> en el teclado.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-233.png" class="kg-image" alt="image-233" width="600" height="400" loading="lazy"><figcaption>Enter Visual mode</figcaption></figure><p>El texto <code>-- VISUAL –- </code>en la parte inferior izquierda indica que estamos en Modo Visual.</p><p>Mueva el cursor al lugar donde termina el texto que desea copiar.</p><p>En este caso, muevo el cursor a la letra <code>o</code> de la palabra <code>Hello</code>.</p><p>Mientras mueve el cursor, el Modo Visual resalta el texto desde el principio hasta el cursor.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-235.png" class="kg-image" alt="image-235" width="600" height="400" loading="lazy"><figcaption>Highlighted text in Visual mode</figcaption></figure><p>Una vez que haya terminado de mover el cursor al lugar correcto, presione <code>y</code> para copiar el texto o presione <code>d</code> para cortar el texto.</p><p>En este caso, estoy copiando el texto. Entonces, presiono <code>y</code> en mi teclado.</p><p>Mueva el cursor al lugar donde desea pegar el texto.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-296.png" class="kg-image" alt="image-296" width="600" height="400" loading="lazy"><figcaption>Move the cursor to the place where you want to paste the text</figcaption></figure><p>En nuestro caso, tenemos que mover el cursor a la 3ra línea.</p><p>Presione <code>p</code> (en minúsculas) para pegar el texto después del cursor y <code>P</code> (en mayúsculas) para pegar el texto antes del cursor.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-236.png" class="kg-image" alt="image-236" width="600" height="400" loading="lazy"><figcaption><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">Hello</code> text pasted on 3rd line</figcaption></figure><p>Presione <code>:wq</code> para guardar y cerrar el archivo.</p><h3 id="c-mo-encontrar-y-reemplazar-texto-en-vim">Cómo encontrar y reemplazar texto en Vim</h3><p>Encontrar texto y reemplazarlo con otro texto es simple y directo en Vim. Hay un comando de una línea que simplifica todo este proceso.</p><p>Está es la sintaxis:</p><figure class="kg-card kg-code-card"><pre><code class="language-vim">:[range]s/{pattern}/{string}/[flags]</code></pre><figcaption>Vim command syntax to find and replace a text</figcaption></figure><p>Desmontemos cada parte y comprendamos cómo funciona todo.</p><ul><li><code>[range]</code> indica que puede pasar el rango de líneas. Pase % para buscar y reemplazar en todas las líneas. El rango está separado por una coma. Para encontrar y reemplazar entre las líneas 5 a 10, pase 5,10. Usar <code>.</code> para representar la línea actual y <code>$</code> para representar la última línea del archivo.</li><li><code>{pattern}</code> indica el patrón para encontrar el texto. Puede pasar patrones de expresiones regulares aquí.</li><li><code>{string}</code> es la cadena a reemplazar en el texto encontrado.</li><li><code>[flags]</code> indica si desea pasar banderas adicionales (por ejemplo, la bandera <code>c</code> se pasa para confirmar antes de reemplazar el texto). De forma predeterminada, esto hace una búsqueda que distingue entre mayúsculas y minúsculas. Puede cambiarlo para realizar una búsqueda que no distinga entre mayúsculas y minúsculas pasando la bandera <code>i</code> .</li></ul><p>Muy bien, exploremos esto con un ejemplo.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-237.png" class="kg-image" alt="image-237" width="600" height="400" loading="lazy"><figcaption><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">sample.txt</code> file content</figcaption></figure><p>Nuestro archivo <code>sample.txt</code> tiene 2 "Hello". Reemplacemos "Hello" con "Hi" en ambos lugares.</p><p>El comando para hacer eso es:</p><figure class="kg-card kg-code-card"><pre><code class="language-vim">:%s/Hello/Hi/g</code></pre><figcaption>Vim command to replace "Hello" with "Hi"</figcaption></figure><ul><li><code>%s</code> indica reemplazar el contenido en todo el archivo</li><li><code>Hello</code> es el patron de búsqueda</li><li><code>Hi</code> es el texto a reemplazar</li><li><code>g</code> indica hacer el cambio globalmente</li></ul><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-238.png" class="kg-image" alt="image-238" width="600" height="400" loading="lazy"><figcaption>While running the command to change "Hello" with "Hi"</figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-239.png" class="kg-image" alt="image-239" width="600" height="400" loading="lazy"><figcaption>After running the command</figcaption></figure><p>Entendamos esto con otro ejemplo.</p><p>Esta vez, quiero cambiar la palabra "Hi" (búsqueda que no distingue entre mayúsculas y minúsculas) que aparece entre las líneas 2 y 3 y reemplazarla con "Hello and Welcome", con una confirmación para cambiar cada aparición.</p><p>El comando para hacer eso es:</p><figure class="kg-card kg-code-card"><pre><code class="language-vim">:2,3s/Hi/Hello and Welcome/gci</code></pre><figcaption>Vim command to change "Hi" with "Hello and Welcome" in 2nd and 3rd line</figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-297.png" class="kg-image" alt="image-297" width="600" height="400" loading="lazy"><figcaption>Running the command to change the text from line 2 to line 3</figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-241.png" class="kg-image" alt="image-241" width="600" height="400" loading="lazy"><figcaption>Asking for confirmation to change the occurrence</figcaption></figure><p>Aquí hay una descripción por cada bandera:</p><ul><li><code>y</code> - Reemplazar el patron</li><li><code>n</code> - Saltar el patron</li><li><code>a</code> - Sustituye el patron y todas las ocurrencias restantes del patron</li><li><code>q</code> o <code>Esc</code> - Cancelar sustitución</li><li><code>l</code> - Reemplazar el patron y salir</li><li><code>CTRL+Y</code> - Desplazar la pantalla hacia abajo</li><li><code>CTRL+E</code> - Desplazar la pantalla hacia arriba</li></ul><p>Quiero aceptar el cambio. Entonces, presiono <code>y</code>. Aquí está la salida después de presionar <code>y</code>.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-242.png" class="kg-image" alt="image-242" width="600" height="400" loading="lazy"><figcaption>After replacing the word</figcaption></figure><p>Dado que solo tenemos una ocurrencia de"Hi" entre las líneas 2 y 3, no solicitó más confirmación y la operación se completó.</p><h3 id="c-mo-deshacer-o-rehacer-en-vim">Cómo deshacer o rehacer en Vim</h3><p>Para deshacer un cambio en Vim, presione <code>u</code> en el Modo Comando. Para rehacer, presione <code>CTRL + R</code>. Puede anteponer un número (n) con <code>u</code> para deshacer <code>n</code> veces. por ejemplo, <code>2u</code> deshará 2 veces. Para enumerar las opciones de deshacer disponibles, escriba <code>:undolist</code> n el modo comando.</p><p>Entendamos esto con un ejemplo.</p><p>Este es el estado actual de nuestro archivo sample.txt:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-254.png" class="kg-image" alt="image-254" width="600" height="400" loading="lazy"><figcaption>Current state of <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">sample.txt</code> file</figcaption></figure><p>Tengo mi cursor en "a" en el texto "Hello and Welcome" en la tercera línea. Eliminemos la palabra "and" escribiendo <code>dw</code> en el Modo Comando:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-257.png" class="kg-image" alt="image-257" width="600" height="400" loading="lazy"><figcaption>Removed the word <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">and</code> by typing <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">dw</code> in command mode</figcaption></figure><p>Vamos a deshacer para traer de vuelta la palabra "and" al archivo. Para hacerlo, presione <code>u</code> en el modo comando</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-258.png" class="kg-image" alt="image-258" width="600" height="400" loading="lazy"><figcaption>Changes are undone after typing <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">u</code> in command mode</figcaption></figure><p>Rehagamos y eliminemos la palabra "and" escribiendo <code>CTRL + R</code> en el Modo Comando.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-298.png" class="kg-image" alt="image-298" width="600" height="400" loading="lazy"><figcaption>Changes were applied again on redo by pressing <code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">CTRL + R</code> in command mode</figcaption></figure><h2 id="conclusion"><strong><strong>Conclusion</strong></strong></h2><p>En este artículo, ha aprendido los conceptos básicos de Vim. Este artículo debería ser suficiente para comenzar y realizar algunas operaciones básicas de lectura/escritura de archivos con Vim.</p><p>Solo tenga en cuenta que ni siquiera he cubierto el 1% de Vim. Pero estoy seguro de que estos conceptos básicos te ayudarán a explorar Vim de forma rápida y segura.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Como obtener la dirección IP de un contenedor Docker - Explicado con ejemplos ]]>
                </title>
                <description>
                    <![CDATA[ Docker brinda la capacidad de empaquetar y ejecutar una aplicación en un entorno aislado llamado contenedor. Sé lo que estás pensando: Venga, no otra publicación que explique qué es Docker, ¡Está en todas partes en estos días! Pero no se preocupe, nos estamos saltando esa introducción básica. El público objetivo ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-obtener-la-direccion-ip-de-un-contenedor-docker-explicado-con-ejemplos/</link>
                <guid isPermaLink="false">63e555919a3ea706f58b0aaf</guid>
                
                    <category>
                        <![CDATA[ docker ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Johsttin Eduardo Curahua Gutierrez ]]>
                </dc:creator>
                <pubDate>Mon, 20 Feb 2023 19:33:49 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/02/5f9c9a19740569d1a4ca2384.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-get-a-docker-container-ip-address-explained-with-examples/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Get A Docker Container IP Address - Explained with Examples</a>
      </p><p>Docker brinda la capacidad de empaquetar y ejecutar una aplicación en un entorno aislado llamado contenedor.</p><p>Sé lo que estás pensando: Venga, no otra publicación que explique qué es Docker, ¡Está en todas partes en estos días!</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/06/docker-i-see.jpg" class="kg-image" alt="docker-i-see" width="600" height="400" loading="lazy"></figure><p>Pero no se preocupe, nos estamos saltando esa introducción básica. El público objetivo de este artículo ya debería tener una comprensión básica de lo que son Docker y Contenedores.</p><p>Pero, ¿Alguna vez se ha preguntado cómo obtener una dirección IP del contenedor Docker?</p><h2 id="explicando-redes-en-docker">Explicando redes en Docker</h2><p><br>Primero, comprendamos cómo funciona las redes en Docker. Para eso, nos vamos a centrar en la red predeterminada <code>bridge</code>. Cuando usa Docker, si no especifica un controlador, este es el tipo de red que está usando.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/06/docker-network.png" class="kg-image" alt="docker-network" width="600" height="400" loading="lazy"><figcaption>Docker network, image from <a href="https://www.docker.com/blog/understanding-docker-networking-drivers-use-cases/" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 17.6px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">understanding-docker-networking-drivers-use-cases</a></figcaption></figure><p>La red <code>bridge</code> funciona como una red privada interna del host para que los contenedores puedan comunicarse. El acceso externo se otorga al exponer los puertos de los contenedores. </p><p>Las redes bridge se utilizan cuando sus aplicaciones se ejecutan en contenedores independientes que necesitan comunicarse.</p><p>En la imagen de arriba, <code>db</code> y <code>web</code> pueden comunicarse entre sí mediante una red bridge creada por el usuario llamada <code>mybridge</code>. </p><p>Si nunca ha agregado una red en Docker, debería ver algo similar a esto:</p><pre><code class="language-bash">$ docker network ls

NETWORK ID          NAME                  DRIVER              SCOPE
c3cd46f397ce        bridge                bridge              local
ad4e4c24568e        host                  host                local
1c69593fc6ac        none                  null                local</code></pre><p>La red <code>bridge</code> predeterminada aparece en la lista, junto con <code>host</code> y <code>none</code>. Ignoraremos los otros dos y usaremos la red <code>bridge</code> cuando lleguemos a los ejemplos.</p><h2 id="direcci-n-ip-de-un-contenedor-de-docker"><strong>Dirección IP de un contenedor de Docker</strong></h2><p><br>De forma predeterminada, al contenedor se le asigna una dirección IP para cada red de Docker a la que se conecta. Y cada red se crea con una máscara de subred predeterminada, que se usa como un pool para luego proporcionar las direcciones IP.</p><p>Por lo general, Docker usa la subred predeterminada <strong>172.17. 0.0/16</strong> &nbsp;para los contenedores.</p><p>Ahora, para entenderlo mejor, ejecutaremos un caso de uso real.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/06/flamenco-done.png" class="kg-image" alt="drawing" width="600" height="400" loading="lazy"></figure><h3 id="ejemplo-docker">Ejemplo Docker</h3><p><br>Para ilustrar esto, usaremos un entorno Hive y Hadoop, que contiene 5 contenedores Docker.</p><p>Revise el archivo <code>docker-compose.yml</code> &nbsp;que estamos a punto de ejecutar:</p><pre><code>version: "3"

services:
  namenode:
    image: bde2020/hadoop-namenode:2.0.0-hadoop2.7.4-java8
    volumes:
      - namenode:/hadoop/dfs/name
    environment:
      - CLUSTER_NAME=test
    env_file:
      - ./hadoop-hive.env
    ports:
      - "50070:50070"
  datanode:
    image: bde2020/hadoop-datanode:2.0.0-hadoop2.7.4-java8
    volumes:
      - datanode:/hadoop/dfs/data
    env_file:
      - ./hadoop-hive.env
    environment:
      SERVICE_PRECONDITION: "namenode:50070"
    ports:
      - "50075:50075"
  hive-server:
    image: bde2020/hive:2.3.2-postgresql-metastore
    env_file:
      - ./hadoop-hive.env
    environment:
      HIVE_CORE_CONF_javax_jdo_option_ConnectionURL: "jdbc:postgresql://hive-metastore/metastore"
      SERVICE_PRECONDITION: "hive-metastore:9083"
    ports:
      - "10000:10000"
  hive-metastore:
    image: bde2020/hive:2.3.2-postgresql-metastore
    env_file:
      - ./hadoop-hive.env
    command: /opt/hive/bin/hive --service metastore
    environment:
      SERVICE_PRECONDITION: "namenode:50070 datanode:50075 hive-metastore-postgresql:5432"
    ports:
      - "9083:9083"
  hive-metastore-postgresql:
    image: bde2020/hive-metastore-postgresql:2.3.0

volumes:
  namenode:
  datanode:
</code></pre><p><a href="https://github.com/mesmacosta/docker-hive">Desde <strong><strong>docker-hive</strong></strong> GitHub</a></p><p>Nadie quiere leer un archivo de configuración <strong>ENORME</strong>, ¿verdad? Así que aquí hay una imagen:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screen-Shot-2020-06-21-at-2.48.18-PM.png" class="kg-image" alt="Screen-Shot-2020-06-21-at-2.48.18-PM" width="600" height="400" loading="lazy"></figure><p>¡Mucho mejor! Ahora vamos a poner en marcha esos contenedores:</p><pre><code class="language-bash">docker-compose up -d
</code></pre><p>Podemos ver 5 contenedores:</p><pre><code class="language-bash">$ docker ps --format \
"table {{.ID}}\t{{.Status}}\t{{.Names}}"

CONTAINER ID        STATUS                   NAMES
158741ba0339        Up 1 minutes             dockerhive_hive-metastore-postgresql
607b00c25f29        Up 1 minutes             dockerhive_namenode
2a2247e49046        Up 1 minutes             dockerhive_hive-metastore
7f653d83f5d0        Up 1 minutes (healthy)   dockerhive_hive-server
75000c343eb7        Up 1 minutes (healthy)   dockerhive_datanode</code></pre><p>A continuación vamos a comprobar nuestras redes Docker</p><pre><code class="language-bash">$ docker network ls

NETWORK ID          NAME                  DRIVER              SCOPE
c3cd46f397ce        bridge                bridge              local
9f6bc3c15568        docker-hive_default   bridge              local
ad4e4c24568e        host                  host                local
1c69593fc6ac        none                  null                local</code></pre><p>Un momento... ¡Hay una nueva red llamada <code>docker-hive_default</code>!</p><p>Por defecto, <code>docker compose</code> configura una sola red para su aplicación. Y la red de su aplicación recibe un nombre basado en el "nombre del proyecto", que se origina a partir del nombre del directorio en el que se encuentra.</p><p>Entonces, dado que nuestro directorio se llama <code>docker-hive</code>, esto explica la nueva red.</p><p>A continuación, algunos ejemplos sobre cómo obtener la dirección IP de Docker.</p><h2 id="como-obtener-la-direcci-n-ip-de-un-contenedor-docker-ejemplos"><strong>Como obtener la dirección IP de un contenedor Docker - ejemplos</strong><br></h2><p>Y ahora que tengo su atención, vamos a develar el misterio.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/06/bermuda-logged-out-1.png" class="kg-image" alt="drawing" width="600" height="400" loading="lazy"></figure><h3 id="1-usando-docker-inspect"><strong>1. Usando Docker Inspect</strong></h3><p><br><code>docker inspect</code> es una excelente manera de recuperar información de bajo nivel sobre los objetos de Docker. Puede seleccionar cualquier campo del JSON devuelto de una manera bastante sencilla.</p><p>Entonces, ¿lo usaremos para obtener la dirección IP de <code>dockerhive_datanode</code>?</p><pre><code class="language-bash">$ docker inspect -f \
'{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' \
75000c343eb7

172.18.0.5</code></pre><p>¿No dije que Docker usa la subred <strong>172.17.0.0/16</strong> predeterminada para las redes de contenedores? ¿Por qué la dirección IP devuelta: <strong>172.18.0.5</strong> está fuera de ella?</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screen-Shot-2020-06-22-at-3.25.07-PM.png" class="kg-image" alt="Screen-Shot-2020-06-22-at-3.25.07-PM" width="600" height="400" loading="lazy"><figcaption>Image created on <a href="https://tehnoblog.org/ip-tools/ip-address-in-cidr-range/" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 17.6px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">ip-address-in-cidr-range</a></figcaption></figure><p>Para responder eso tenemos que mirar nuestra configuración de red:</p><pre><code class="language-bash">$ docker network inspect -f \
'{{range .IPAM.Config}}{{.Subnet}}{{end}}'  9f6bc3c15568

172.18.0.0/16</code></pre><p>Ejecutamos este ejemplo en una Compute Engine VM y en esta prueba, a la red docker se le asignó una subred diferente: <strong>172.18.0.0/16</strong>. ¡Eso lo explica!</p><p>Además, también podemos buscar todas las direcciones IP dentro de la red <code>docker-hive_default</code>.</p><p>Por lo tanto, no necesitamos buscar la IP de cada contenedor individualmente:</p><pre><code class="language-bash">$ docker network inspect -f \
'{{json .Containers}}' 9f6bc3c15568 | \
jq '.[] | .Name + ":" + .IPv4Address'

"dockerhive_hive-metastore-postgresql:172.18.0.6/16"
"dockerhive_hive-metastore:172.18.0.2/16"
"dockerhive_namenode:172.18.0.3/16"
"dockerhive_datanode:172.18.0.5/16"
"dockerhive_hive-server:172.18.0.4/16"</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/06/cherry-success.png" class="kg-image" alt="drawing" width="600" height="400" loading="lazy"></figure><p>Si no se dio cuenta, usamos la ayuda de <a href="https://github.com/stedolan/jq"><strong><strong>jq</strong></strong></a> para analizar el objeto de mapa de los <code>Contenedores</code>.</p><h3 id="2-usando-docker-exec"><strong>2. Usando Docker exec</strong></h3><p>En el siguiente ejemplo trabajaremos con el <code>dockerhive_namenode</code>.</p><pre><code class="language-bash">$ docker exec dockerhive_namenode cat /etc/hosts

127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.18.0.3      607b00c25f29</code></pre><h3 id="3-dentro-del-contenedor-docker"><strong>3. Dentro del contenedor Docker</strong></h3><pre><code class="language-bash">$ docker exec -it dockerhive_namenode /bin/bash

# running inside the dockerhive_namenode container
ip -4 -o address

7: eth0    inet 172.18.0.3/16 brd 172.18.255.255 scope global eth0</code></pre><p>Incluso podemos encontrar direcciones IP de otros contenedores que están dentro de la misma red:</p><p><strong><strong>Data node</strong></strong></p><pre><code class="language-bash"># running inside the dockerhive_namenode container
ping dockerhive_datanode

PING dockerhive_datanode (172.18.0.5): 56 data bytes
64 bytes from 172.18.0.5: icmp_seq=0 ttl=64 time=0.092 ms</code></pre><p><strong><strong>Hive mestastore</strong></strong></p><pre><code class="language-bash"># running inside the dockerhive_namenode container
ping dockerhive_hive-metastore

PING dockerhive_hive-metastore_1 (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=0.087 ms</code></pre><p><strong><strong>Hive server</strong></strong></p><pre><code class="language-bash"># running inside the container
ping dockerhive_hive-server

PING dockerhive_hive-server (172.18.0.4): 56 data bytes
64 bytes from 172.18.0.4: icmp_seq=0 ttl=64 time=0.172 ms</code></pre><h2 id="tener-en-cuenta"><strong>Tener en cuenta</strong></h2><p>Todos los ejemplos se ejecutaron en una Compute Engine VM de distribución Linux. Si los ejecuta en entornos macOS o Windows, los comandos de muestra pueden cambiar un poco.</p><p>También tenga en cuenta que esas direcciones IP en los ejemplos dados son internas a la red de ejemplo <code>docker-hive_default</code>. Entonces, si necesita conectarse a esos contenedores externamente, necesitará usar la IP externa de la máquina host (suponiendo que está exponiendo los puertos de los contenedores correctamente).<br><br>O si está utilizando kubernetes, por ejemplo, para administrar sus contenedores Docker, deje que kubernetes maneje las direcciones IP por usted.</p><p><strong><strong>* </strong>Ilustraciones de<strong> <a href="https://icons8.com/">icons8.com</a> </strong>por<strong> <a href="https://dribbble.com/muratkalkavan">Murat Kalkavan</a>.</strong></strong></p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
