Instalar Jupyter Lab en Docker

En este post vamos a ver como instalar Jupyter Notebook en docker. Previamente tenemos que tener docker y docker-compose instalado.

El proyecto lo tenemos también en GitHub para que podáis hacer la descarga:

https://github.com/Pistatxos/jupyterDocker

Vamos a ver 2 pasos:

  • Método simple: Instalación y uso rápido.
  • Método personalizado: Añadimos propia contraseña e instalación de requirements previos para tener las librerías preinstaladas 😉

Instalando en docker simple:

docker run -d --name=jupyterlab -p 8888:8888 -v <ruta_local>:/home/jovyan/work jupyter/datascience-notebook

Instalando en docker-compose:

version: '3'
services:
  jupyterlab:
    image: jupyter/datascience-notebook
    container_name: jupyterlab
    ports:
      - 8888:8888
    volumes:
      - <ruta_local>:/home/jovyan/work

Instalando en docker-compose personalizado:

services:
  jupyterlab:
    build: ./infrastructure
    container_name: jupyterlab
    ports:
      - 8888:8888
    volumes:
      - ./datos:/home/jovyan/datos  # Monta el directorio de datos en un subdirectorio separado
    environment:
      - JUPYTER_ENABLE_LAB=yes
      - JUPYTER_TOKEN=AhB5ImyU2prh6vYJ5V1Kd # Token personalizado
      - variableEnv1=ejemplo1 # Variable de entorno extras ejemplo
    networks:
      - shared_network # Añadir vuestra red

networks:
  shared_network:
    external: true

¿Qué tenemos y necesitamos en el personalizado?

Añadimos una carpeta /datos para almacenar los notebook que queramos o archivos varios.
Añadimos una carpeta /infrastructure donde añadimos el Dockerfile y el requirements.txt

El Dockerfile que necesitamos añadir en la carpeta infrastructure:

# Usa la imagen base de Jupyter
FROM jupyter/datascience-notebook

# Establece el directorio de trabajo en el contenedor
WORKDIR /home/jovyan

# Copia el archivo requirements.txt al contenedor
COPY requirements.txt .

# Instala las dependencias desde el archivo requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

El requirements.txt, datos de ejemplo, esto ya es personal:

# Data Manipulation
pandas
numpy

# HTTP Requests
requests

# Visualization
matplotlib
plotly

# Database connection
SQLAlchemy
psycopg2-binary

Para arrancar el docker-compose:

docker-compose up (ejecuta desde la terminal y ves todos los LOG)
docker-compose up -d (para ejecutar en segundo plano sin terminal)

Acceso web

Una vez que arrancamos el docker podremos acceder via el puerto elegido, en este caso el 8888.
Desde el navegador podremos acceder tipo:

localhost:8888
ip_del_server:8888

Nos encontraremos con la ventana:

Como sabemos el token?

Si has puesto tu token (contraseña) personalizada es ponerla y a funcionar.
En caso de no haberla puesto podemos hacer lo siguiente:

  • Si has ejecutado desde la terminal y estás viendo los LOG podrás ver el token. Se introduce y a funcionar. Y si has puesto el token personalizado lo escribes directamente.
  • Si has ejecutado sin ver la terminal. Primero podemos buscar el contendor con el comando:
sudo docker ps

Esto nos mostrará todo lo que se está ejecutando. Del contenedor Jupyter copiaremos el ID y con los comandos:

sudo docker exec 161a3e50a416 jupyter server list
o bien
sudo docker logs nombre_contenedor

Nos devolverá una línea parecida a esta:

http://161a3e50a416:8888/?token=313497f807329bc1fa63a4ff4d63263a511352f42ea581a2 :: /home/jovyan

Introducimos el token y a funcionar!

Espero que os sea de ayuda.

Un saludo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *