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ágenes que pueden ser compartidas a través de registros públicos como es el caso de Docker Hub para que mas gente pueda usar ese software.
Pongamos por caso que queremos instalar un CRM y que el desarrollador informa en su documentación que los requisitos mínimos de instalación son: una distribución de Linux basada en Debian, Apache 2 y PHP 7.2, además de MySQL en ese caso podemos o bien comprar un servidor, instalar una distribución de Linux apropiada, instalar y configurar Apache, instalar y configurar PHP, MySQL, etc, y comenzar a realizar tests antes de pasar a producción. O podemos instalar Docker en nuestro equipo y buscar en Docker Hub si existe una o varias imágenes que cumplan los requisitos. Además, 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.
¿Qué tiene que ver esto con Python?
En la página web de Docker Hub: https://hub.docker.com/_/python, hay disponible una imagen oficial de Python que podemos usar como base para nuestros desarrollos sin necesidad de instalar el interprete o módulo en nuestro equipo y además haciendo uso de los Tags de Docker podremos usar diferentes versiones del mismo.
Para probar esta versión en nuestro equipo lo primero que deberemos hacer es instalar la versión de Docker Desktop que corresponda a nuestro sistema operativo y que podremos encontrar aquí: https://www.docker.com/products/docker-desktop
Una vez instalada y en ejecución pasaremos con los comandos básicos para descargar y usar esta imagen.
Lo primero es descargar la imagen con el comando pull. Si no ponemos ningún tag tras el nombre de la imagen descargaremos automáticamente la que tiene el tag latest que se corresponde con la última versión de la imagen. En este caso descargamos la última versión dockerizada de Python usando el terminal o interprete de comandos y escribiendo lo siguiente:
docker pull python
Podemos comprobar que nuestra imagen se haya descargado correctamente usando el comando:
docker image ls
Tras la descarga usaremos el comando run de Docker para iniciar el contenedor. Si hubierais olvidado descargar la imagen, Docker haría un pull automático.
Haciendo uso de los parámetros -i para entrar en modo interactivo e interactuar con el contenedor y del parámetro -t para usar un pseudo terminal, seremos capaces de ver y usar desde nuestro terminal el interprete de Python. También usaremos el parámetro –rm para que nuestro contenedor se borre cuando salgamos del interprete con exit(), tened en cuenta que cualquier cambio en el contenedor se borrará con esto.
El comando para ejecutar Python sería este:
docker run -i -t --rm python
Esto es lo más básico que se puede hacer con esta imagen. Podríamos usar la imagen base de Python para crear otra con módulos instalados como Flask, Django, etc, pero esto lo dejaremos para otro artículo.