Skip to content

Commit 88cebea

Browse files
committed
Merge branch 'main' into freeze-version
2 parents 8f7e780 + 1538100 commit 88cebea

File tree

11 files changed

+62
-40
lines changed

11 files changed

+62
-40
lines changed

CUDA.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ cd base && docker build \
8383
--build-arg BASE_IMAGE=ubuntu \
8484
--build-arg BASE_IMAGE_TAG=22.04 \
8585
--build-arg BUILD_ON_IMAGE=glcr.b-data.ch/cuda/python/ver \
86-
--build-arg PYTHON_VERSION=3.13.1 \
86+
--build-arg PYTHON_VERSION=3.13.2 \
8787
--build-arg CUDA_IMAGE_FLAVOR=devel \
8888
-t jupyterlab/cuda/python/base \
8989
-f latest.Dockerfile .
@@ -216,7 +216,7 @@ docker run -it --rm \
216216
**What makes this project different:**
217217
218218
1. Multi-arch: `linux/amd64`, `linux/arm64/v8`
219-
1. Derived from [`nvidia/cuda:12.8.0-devel-ubuntu22.04`](https://hub.docker.com/r/nvidia/cuda/tags?page=1&name=12.8.0-devel-ubuntu22.04)
219+
1. Derived from [`nvidia/cuda:12.8.1-devel-ubuntu22.04`](https://hub.docker.com/r/nvidia/cuda/tags?page=1&name=12.8.1-devel-ubuntu22.04)
220220
* including development libraries and headers
221221
1. TensortRT and TensorRT plugin libraries
222222
* including development libraries and headers

CUDA_VERSION_MATRIX.md

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ Topmost entry = Tag `latest`
66

77
| Python | CUDA | cuBLAS | cuDNN | NCCL | TensorRT[^2] | Linux distro |
88
|:-----------|:-------|:----------|:----------|:-------|:------------------------|:-------------|
9-
| 3.13.1 | 12.8.0 | 12.8.3.14 | 9.7.0.66 | 2.25.1 | n/a | Ubuntu 22.04 |
9+
| 3.13.2 | 12.8.1 | 12.8.4.1 | 9.8.0.87 | 2.25.1 | n/a | Ubuntu 22.04 |
1010
| 3.12.9 | 12.8.0 | 12.8.3.14 | 8.9.7.29 | 2.25.1 | 10.8.0.43/<br>10.3.0.26 | Ubuntu 22.04 |
11+
| 3.13.1 | 12.8.0 | 12.8.3.14 | 9.7.0.66 | 2.25.1 | n/a | Ubuntu 22.04 |
1112
| 3.12.8 | 12.8.0 | 12.8.3.14 | 8.9.7.29 | 2.25.1 | 10.8.0.43/<br>10.3.0.26 | Ubuntu 22.04 |
1213
| 3.13.0[^1] | 12.6.3 | 12.6.4.1 | 9.6.0.74 | 2.23.4 | n/a | Ubuntu 22.04 |
1314
| 3.12.7 | 12.6.3 | 12.6.4.1 | 8.9.7.29 | 2.23.4 | 10.7.0.23/<br>10.3.0.26 | Ubuntu 22.04 |
@@ -44,15 +45,15 @@ Topmost entry = Tag `latest`
4445

4546
## PyTorch/TensorFlow compatibility
4647

47-
| Python | CUDA | PyTorch[^4] | TensorFlow[^5] |
48-
|:-------|:-----|:-----------------------------|:--------------------------|
49-
| 3.13 | 12.8 | version ≥ 2.6 (experimental) | n/a |
50-
| 3.13 | 12.6 | version ≥ 2.6 (experimental) | n/a |
51-
| 3.12 | 12.6 | version ≥ 2.2 | version ≥ 2.16 |
52-
| 3.12 | 12.5 | version ≥ 2.2 | version ≥ 2.16 |
53-
| 3.12 | 11.8 | version ≥ 2.2 | version ≥ 2.16 (CPU-only) |
54-
| 3.11 | 11.8 | version ≥ 2.0 | 2.15 ≥ version > 2.12 |
55-
| 3.10 | 11.8 | version ≥ 1.12 | 2.15 ≥ version > 2.8 |
48+
| Python | CUDA | PyTorch[^4] | TensorFlow[^5] |
49+
|:-------|:-----|:-----------------------------|:---------------------------------|
50+
| 3.13 | 12.8 | version ≥ 2.6 (experimental) | n/a |
51+
| 3.13 | 12.6 | version ≥ 2.6 (experimental) | n/a |
52+
| 3.12 | 12.6 | version ≥ 2.2 | 2.18 > version ≥ 2.16 |
53+
| 3.12 | 12.5 | version ≥ 2.2 | 2.18 > version ≥ 2.16 |
54+
| 3.12 | 11.8 | version ≥ 2.2 | 2.18 > version ≥ 2.16 (CPU-only) |
55+
| 3.11 | 11.8 | version ≥ 2.0 | 2.16 > version 2.12 |
56+
| 3.10 | 11.8 | version ≥ 1.12 | 2.16 > version 2.9 |
5657

5758
[^4]: Installs its own CUDA binaries
5859
[^5]: The expected TensorRT version is symlinked to the installed TensorRT
@@ -64,7 +65,8 @@ given.
6465

6566
| CUDA | Linux driver version | Windows driver version[^6] |
6667
|:-------|:---------------------|:---------------------------|
67-
| 12.8.0 | ≥ 570.26 | ≥ 570.65 |
68+
| 12.8.1 | ≥ 570.124.06 | ≥ 572.61 |
69+
| 12.8.0 | ≥ 570.117 | ≥ 572.30 |
6870
| 12.6.3 | ≥ 560.35.05 | ≥ 561.17 |
6971
| 12.6.2 | ≥ 560.35.03 | ≥ 560.94 |
7072
| 12.6.1 | ≥ 560.35.03 | ≥ 560.94 |
@@ -83,6 +85,7 @@ Only works with
8385

8486
| CUDA | Driver version 535[^7] | Driver version 470[^8] |
8587
|:-------|:----------------------:|:----------------------:|
88+
| 12.8.1 | 🟢 | 🔵 |
8689
| 12.8.0 | 🟢 | 🔵 |
8790
| 12.6.3 | 🟢 | 🔵 |
8891
| 12.6.2 | 🟢 | 🔵 |
@@ -91,9 +94,10 @@ Only works with
9194
| 12.5.0 | 🟢 | 🔵 |
9295
| 11.8.0 | 🟡 | 🟢 |
9396

94-
🔵: Supported due to the CUDA forward compat package
95-
🟢: Supported due to minor-version compatibility
97+
🔵: Supported with the CUDA forward compat package only
98+
🟢: Supported due to minor-version compatibility[^9]
9699
🟡: Supported due to backward compatibility
97100

98101
[^7]: EOL: June 2026
99102
[^8]: EOL: July 2024
103+
[^9]: or the CUDA forward compat package

NOTES.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,16 @@ The following startup hooks are put in place:
3939
* [/usr/local/bin/before-notebook.d/71-tensorboard.sh](base/scripts/usr/local/bin/before-notebook.d/71-tensorboard.sh)
4040
to use Jupyter Server Proxy for TensorBoard.
4141
* [/usr/local/bin/before-notebook.d/90-limits.sh](base/scripts/usr/local/bin/before-notebook.d/90-limits.sh)
42-
* *soft* limit the *address space* based on the amount of *physical* and
43-
*virtual memory* of the host. (default: command `ulimit -v`)
42+
* *soft* limit the *address space* based on the amount of *physical memory*
43+
(`MEM_LIMIT`) and *virtual memory* (`SWAP_ENABLE`, `SWAP_FACTOR`). (default:
44+
command `prlimit -v`)
45+
* Do not limit if `NO_AS_LIMIT` or `NO_MEM_LIMIT` is set to `1` or `yes`.
4446
* limit the number of *file descriptors* according to environment variable
45-
`NOFILE_LIMIT`. (default: command `ulimit -n`)
47+
`NOFILE_LIMIT`. (default: command `prlimit -n`)
4648
* limit the number of *processes* according to environment variable
47-
`NPROC_LIMIT`. (default: command `ulimit -u`)
49+
`NPROC_LIMIT`. (default: command `prlimit -u`)
4850
* limit the number of *pending signals* according to environment variable
49-
`SIGPEN_LIMIT`. (default: command `ulimit -i`)
51+
`SIGPEN_LIMIT`. (default: command `prlimit -i`)
5052
* [/usr/local/bin/before-notebook.d/95-misc.sh](base/scripts/usr/local/bin/before-notebook.d/95-misc.sh)
5153
to export environment variables to `/tmp/environment`.
5254

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ To install docker, follow the instructions for your platform:
132132

133133
```bash
134134
cd base && docker build \
135-
--build-arg PYTHON_VERSION=3.13.1 \
135+
--build-arg PYTHON_VERSION=3.13.2 \
136136
-t jupyterlab/python/base \
137137
-f latest.Dockerfile .
138138
```
@@ -324,6 +324,8 @@ b-data tailors the JupyterLab images to your needs, e.g.
324324
services on the intranet.
325325
* Setting up the necessary environment variables so that everything works
326326
behind a corporate proxy server.
327+
* If supported by the NVIDIA GPU(s): Correctly handle CUDA forward compatibility
328+
for GPU accelerated images.
327329
328330
Additionally, the
329331
[JupyterHub](https://github.com/b-data/docker-deployment-jupyter) setup can be

VERSION_MATRIX.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ Topmost entry = Tag `latest`
88

99
| Python | Jupyter Hub | Jupyter Lab | code‑server (Code) | Neovim | Git | Git LFS | Pandoc | Linux distro |
1010
|:-----------|:------------|:------------|:-------------------|:-------|:-------|:--------|:-------|:-------------|
11-
| 3.13.1 | 5.2.1 | 4.3.5 | 4.96.4 (1.96.4) | 0.10.4 | 2.48.1 | 3.6.1 | 3.4 | Debian 12 |
11+
| 3.13.2 | 5.2.1 | 4.3.6 | 4.99.0 (1.99.0) | 0.11.0 | 2.49.0 | 3.6.1 | 3.4 | Debian 12 |
1212
| 3.12.9 | 5.2.1 | 4.3.5 | 4.96.4 (1.96.4) | 0.10.4 | 2.48.1 | 3.6.1 | 3.4 | Debian 12 |
13+
| 3.13.1 | 5.2.1 | 4.3.5 | 4.96.4 (1.96.4) | 0.10.4 | 2.48.1 | 3.6.1 | 3.4 | Debian 12 |
1314
| 3.12.8 | 5.2.1 | 4.3.5 | 4.96.4 (1.96.4) | 0.10.4 | 2.48.1 | 3.6.1 | 3.4 | Debian 12 |
1415
| 3.13.0[^1] | 5.2.1 | 4.2.5 | 4.95.3 (1.95.3) | 0.10.2 | 2.47.1 | 3.6.0 | 3.4 | Debian 12 |
1516
| 3.12.7 | 5.2.1 | 4.2.5 | 4.95.3 (1.95.3) | 0.10.2 | 2.47.1 | 3.6.0 | 3.4 | Debian 12 |
@@ -45,8 +46,9 @@ Topmost entry = Tag `latest`
4546

4647
| Python | CTAN date | Quarto |
4748
|:-----------|:-----------|:------------|
48-
| 3.13.1 | 2025‑02‑04 | 1.6.40 |
49+
| 3.13.2 | | 1.6.43 |
4950
| 3.12.9 | | 1.6.40 |
51+
| 3.13.1 | 2025‑02‑04 | 1.6.40 |
5052
| 3.12.8 | 2025‑02‑04 | 1.6.40 |
5153
| 3.13.0[^1] | 2024‑12‑03 | 1.6.39 |
5254
| 3.12.7 | 2024‑12‑03 | 1.6.39 |

base/.gitlab-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
.env:
22
variables:
3-
PYTHON_VERSION: "3.13.1"
3+
PYTHON_VERSION: "3.13.2"
44
TAG_VERSION_MAJ_MIN: "false"
55
TAG_VERSION_MAJ: "false"
66

base/latest.Dockerfile

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ ARG CUDA_IMAGE_FLAVOR
77
ARG NB_USER=jovyan
88
ARG NB_UID=1000
99
ARG JUPYTERHUB_VERSION=5.2.1
10-
ARG JUPYTERLAB_VERSION=4.3.5
10+
ARG JUPYTERLAB_VERSION=4.3.6
1111
ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions
12-
ARG CODE_SERVER_VERSION=4.96.4
13-
ARG NEOVIM_VERSION=0.10.4
14-
ARG GIT_VERSION=2.48.1
12+
ARG CODE_SERVER_VERSION=4.99.0
13+
ARG NEOVIM_VERSION=0.11.0
14+
ARG GIT_VERSION=2.49.0
1515
ARG GIT_LFS_VERSION=3.6.1
1616
ARG PANDOC_VERSION=3.4
1717

@@ -225,6 +225,9 @@ ENV PATH=/opt/code-server/bin:$PATH \
225225
RUN mkdir /opt/code-server \
226226
&& cd /opt/code-server \
227227
&& curl -sL https://github.com/coder/code-server/releases/download/v${CODE_SERVER_VERSION}/code-server-${CODE_SERVER_VERSION}-linux-$(dpkg --print-architecture).tar.gz | tar zxf - --no-same-owner --strip-components=1 \
228+
## Exempt code-server from address space limit
229+
&& sed -i 's/exec/exec prlimit --as=unlimited:/g' \
230+
/opt/code-server/bin/code-server \
228231
## Copy custom fonts
229232
&& mkdir -p /opt/code-server/src/browser/media/fonts \
230233
&& cp -a /usr/share/fonts/truetype/meslo/*.ttf /opt/code-server/src/browser/media/fonts \
@@ -252,6 +255,9 @@ RUN mkdir /opt/code-server \
252255
&& code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension grapecity.gc-excelviewer \
253256
&& code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension editorconfig.editorconfig \
254257
&& code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension DavidAnson.vscode-markdownlint \
258+
## Fix permissions for Python Debugger extension
259+
&& chown :${NB_GID} /opt/code-server/lib/vscode/extensions/ms-python.debugpy-* \
260+
&& chmod g+w /opt/code-server/lib/vscode/extensions/ms-python.debugpy-* \
255261
## Create folders temp and tmp for Jupyter extension
256262
&& cd /opt/code-server/lib/vscode/extensions/ms-toolsai.jupyter-* \
257263
&& mkdir -m 1777 temp \

base/scripts/usr/local/bin/before-notebook.d/90-limits.sh

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,38 @@
44

55
set -e
66

7-
DIVISOR=1024
7+
if [ "$(id -u)" != 0 ]; then
8+
soft_limit=1
9+
fi
810

911
if [[ "$SWAP_ENABLE" == "1" || "$SWAP_ENABLE" == "yes" ]]; then
10-
FACTOR=$(echo 1 "${SWAP_FACTOR:-1}" | awk '{ printf "%.1f", $1 + $2 }')
12+
factor=$(echo 1 "${SWAP_FACTOR:-1}" | awk '{ printf "%.1f", $1 + $2 }')
1113
else
12-
FACTOR=1
14+
factor=1
1315
fi
1416

1517
# Limit address space: Soft when run as root and as other user
1618
if [ -n "$MEM_LIMIT" ]; then
17-
ulimit -Sv "$(echo "$MEM_LIMIT" "$DIVISOR" "$FACTOR" |
18-
awk '{ printf "%.0f", $1 / $2 * $3 }')"
19+
NO_AS_LIMIT=${NO_AS_LIMIT:-$NO_MEM_LIMIT}
20+
# Do not limit if NO_AS_LIMIT or NO_MEM_LIMIT is set to 1 or yes
21+
if [[ "$NO_AS_LIMIT" != "1" && "$NO_AS_LIMIT" != "yes" ]]; then
22+
prlimit --pid $$ --as="$(echo "$MEM_LIMIT" "$factor" |
23+
awk '{ printf "%.0f", $1 * $2 }')":
24+
fi
1925
fi
2026

2127
# Other limits: Hard when run as root user; Soft when run as other user
2228
# pending signals
2329
if [ -n "$SIGPEN_LIMIT" ]; then
24-
ulimit -i "$(printf %.0f "$SIGPEN_LIMIT")"
30+
prlimit --pid $$ --sigpending="$(printf %.0f "$SIGPEN_LIMIT")"${soft_limit:+:}
2531
fi
2632

2733
# file descriptors
2834
if [ -n "$NOFILE_LIMIT" ]; then
29-
ulimit -n "$(printf %.0f "$NOFILE_LIMIT")"
35+
prlimit --pid $$ --nofile="$(printf %.0f "$NOFILE_LIMIT")"${soft_limit:+:}
3036
fi
3137

3238
# processes
3339
if [ -n "$NPROC_LIMIT" ]; then
34-
ulimit -u "$(printf %.0f "$NPROC_LIMIT")"
40+
prlimit --pid $$ --nproc="$(printf %.0f "$NPROC_LIMIT")"${soft_limit:+:}
3541
fi

common/subtags/devtools/latest.Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12
33
ARG BUILD_ON_IMAGE
44
ARG PYTHON_VERSION
55

6-
ARG NODE_VERSION=20.18.1
6+
ARG NODE_VERSION=20.18.3
77
ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions
88

99
FROM glcr.b-data.ch/nodejs/nsi/${NODE_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as nsi

scipy/.gitlab-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
.env:
22
variables:
3-
PYTHON_VERSION: "3.13.1"
3+
PYTHON_VERSION: "3.13.2"
44
CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet"
55
TAG_VERSION_MAJ_MIN: "false"
66
TAG_VERSION_MAJ: "false"

scipy/latest.Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/python/base
22
ARG PYTHON_VERSION
33
ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions
4-
ARG QUARTO_VERSION=1.6.40
4+
ARG QUARTO_VERSION=1.6.43
55
ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet
66

77
FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:}${PYTHON_VERSION}
@@ -42,7 +42,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \
4242
&& tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \
4343
&& rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \
4444
## Exempt quarto from address space limit
45-
&& sed -i 's/"${QUARTO_DENO}"/prlimit -v=unlimited: "${QUARTO_DENO}"/g' \
45+
&& sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \
4646
/opt/quarto/bin/quarto \
4747
## Remove quarto pandoc
4848
&& rm /opt/quarto/bin/tools/$(uname -m)/pandoc \

0 commit comments

Comments
 (0)