{"id":37,"date":"2024-02-29T17:42:02","date_gmt":"2024-02-29T17:42:02","guid":{"rendered":"https:\/\/pablomedrano.dev\/?p=37"},"modified":"2024-03-01T16:08:27","modified_gmt":"2024-03-01T16:08:27","slug":"test-2","status":"publish","type":"post","link":"https:\/\/pablomedrano.dev\/?p=37","title":{"rendered":"Introducci\u00f3n a Docker"},"content":{"rendered":"\n<p>Docker es una plataforma de c\u00f3digo abierto que facilita la creaci\u00f3n, implementaci\u00f3n y administraci\u00f3n de aplicaciones en contenedores. Los contenedores permiten empaquetar una aplicaci\u00f3n y todas sus dependencias en una \u00fanica unidad port\u00e1til, lo que garantiza que la aplicaci\u00f3n se ejecute de la misma manera en cualquier entorno.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Contenedores vs M\u00e1quinas virtuales<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Contenedores:<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Los contenedores usan el kernel del sistema operativo host, solo se virtualiza el sistema operativo<\/li>\n\n\n\n<li>Usa pocos recursos del equipo host<\/li>\n\n\n\n<li>Solo podemos crear contenedores con kernel basado en GNU\/LINUX<\/li>\n\n\n\n<li>Al eliminarlo se borran todos los archivos que contenia<\/li>\n\n\n\n<li>Para persistir data usamos los Vol\u00famenes<\/li>\n\n\n\n<li>Capacidades avanzadas de redes LV2, LV3<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">M\u00e1quinas Virtuales:<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Se virtualiza el hardware<\/li>\n\n\n\n<li>Se usan hipervisores (VMware, Virtual Box, KVM, Gnome boxes, Microsoft Virtual PC)<\/li>\n\n\n\n<li>Son pesadas (ocupan mucho espacio)<\/li>\n\n\n\n<li>Reservan el hardware del equipo host (el host no puede utilizarlos)<\/li>\n\n\n\n<li>Tipos de redes: NAT, BRIDGE<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"428\" src=\"https:\/\/pablomedrano.dev\/wp-content\/uploads\/2024\/03\/containers_vs_virtual_machines-1024x428.png\" alt=\"\" class=\"wp-image-156\" srcset=\"https:\/\/pablomedrano.dev\/wp-content\/uploads\/2024\/03\/containers_vs_virtual_machines-1024x428.png 1024w, https:\/\/pablomedrano.dev\/wp-content\/uploads\/2024\/03\/containers_vs_virtual_machines-300x125.png 300w, https:\/\/pablomedrano.dev\/wp-content\/uploads\/2024\/03\/containers_vs_virtual_machines-768x321.png 768w, https:\/\/pablomedrano.dev\/wp-content\/uploads\/2024\/03\/containers_vs_virtual_machines-1536x642.png 1536w, https:\/\/pablomedrano.dev\/wp-content\/uploads\/2024\/03\/containers_vs_virtual_machines.png 1688w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Instalaci\u00f3n de Docker<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Instalar Docker Desktop<\/strong>: Visita el sitio web oficial de Docker Desktop (<a href=\"https:\/\/www.docker.com\/products\/docker-desktop\/\">https:\/\/www.docker.com\/products\/docker-desktop\/<\/a>) y sigue las instrucciones de instalaci\u00f3n para tu sistema operativo.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Uso b\u00e1sico de Docker<\/h3>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"font-size:14px\">\n<p class=\"has-medium-font-size\"><strong>Ejecuci\u00f3n de Contenedores<\/strong><\/p>\n\n\n\n<p><strong>Ejecutar un contenedor:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker run IMAGE:tag\ndocker run nginx\ndocker run node:latest\n<\/pre><\/div>\n\n\n<p><strong>Ejecutar un contenedor<\/strong> <strong> y darle un nombre<\/strong>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker run --name CONTAINER IMAGE\ndocker run --name webserver nginx\n<\/pre><\/div>\n\n\n<p><strong>Mapear un puerto<\/strong>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker run -p HOSTPORT: CONTAINERPORT IMAGE\ndocker run -p 8080:80 nginx\n<\/pre><\/div>\n\n\n<p><strong>Mapear todos los puertos<\/strong>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker run -P IMAGE\ndocker run -P nginx\n<\/pre><\/div>\n\n\n<p><strong>Ejecutar un contenedor en background:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\ndocker run -d IMAGE docker run -d nginx\n<\/pre><\/div>\n\n\n<p><strong>Asignar un hostname:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker run --hostname HOSTNAME IMAGE\ndocker run --hostname srv nginx\n<\/pre><\/div>\n\n\n<p><strong>Mapear un directorio local dentro del contenedor:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker run -v HOSTDIR: TARGETDIR IMAGE\ndocker run -v ~\/mydir:\/usr\/share\/nginx\/html nginx\n<\/pre><\/div>\n\n\n<p><strong>Definir Variables de Entorno<\/strong>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker run -e ENV_VAR=value IMAGE\ndocker run -e POSTGRES_PASSWORD=passsword postgres\n<\/pre><\/div>\n\n\n<p><strong>Ejecutar un contenedor interactivo:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker run -it ubuntu\n<\/pre><\/div>\n\n\n<p><strong>Detener un contenedor en ejecuci\u00f3n:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker stop &lt;ID del contenedor o nombre&gt;\n<\/pre><\/div>\n\n\n<p><strong>Ejecutar un contenedor detenido:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker start &lt;ID del contenedor o nombre&gt;\n<\/pre><\/div>\n\n\n<p><strong>Ejecutar una Terminal dentro de un contenedor:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\ndocker exec -it CONTAINER EXECUTABLE\ndocker exec -it webserver bash\n<\/pre><\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"font-size:14px\">\n<p class=\"has-medium-font-size\"><strong>Administraci\u00f3n de Contenedores<\/strong><\/p>\n\n\n\n<p><strong>Eliminar un contenedor<\/strong>: <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker rm &lt;ID del contenedor o nombre&gt;\n<\/pre><\/div>\n\n\n<p><strong>Listar contenedores en ejecuci\u00f3n<\/strong>: <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker ps\n<\/pre><\/div>\n\n\n<p><strong>Listar todos los contenedores<\/strong>: (incluso los detenidos), <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker ps -a\n<\/pre><\/div>\n\n\n<p><strong>Descargar una imagen: <\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker pull IMAGE:TAG\ndocker pull ubuntu\ndocker pull ubuntu:18.04\n<\/pre><\/div>\n\n\n<p><strong>Subir una imagen a un repositorio: <\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker push IMAGE\ndocker push myimage:1.0\n<\/pre><\/div>\n\n\n<p><strong>Eliminar una imagen: <\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker rmi IMAGE\n<\/pre><\/div>\n\n\n<p><strong>Mostrar una lista de todas las im\u00e1genes: <\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker images\n<\/pre><\/div>\n\n\n<p><strong>Eliminar im\u00e1genes: <\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker image prune\n<\/pre><\/div>\n\n\n<p><strong>Eliminar todas las im\u00e1genes no utilizadas: <\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker image prune -a\n<\/pre><\/div>\n\n\n<p><strong>Construir una imagen desde un Dockerfile: <\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker build DIRECTORIO \ndocker build .\n<\/pre><\/div>\n\n\n<p><strong>Etiquetar una imagen:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker tag IMAGEN NUEVA_IMAGEN\ndocker tag ubuntu ubuntu:18.04\n<\/pre><\/div>\n\n\n<p><strong>Construir y etiquetar una imagen desde un Dockerfile: <\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker build -t IMAGEN DIRECTORIO \ndocker build -t myimage .\n<\/pre><\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\" style=\"font-size:14px\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-medium-font-size\"><strong>Administraci\u00f3n de Redes<\/strong><\/p>\n\n\n\n<p><strong>Listar todas las redes: <\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker network ls\n<\/pre><\/div>\n\n\n<p><strong>Crear una red Bridge (default driver):<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker network create NETWORK\ndocker network create atitlan\n<\/pre><\/div>\n\n\n<p><strong>Eliminar una red:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker network rm NETWORK\u00a0\ndocker network rm atitlan\n<\/pre><\/div>\n\n\n<p><strong>Obtener informaci\u00f3n detallada de una red:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker network inspect NETWORK\ndocker network inspect atitlan\n<\/pre><\/div>\n\n\n<p><strong>Mostrar los puertos mapeados de un contenedor:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker port CONTAINER\ndocker port web\n<\/pre><\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-medium-font-size\"><strong>Administraci\u00f3n de Vol\u00famenes<\/strong><\/p>\n\n\n\n<p><strong>Listar todos los vol\u00famenes:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker volume ls\n<\/pre><\/div>\n\n\n<p><strong>Crear un volumen:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker volume create VOLUME\ndocker volume create fuego\n<\/pre><\/div>\n\n\n<p><strong>Eliminar un volumen:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker volume rm VOLUME\ndocker volume rm fuego\n<\/pre><\/div>\n\n\n<p><strong>Obtener informaci\u00f3n detallada de un volumen:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\ndocker volume inspect VOLUME\ndocker volume inspect fuego\n<\/pre><\/div>\n\n\n<p><strong>Remover todos los vol\u00famenes sin usar:&nbsp;<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker volume prune\n<\/pre><\/div><\/div>\n<\/div>\n\n\n\n<p><strong>Docker Cheat Sheet PDF:<\/strong><\/p>\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/pablomedrano.dev\/wp-content\/uploads\/2024\/03\/Docker_Cheat_Sheet_V2-1.pdf\" type=\"application\/pdf\" style=\"width:100%;height:600px\" aria-label=\"Embed of Docker_Cheat_Sheet_V2-1.\"><\/object><a id=\"wp-block-file--media-9b21d5d4-403d-45ae-918e-f72fc7e5cb14\" href=\"https:\/\/pablomedrano.dev\/wp-content\/uploads\/2024\/03\/Docker_Cheat_Sheet_V2-1.pdf\">Docker_Cheat_Sheet_V2-1<\/a><a href=\"https:\/\/pablomedrano.dev\/wp-content\/uploads\/2024\/03\/Docker_Cheat_Sheet_V2-1.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-9b21d5d4-403d-45ae-918e-f72fc7e5cb14\">Download<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Docker es una plataforma de c\u00f3digo abierto que facilita la creaci\u00f3n, implementaci\u00f3n y administraci\u00f3n de aplicaciones en contenedores. Los contenedores permiten empaquetar una aplicaci\u00f3n y todas sus dependencias en una \u00fanica unidad port\u00e1til, lo que garantiza que la aplicaci\u00f3n se ejecute de la misma manera en cualquier entorno. Contenedores vs M\u00e1quinas virtuales Contenedores: M\u00e1quinas Virtuales: &#8230; <a title=\"Introducci\u00f3n a Docker\" class=\"read-more\" href=\"https:\/\/pablomedrano.dev\/?p=37\" aria-label=\"Read more about Introducci\u00f3n a Docker\">Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[4,6,5],"class_list":["post-37","post","type-post","status-publish","format-standard","hentry","category-software-development","tag-docker","tag-docker-course","tag-docker-desktop"],"_links":{"self":[{"href":"https:\/\/pablomedrano.dev\/index.php?rest_route=\/wp\/v2\/posts\/37","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pablomedrano.dev\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pablomedrano.dev\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pablomedrano.dev\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/pablomedrano.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=37"}],"version-history":[{"count":37,"href":"https:\/\/pablomedrano.dev\/index.php?rest_route=\/wp\/v2\/posts\/37\/revisions"}],"predecessor-version":[{"id":159,"href":"https:\/\/pablomedrano.dev\/index.php?rest_route=\/wp\/v2\/posts\/37\/revisions\/159"}],"wp:attachment":[{"href":"https:\/\/pablomedrano.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=37"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pablomedrano.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=37"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pablomedrano.dev\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=37"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}