Docker Containerization Guidelines#
Important
When the Docker Env
is ready to use, the details of which are available below,
click to continue to the quickstart section
Checking the build scikit-plots.
See also
π Docker Containerization#
π‘ Work on Docker Desktop or Github Codespaces
Hereβs how containerization works:
Isolation: Containers run independently of each other and the host system, ensuring that they donβt interfere with other applications or containers.
Portability: Since containers include everything the application needs to run, they can be moved between different environments (like from development to production) without any compatibility issues.
Efficiency: Containers are more lightweight than virtual machines (VMs) because they share the host OSβs kernel rather than running their own separate operating system. This makes them faster and more resource-efficient.
Consistency: The application inside the container runs the same way regardless of where itβs deployed, ensuring consistency across environments.
Github Codespaces Guide#
(Connect IDE Interface Vscode or Jupyter Notebook)
π (recommended) Choose (recommended) not (default) Option for best practise:
Step by step:



Docker Desktop Guide#
## Forked repo: https://github.com/scikit-plots/scikit-plots.git
git clone https://github.com/YOUR-USER-NAME/scikit-plots.git
cd scikit-plots/docker
## Use terminal or open to vscode to run ``docker compose``
code .
Docker Environment Setup for IDE (Vscode/Jupyter) and/or NVIDIA GPU driver
This repository contains Docker & Docker Compose configurations for running Jupyter Notebooks with optional NVIDIA GPU support.
You can run containers with either host-installed CUDA or pre-installed CUDA inside the container.
π·οΈ Docker Compose Quickstart Guide#
π‘ The easiest way to launch the environment is using Docker Compose.#
βΆοΈ Run Docker Env Jupyter Notebook (CPU only)
docker compose up --build notebook_cpu
βΆοΈ Run Docker Env Jupyter Notebook (With NVIDIA Host GPU)
docker compose up --build app_nvidia_host_gpu_driver
βΆοΈ Run Docker Env Jupyter Notebook (With NVIDIA Internal CUDA GPU)
docker compose up --build app_nvidia_internal_gpu_driver
βΆοΈ Run Docker Env Jupyter Notebook by VS Code#
βΆοΈ Connect Docker Container Especially When Docker-GUI dont available
#
# docker-compose up --build notebook_cpu
docker ps # check running containers
docker logs CONTAINER_ID_OR_NAME # find jupyter (token) http address 127.0....
docker exec -it CONTAINER_ID_OR_NAME bash # Connect interactive terminal
βΆοΈ Run setup_vscode_ext.sh#
## (Optionally) Install common vscode extensions
##β
C/C++/Python and Jupyter Notebook
##β
Linter and Formatter
bash docker/script/setup_vscode_ext.sh # (not needed every time)
βΆοΈ Run post_create_commands.sh#
βSee Also: first-run-notice.txtβ
first-run-notice.txt#
π Welcome to `scikit-plots` in GitHub Codespaces!
π To explore VS Code to its fullest, search using the Command Palette (Cmd/Ctrl + Shift + P or F1).
βΉοΈ Look at https://scikit-plots.github.io/dev/introduction/quick_start.html
for more contribution details https://scikit-plots.github.io/dev/devel/index.html.
ββ ===================================== IMPORTANT!! ===================================== ββ
To complete setup of your development environment to run the following script in the terminal:
##π½ (Optionally) Memory size: df -h && du -h --max-depth=1
##π οΈ (recommended) Apply in bash `setup_conda_env_create.sh` `post_create_commands.sh`
## π Some steps can be skipped when container creation due to storage size limitations
## β οΈ `ERROR: ... : No space left on device`
##β
directories to mark as safe like ( git config --global --add safe.directory '*' )
##β
fetching submodules ( git submodule update --init )
##β
add remote upstream ( git remote add upstream https://github.com/scikit-plots/scikit-plots.git )
##β
fetch tags from upstream ( git fetch upstream --tags )
##β
create a new environment with python 3.11 ( mamba create -n "py311" python=3.11 ipykernel -y )
##β
install required packages ( pip install -r ./requirements/all.txt )
##β
install pre-commit hooks ( pre-commit install )
##β
install the development version of scikit-plots ( pip install --no-build-isolation --no-cache-dir -e . )
bash ".devcontainer/script/post_create_commands.sh" # (not needed every time)
##π Open to new terminal mamba (or conda)
conda init
conda info -e
# (DevContainer) mamba activate /workspaces/scikit-plots/venv
mamba activate py311
mamba activate base
##β
Checking the build without root
bash -c "cd ~ && python -c 'import scikitplot; scikitplot.show_config()'"
##β
Install tensorflow-cpu, if needed
pip install -r ./requirements/all.txt
pip install -r ./requirements/cpu.txt
##β Continue to creating a branch
##π Read more at: https://scikit-plots.github.io/dev/devel/quickstart_contributing.html#creating-a-branch
ββ ========================================================================================= ββ
π― Stop Containers#
docker compose down
π³ Docker Compose Configuration#
This project is based on Docker Compose and includes multiple services:
πΉ notebook_cpu (CPU-Only)
Runs Jupyter Notebook using jupyter/tensorflow-notebook:latest
No CUDA support, best for lightweight tasks
Mounts the local folder scikit-plots to /home/jovyan/work
Runs on port 8888
πΉ app_nvidia_host_gpu_driver (Uses Host CUDA)
Runs Jupyter Notebook using jupyter/tensorflow-notebook:latest
Uses host-installed CUDA for GPU acceleration
Requires NVIDIA runtime enabled (βruntime=nvidia)
Runs on port 8889
πΉ app_nvidia_internal_gpu_driver (CUDA Inside Container)
Runs nvidia/cuda:12.6.3-cudnn-runtime-ubuntu24.04 with pre-installed CUDA
Includes NVIDIA GPU support without needing host CUDA
Requires NVIDIA runtime (βruntime=nvidia)
Runs on port 8890
π οΈ Custom Docker Commands#
If you need more control, you can use Docker CLI commands.
βΆοΈ Build & Run the Container Manually
docker build -t my-custom-container -f docker/Dockerfile .
docker run -it --rm -p 8888:8888 my-custom-container
βΆοΈ Check GPU Availability Inside Container
docker exec -it <container_id> nvidia-smi
π Folder Structure#
docker/
βββ docker-compose.yml # Primary Docker Compose file
βββ docker-compose.override.yml # Optional override file (auto-included if present)
βββ Dockerfile # Custom Dockerfile
βββ script/
β βββ install_gpu_nvidia_cuda.sh # GPU setup script
π₯οΈ Useful References#
π Jupyter Docker Stacks: Read the Docs
π Docker Compose: Official Docs
π Dockerfile Best Practices
π LocalStack Installation with Docker Compose
π NVIDIA CUDA in Containers: NVIDIA Docs

π Now youβre ready to run Jupyter notebooks in Docker! π