{"id":289,"date":"2021-05-08T11:40:52","date_gmt":"2021-05-08T09:40:52","guid":{"rendered":"https:\/\/www.pythonparatodo.com\/?p=289"},"modified":"2021-05-08T11:50:01","modified_gmt":"2021-05-08T09:50:01","slug":"python-y-docker","status":"publish","type":"post","link":"https:\/\/www.pythonparatodo.com\/?p=289","title":{"rendered":"Python y Docker"},"content":{"rendered":"\n<p>Docker es una plataforma de software que usando contenedores posibilita empaquetar el software y sus dependencias de forma que se pueda usar de la misma forma en diferentes sistemas operativos. Estos contenedores son finalmente convertidos en im\u00e1genes que pueden ser compartidas a trav\u00e9s de registros p\u00fablicos como es el caso de Docker Hub para que mas gente pueda usar ese software.<\/p>\n\n\n\n<p>Pongamos por caso que queremos instalar un CRM y que el desarrollador informa en su documentaci\u00f3n que los requisitos m\u00ednimos de instalaci\u00f3n son: una distribuci\u00f3n de Linux basada en Debian, Apache 2 y PHP 7.2, adem\u00e1s de MySQL en ese caso podemos o bien comprar un servidor, instalar una distribuci\u00f3n de Linux apropiada, instalar y configurar Apache, instalar y configurar PHP, MySQL, etc, y comenzar a realizar tests antes de pasar a producci\u00f3n. O podemos instalar Docker en nuestro equipo y buscar en Docker Hub si existe una o varias im\u00e1genes que cumplan los requisitos. Adem\u00e1s, en caso de no encontrar exactamente lo que buscamos podemos tomar otra imagen como base para instalar y preparar un contenedor con el software y dependencias necesarias para convertirlo luego en nuestra imagen base para ese CRM.<\/p>\n\n\n\n<p>\u00bfQu\u00e9 tiene que ver esto con Python?<\/p>\n\n\n\n<p>En la p\u00e1gina web de Docker Hub:&nbsp;<a href=\"https:\/\/hub.docker.com\/_\/python\">https:\/\/hub.docker.com\/_\/python<\/a>, hay disponible una imagen oficial de Python que podemos usar como base para nuestros desarrollos sin necesidad de instalar el interprete o m\u00f3dulo en nuestro equipo y adem\u00e1s haciendo uso de los Tags de Docker podremos usar diferentes versiones del mismo.<\/p>\n\n\n\n<p>Para probar esta versi\u00f3n en nuestro equipo lo primero que deberemos hacer es instalar la versi\u00f3n de Docker Desktop que corresponda a nuestro sistema operativo y que podremos encontrar aqu\u00ed:&nbsp;<a href=\"https:\/\/www.docker.com\/products\/docker-desktop\">https:\/\/www.docker.com\/products\/docker-desktop<\/a><\/p>\n\n\n\n<p>Una vez instalada y en ejecuci\u00f3n pasaremos con los comandos b\u00e1sicos para descargar y usar esta imagen.<\/p>\n\n\n\n<p>Lo primero es descargar la imagen con el comando pull. Si no ponemos ning\u00fan tag tras el nombre de la imagen descargaremos autom\u00e1ticamente la que tiene el tag latest que se corresponde con la \u00faltima versi\u00f3n de la imagen. En este caso descargamos la \u00faltima versi\u00f3n dockerizada de Python usando el terminal o interprete de comandos y escribiendo lo siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">docker pull python<\/code><\/pre>\n\n\n\n<p>Podemos comprobar que nuestra imagen se haya descargado correctamente usando el comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">docker image ls<\/code><\/pre>\n\n\n\n<p>Tras la descarga usaremos el comando run de Docker para iniciar el contenedor. Si hubierais olvidado descargar la imagen, Docker har\u00eda un pull autom\u00e1tico.<\/p>\n\n\n\n<p>Haciendo uso de los par\u00e1metros -i para entrar en modo interactivo e interactuar con el contenedor y del par\u00e1metro -t para usar un pseudo terminal, seremos capaces de ver y usar desde nuestro terminal el interprete de Python. Tambi\u00e9n usaremos el par\u00e1metro &#8211;rm para que nuestro contenedor se borre cuando salgamos del interprete con exit(), tened en cuenta que cualquier cambio en el contenedor se borrar\u00e1 con esto.<\/p>\n\n\n\n<p>El comando para ejecutar Python ser\u00eda este:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">docker run -i -t --rm python<\/code><\/pre>\n\n\n\n<p>Esto es lo m\u00e1s b\u00e1sico que se puede hacer con esta imagen. Podr\u00edamos usar la imagen base de Python para crear otra con m\u00f3dulos instalados como Flask, Django, etc, pero esto lo dejaremos para otro art\u00edculo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Docker es una plataforma de software que usando contenedores posibilita empaquetar el software y sus dependencias de forma que se &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[125,4],"tags":[126,2],"class_list":["post-289","post","type-post","status-publish","format-standard","hentry","category-docker","category-python","tag-docker","tag-python"],"_links":{"self":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts\/289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=289"}],"version-history":[{"count":4,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts\/289\/revisions"}],"predecessor-version":[{"id":293,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts\/289\/revisions\/293"}],"wp:attachment":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}