ILUM Sparkmagic: Jupyter for remote Spark development (Livy, SSH, AI-powered)
10K+
Enhanced Jupyter environment with Sparkmagic, remote Spark execution, SSH access, and AI-powered assistance.
ilum/sparkmagic is Ilum's production-hardened Jupyter environment built on sparkmagic, enabling interactive Spark development through Apache Livy or Ilum Core. This distribution includes significant enhancements for enterprise use: integrated SSH server for VS Code Remote, Jupyter AI for LLM-powered coding assistance, and seamless Ilum platform integration.
# Standard run (SSH disabled by default)
docker run -d \
--name ilum-jupyter \
-p 8888:8888 \
ilum/sparkmagic:<version>
# Access Jupyter at http://localhost:8888
Note: SSH access is disabled by default. See the Integrated SSH Server section for configuration instructions.
Note: For production deployments, use the official Ilum Jupyter Helm Chart.
<version>: Sparkmagic + JupyterLab 4.4.10 + Jupyter AI + SSH serverEnable SSH access for seamless VS Code Remote development:
docker run -e SSH_ENABLED=true -p 2222:2222 ilum/sparkmagic:<version>
Mount SSH keys via volume or Kubernetes Secret for authentication.
Pre-installed LLM providers for AI-assisted coding:
Access via JupyterLab AI chat interface.
All Spark sessions automatically include spark.ilum.source=jupyter for origin tracking and analytics.
UI checkbox in session creation widget for spark.ilum.autopause — automatically pause idle Spark sessions to save resources.
Custom CSP header (frame-ancestors *) enables embedding in external dashboards and portals.
Default Livy endpoint pre-configured to http://ilum-core:9888 for immediate use in Ilum deployments.
| Variable | Default | Description |
|---|---|---|
| JUPYTER_ENABLE_LAB | yes | Start JupyterLab (not classic Notebook) |
| JUPYTER_TOKEN | - | Access token (leave empty for auto-generated) |
| Variable | Default | Description |
|---|---|---|
| SSH_ENABLED | false | Enable SSH server on port 2222 |
| Variable | Description |
|---|---|
| ANTHROPIC_API_KEY | Anthropic Claude API key |
| AWS_ACCESS_KEY_ID | AWS Bedrock credentials |
| GOOGLE_API_KEY | Google Generative AI key |
| OPENAI_API_KEY | OpenAI API key |
| Container Path | Purpose |
|---|---|
/home/jovyan/work | Notebooks and data files |
/home/jovyan/.ssh | SSH keys and config (when SSH_ENABLED=true) |
/home/jovyan/.sparkmagic | Sparkmagic configuration |
# docker-compose example
volumes:
- ./notebooks:/home/jovyan/work
- ~/.ssh/authorized_keys:/home/jovyan/.ssh/authorized_keys:ro
| Port | Service |
|---|---|
8888 | JupyterLab web interface |
2222 | SSH server (when SSH_ENABLED=true) |
The image runs as user jovyan (UID 1000, non-root). Ensure mounted volumes have appropriate permissions:
# On host
sudo chown -R 1000:100 ./notebooks
IMPORTANT:
For SSH access, mount authorized_keys as read-only:
volumes:
- ~/.ssh/authorized_keys:/home/jovyan/.ssh/authorized_keys:ro
In Kubernetes, use a Secret:
volumes:
- name: ssh-keys
secret:
secretName: jupyter-ssh-keys
defaultMode: 0600
CAUTION: Never pass API keys directly in environment variables in production!
Use Kubernetes Secrets:
env:
- name: OPENAI_API_KEY
valueFrom:
secretKeyRef:
name: jupyter-ai-secrets
key: openai-api-key
Before production deployment, scan the image:
# Trivy
trivy image ilum/sparkmagic:<version>
Run command from the root of the sparkmagic repository:
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t ilum/sparkmagic:<version> \
-f docker/Dockerfile-jupyter \
--push .
dive ilum/sparkmagic:<version>
# Syft
syft ilum/sparkmagic:<version> -o spdx-json > sbom.json
base-notebook:hub-5.2.1 (Ubuntu-based)jovyan (UID 1000)Content type
Image
Digest
sha256:05e946bdd…
Size
617.8 MB
Last updated
3 months ago
docker pull ilum/sparkmagic:0.23.5