Construyendo y corriendo imagenes Docker en local.#
Dockerfile.PythonMin#
Imagen mínima de Python 3.12 para entornos ligeros sin paquetes adicionales. Esta imagen se utiliza cuando se requiere un entorno base de Python sin dependencias extras, ideal para ejecutar scripts o aplicaciones simples de manera eficiente sin sobrecargar el contenedor.
FROM python:3.12
CMD ["/bin/bash"]
Ejecutar y Crear el Contenedor#
Estando en la carpeta padre del proyecto:
Linux/MacOS#
Construir la imagen de Docker:
docker build -t python3.12 -f ./curso-introduccion/docker-files/Dockerfile.PythonMin .
Ejecutar el contenedor montando la carpeta actual como volumen:
docker run -it --rm -v "$(pwd)":/$(basename "$(pwd)") -w /$(basename "$(pwd)") python3.12:latest
Windows#
Construir la imagen de Docker:
docker build -t python3.12 -f .\curso-introduccion\docker-files\Dockerfile.PythonMin .
Ejecutar el contenedor montando la carpeta actual como volumen:
docker run -it --rm -v "${PWD}:/$(Split-Path -Leaf $PWD)" -w "/$(Split-Path -Leaf $PWD)" python3.12:latest
O en una línea más legible usando el caracter de continuación ` :
docker run -it --rm ` -v "${PWD}:/$(Split-Path -Leaf $PWD)" ` -w "/$(Split-Path -Leaf $PWD)" ` python3.12:latest
Dockerfile.CondaCode#
Imagen completa basada en Miniconda con VS Code Server, pensada para entornos de desarrollo avanzados.
Esta imagen utiliza Miniconda como base para una gestión eficiente de paquetes, incluye VS Code Server para brindar una experiencia de desarrollo completa. Ideal para proyectos que requieren múltiples herramientas integradas.
# Imagen base utilizando continuumio/miniconda3, con Conda preinstalado
FROM continuumio/miniconda3
# Instalar utilidades necesarias y Node.js
RUN apt-get update && apt-get install -y --no-install-recommends \
bash \
curl \
git \
wget \
sudo \
ca-certificates \
make \
libnss3 \
&& curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get update && apt-get install -y --no-install-recommends nodejs \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& curl -fsSL https://code-server.dev/install.sh | bash
# Verificar Node.js y npm
RUN node -v && npm -v
# Instalar extensiones de VS Code (code-server) para Python y Jupyter, junto con sus helpers y Git Graph
RUN code-server --install-extension ms-python.python \
&& code-server --install-extension ms-toolsai.jupyter \
&& code-server --install-extension ms-toolsai.jupyter-keymap \
&& code-server --install-extension ms-toolsai.jupyter-renderers \
&& code-server --install-extension mhutchie.git-graph
# Configurar tema oscuro por defecto en VS Code
RUN mkdir -p ~/.local/share/code-server/User && \
echo '{"workbench.colorTheme": "Default Dark+", "jupyter.alwaysTrustNotebooks": true}' > ~/.local/share/code-server/User/settings.json
# Configuración de git
RUN git config --system core.sshCommand "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
&& git config --system --add safe.directory "*"
# Exponer puerto 8080 para code-server
EXPOSE 8080
# CMD para iniciar Vs-Code-Server
CMD ["/bin/bash", "-c", "source /etc/profile && source ~/.bashrc && \
code-server --bind-addr 0.0.0.0:8080 --auth none --disable-telemetry & \
exec bash"]
FROM continuumio/miniconda3
Usa la imagen oficial de Miniconda como base, que ya incluye Conda preinstalado.Instalar utilidades necesarias y Node.js
Instala herramientas esenciales como Git, cURL, wget, así como Node.js para desarrollo web.Configuración de seguridad Git
Configura Git para ignorar verificaciones de hosts SSH y marcar todos los directorios como seguros, evitando problemas de permisos.Instalar Code-Server (VS Code Server)
Instala VS Code Server para desarrollo en navegador.Exponer puertos y definir CMD
Expone el puerto 8080 (VS Code) e inicia el servicio.
Ejecutar y Crear el Contenedor#
Estando en la carpeta padre del proyecto:
Linux/MacOS#
Construir la imagen de Docker:
docker build -t conda-vscode -f ./curso-introduccion/docker-files/Dockerfile.CondaCode .
Ejecutar el contenedor montando la carpeta actual como volumen:
docker run -it --rm -p 8080:8080 -v "$(pwd)":/$(basename "$(pwd)") -w /$(basename "$(pwd)") conda-vscode:latest
Visita VScode para desarrollar o Jupyterlab
Luego visita para
VScode
:http://127.0.0.1:8080/?folder=/desarrollo-analitico-oic
Windows#
Construir la imagen de Docker:
docker build -t conda-vscode -f .\curso-introduccion\docker-files\Dockerfile.CondaCode .
Ejecutar el contenedor montando la carpeta actual como volumen:
docker run -it --rm ` -p 8080:8080 ` -v "${PWD}:/$(Split-Path -Leaf $PWD)" ` -w "/$(Split-Path -Leaf $PWD)" ` conda-vscode:latest
Visita VScode para desarrollar o Jupyterlab
Luego visita:
http://127.0.0.1:8080/?folder=/desarrollo-analitico-oic
Dockerfile.PoetryCode#
Imagen ligera con Python 3.12 y VS Code Server, enfocada en proporcionar un entorno de desarrollo remoto a través del navegador.
# Imagen base de Python 3.12
FROM python:3.12
# Instalar utilidades necesarias y Node.js
RUN apt-get update && apt-get install -y --no-install-recommends \
bash \
curl \
git \
wget \
sudo \
ca-certificates \
make \
libnss3 \
&& curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get install -y --no-install-recommends nodejs \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& curl -fsSL https://code-server.dev/install.sh | bash
# Verificar Node.js y npm
RUN node -v && npm -v
# Instalar paquetes Python necesarios para notebooks en VS-Code
RUN pip install --no-cache-dir --upgrade pip \
&& pip install --no-cache-dir poetry
# Instalar extensiones de VS Code (code-server) para Python, Jupyter y Git Graph
RUN code-server --install-extension ms-python.python \
&& code-server --install-extension ms-toolsai.jupyter \
&& code-server --install-extension ms-toolsai.jupyter-keymap \
&& code-server --install-extension ms-toolsai.jupyter-renderers \
&& code-server --install-extension mhutchie.git-graph
# Configurar tema oscuro por defecto en VS Code
RUN mkdir -p ~/.local/share/code-server/User && \
echo '{"workbench.colorTheme": "Default Dark+", "jupyter.alwaysTrustNotebooks": true}' > ~/.local/share/code-server/User/settings.json
# Configuración de git
RUN git config --system core.sshCommand "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
&& git config --system --add safe.directory "*"
# Exponer puerto 8080 para code-server.
EXPOSE 8080
# 7. CMD para iniciar Code-Server y un servidor de notebooks en segundo plano
CMD ["/bin/bash", "-c", "source /etc/profile && source ~/.bashrc && \
code-server --bind-addr 0.0.0.0:8080 --auth none --disable-telemetry & \
exec bash"]
Instalar utilidades necesarias
Instala herramientas básicas de desarrollo y sistema.Instalar paquetes Python para notebooks
Configura los paquetes mínimos necesarios para trabajar con notebooks en VS Code.Instalar Code-Server y extensión Jupyter
Instala VS Code Server y la extensión para trabajar con notebooks Jupyter.CMD para iniciar Code-Server
Inicia VS Code Server en el puerto 8080 sin autenticación.
Ejecutar y Crear el Contenedor#
Estando en la carpeta padre del proyecto:
Linux/MacOS#
Construir la imagen de Docker:
docker build -t python3.12-poetry-vscode -f ./curso-introduccion/docker-files/Dockerfile.PoetryCode .
Ejecutar el contenedor montando la carpeta actual como volumen:
docker run -it --rm -p 8080:8080 -v "$(pwd)":/$(basename "$(pwd)") -w /$(basename "$(pwd)") python3.12-poetry-vscode
Acceder a VS Code Server:
http://localhost:8080/?folder=/desarrollo-analitico-oic
Windows#
Construir la imagen de Docker:
docker build -t python3.12-poetry-vscode -f .\curso-introduccion\docker-files\Dockerfile.PoetryCode .
Ejecutar el contenedor montando la carpeta actual como volumen:
docker run -it --rm ` -p 8080:8080 ` -v "${PWD}:/$(Split-Path -Leaf $PWD)" ` -w "/$(Split-Path -Leaf $PWD)" ` python3.12-poetry-vscode
Acceder a VS Code Server:
http://localhost:8080/?folder=/desarrollo-analitico-oic
Publicar la Imagen en Docker Hub#
Para publicar las imágenes en Docker Hub, sigue estos pasos:
Inicia sesión en Docker Hub:
docker login
Ingresa tu nombre de usuario y contraseña cuando se solicite.
Etiquetar las imágenes Para subir una imagen a tu repositorio en Docker Hub, primero debes etiquetarla con tu nombre de usuario:
Para PythonMin:
docker tag python3.12 tu-usuario-dockerhub/nombre-asignado:python3.12
Para CondaCode:
docker tag conda-vscode tu-usuario-dockerhub/nombre-asignado:conda-vscode
Para Poetry:
docker tag python3.12-poetry-vscode tu-usuario-dockerhub/nombre-asignado:python3.12-poetry-vscode
Subir las imágenes a Docker Hub Una vez etiquetadas, puedes subirlas a Docker Hub:
Para PythonMin:
docker push tu-usuario-dockerhub/nombre-asignado:python3.12
Para CondaCode:
docker push tu-usuario-dockerhub/nombre-asignado:conda-vscode
Para Poetry:
docker push tu-usuario-dockerhub/nombre-asignado:python3.12-poetry-vscode
Descargar y utilizar imágenes desde Docker Hub Para descargar y usar una imagen publicada:
docker pull tu-usuario-dockerhub/nombre-asignado:conda-vscode
Para Linux:
docker run -it --rm -p 8888:8888 -p 8080:8080 -v "$(pwd):/workspace" -w "/workspace" tu-usuario-dockerhub/nombre-asignado:conda-vscode
Para Windows:
docker run -it --rm -p 8888:8888 -p 8080:8080 -v "${PWD}:/workspace" -w "/workspace" tu-usuario-dockerhub/nombre-asignado:conda-vscode
Asegúrate de reemplazar
tu-usuario-dockerhub
con tu nombre de usuario en Docker Hub si estás subiendo tus propias imágenes.Explicación de los parámetros
-it
: Permite la interacción con el contenedor.--rm
: Elimina el contenedor al detenerse.-p 8888:8888
: Mapea el puerto 8888 para JupyterLab.-p 8080:8080
: Mapea el puerto 8080 para VS Code Server.-v "$(pwd):/workspace"
: Monta el directorio actual en el contenedor como/workspace
.-w "/workspace"
: Define/workspace
como el directorio de trabajo.Una vez ejecutado el contenedor, puedes acceder a:
JupyterLab:
http://localhost:8888
VS Code Server:
http://localhost:8080