(GPU accelerated) Multi-arch (linux/amd64
, linux/arm64/v8
) Data Science
dev containers:
Dev containers considered stable for
Parent images
Extended to match the (CUDA-based) JupyterLab docker stacks, except that
* **JupyterLab**: A web-based interactive development environment for Jupyter notebooks, code, and data. * **Git**: A distributed version-control system for tracking changes in source code. * **Git LFS**: A Git extension for versioning large files. * **GRASS GIS**: A free and open source Geographic Information System (GIS). :information_source: R qgisprocess image * **Orfeo Toolbox**: An open-source project for state-of-the-art remote sensing. :information_source: R qgisprocess image (amd64 only) * **Julia**[^1]: A high-level, high-performance dynamic language for technical computing. * **Mojo**[^1]: A programming language for AI developers. * **Pandoc**: A universal markup converter. * **Python**: An interpreted, object-oriented, high-level programming language with dynamic semantics. * **QGIS**: A free, open source, cross platform (lin/win/mac) geographical information system (GIS). :information_source: R qgisprocess image * **Quarto**: A scientific and technical publishing system built on Pandoc. :information_source: Julia pubtools, Mojo/Python scipy, R verse+ images * **R**[^1]: A language and environment for statistical computing and graphics. * **SAGA GIS**: A Geographic Information System (GIS) software with immense capabilities for geodata processing and analysis. :information_source: R qgisprocess image * **TinyTeX**: A lightweight, cross-platform, portable, and easy-to-maintain LaTeX distribution based on TeX Live. :information_source: Julia pubtools, Mojo/Python scipy, R verse+ images * **Zsh**: A shell designed for interactive use, although it is also a powerful scripting language.
:point_right: See the Version Matrices for detailed information:
* [.gitignore Generator](https://marketplace.visualstudio.com/items?itemName=piotrpalarz.vscode-gitignore-generator) * [Black Formatter](https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter) * [Docker](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker) * [EditorConfig for VS Code](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) * [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) * [Git Graph](https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph) * [GitHub Pull Requests and Issues](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github) * [GitLab Workflow](https://marketplace.visualstudio.com/items?itemName=GitLab.gitlab-workflow) * [GitLens — Git supercharged](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) :information_source: Pinned to version 11.7.0 due to unsolicited AI content * [Excel Viewer](https://marketplace.visualstudio.com/items?itemName=GrapeCity.gc-excelviewer) * [hadolint](https://marketplace.visualstudio.com/items?itemName=exiasr.hadolint) * [Julia](https://marketplace.visualstudio.com/items?itemName=julialang.language-julia)[^1] * [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) * [LaTeX Workshop](https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop) :information_source: Julia pubtools, Mojo/Python scipy, R verse+ images * [markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint) * [Mojo](https://marketplace.visualstudio.com/items?itemName=modular-mojotools.vscode-mojo)[^1] * [Path Intellisense](https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense) * [Prettier - Code formatter](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) * [Project Manager](https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager) * [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) * [Quarto](https://marketplace.visualstudio.com/items?itemName=quarto.quarto) :information_source: Julia pubtools, Mojo/Python scipy, R verse+ images * [R](https://marketplace.visualstudio.com/items?itemName=REditorSupport.r)[^1] * [Resource Monitor](https://marketplace.visualstudio.com/items?itemName=mutantdino.resourcemonitor) * [ShellCheck](https://marketplace.visualstudio.com/items?itemName=timonwong.shellcheck) * [YAML](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml) [^1]: Depending on which dev container configuration is selected.
Dev containers require either Docker or Podman[^2] to be installed. CUDA-based versions require the following in addition:
[^2]: See issue #1 about limitations in Podman.
Use driver version 535
(Long Term Support Branch)
to ensure
forward compatibility
until June 2026.
:information_source: The host running the GPU accelerated dev containers only
requires the NVIDIA driver, the CUDA toolkit does not have to be installed.
Codespaces require no installation, but do not currently offer machines with NVIDIA GPUs.
To install Docker, follow the instructions for your platform:
To install Podman, follow the instructions for your platform:
To install the NVIDIA Container Toolkit, follow the instructions for your platform:
The default dev container is meant to work on this repository.
Every other configuration is a custom Data Science dev container that behaves in a unique way:
/home/vscode
/workspaces
/home/vscode
vscode
onCreateCommand
:
home directory setuppostStartCommand
s
postAttachCommand
:
Codespace only: Check for dev container updates[^3]: See issue #2 about changing the mount type.
[^4]: See issue #3 about running as root.
To disable the postStartCommand
or postAttachCommand
, comment out line 8 in
~/.local/bin/dockerSystemPrune.sh
or ~/.local/bin/checkForUpdates.sh
.
<> Code
button, then click the Codespaces tab.devcontainer.json
file:
...
and click
New with options....– Creating a codespace for a repository - GitHub Docs
To open your codespace in JupyterLab:
Execute
jupyter-lab \ --ServerApp.allow_origin='' \ --ServerApp.cookie_options="{'Same Site': 'None', 'Secure': True}" \ --ServerApp.tornado_settings="{'headers':{'Content-Security-Policy':\"frame-ancestors 'self' https://.github.dev\", 'Access-Control-Allow-Headers': 'accept, content-type, authorization, x-xsrftoken, x-github-token'}}" \ --notebook-dir=/home/vscode \ --no-browser
Ctrl+click on one of the URLs shown in the Terminal.
:information_source: Opening your codespace in JupyterLab according to the
GitHub Docs
sets the default path to /workspaces/<repository-name>
that you can not
escape.
Use the Dev Containers: Reopen in Container command from the Command Palette
(F1
, ⇧⌘P
(Windows, Linux Ctrl+Shift+P
))
To start JupyterLab:
Execute
jupyter-lab
Ctrl+click
on one of the URLs shown in the Terminal.
Data in the following locations is persisted:
/home/vscode
)[^5]/workspaces
)[^5]: Alternatively for the root user (/root
). Use with Docker/Podman in
rootless mode.
This is accomplished either via a volume or bind mount (or loop device on Codespaces) and is preconfigured.
Codespaces: A 'Full Rebuild Container' resets the home directory! :information_source: This is never necessary unless you want exactly that. |
---|
What makes this project different:
linux/amd64
, linux/arm64/v8
CUDA-based images:
nvidia/cuda:12.5.1-runtime-ubuntu22.04
See Notes and CUDA Notes for tweaks, settings, etc.
PRs accepted.
This project follows the Contributor Covenant Code of Conduct.
Community support: Open a new disussion here.
Commercial support: Contact b-data by email.
Copyright © 2023 b-data GmbH
Distributed under the terms of the MIT License.