Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
29adbb2
Merge build and deploy to fix deploy problems
steffengraber Feb 9, 2024
3d52979
Merge remote-tracking branch 'upstream/master'
steffengraber Mar 7, 2024
e1cfa85
Merge remote-tracking branch 'upstream/master'
steffengraber Mar 8, 2024
d63f2f4
Merge remote-tracking branch 'upstream/master'
steffengraber Mar 26, 2024
ab7e910
Merge remote-tracking branch 'upstream/master'
steffengraber Apr 4, 2024
1adf82e
Add nest-server requirements
steffengraber Apr 4, 2024
5301617
Fix nest-desktop and compose file
steffengraber Apr 4, 2024
c384fb0
Add v3.7
steffengraber Apr 12, 2024
93b1397
Merge branch 'fix-nest-server'
steffengraber Apr 12, 2024
a52208a
Merge remote-tracking branch 'upstream/master'
steffengraber Apr 15, 2024
d01ede0
Remove test
steffengraber Apr 19, 2024
fa70bbb
Add v3.7 to readme
steffengraber Apr 19, 2024
fe3ca17
Merge remote-tracking branch 'upstream/master'
steffengraber May 15, 2024
52d7575
Fix nestml version and add pygsl
steffengraber May 15, 2024
5fd6274
Merge remote-tracking branch 'upstream/master'
steffengraber Jun 17, 2024
685f670
Merge remote-tracking branch 'upstream/master'
steffengraber Jun 20, 2024
d016e77
Merge remote-tracking branch 'upstream/master'
steffengraber Jul 17, 2024
b2ee7da
Install nestml fix for nest verssion
steffengraber Jul 17, 2024
00d1176
Merge remote-tracking branch 'upstream/master'
steffengraber Jul 18, 2024
28e1391
Fix merging errors
steffengraber Jul 18, 2024
de16dfe
Merge remote-tracking branch 'upstream/master'
steffengraber Jul 22, 2024
4527fa9
Merge remote-tracking branch 'upstream/master'
steffengraber Jul 22, 2024
c567942
Merge remote-tracking branch 'upstream/master'
steffengraber Jul 22, 2024
1174227
Merge remote-tracking branch 'upstream/master'
steffengraber Aug 1, 2024
e99a8a3
Deactivate build of 3.7 and 2.20.2 in CI
steffengraber Aug 1, 2024
fe8fe76
Add rc2
steffengraber Aug 1, 2024
9f9e145
NEW Version 3.8
steffengraber Aug 5, 2024
52db54a
Merge branch 'master' into master
steffengraber Aug 6, 2024
64354c4
Merge remote-tracking branch 'upstream/master'
steffengraber Aug 6, 2024
2f4ec0f
Merge remote-tracking branch 'upstream/master'
steffengraber Aug 22, 2024
5fcb523
Merge remote-tracking branch 'upstream/master'
steffengraber Sep 26, 2024
2b2fef5
Merge remote-tracking branch 'upstream/master'
steffengraber Oct 1, 2024
725053a
Merge remote-tracking branch 'refs/remotes/origin/master'
steffengraber Oct 1, 2024
488a45a
Fix the mermaid installation with a patch and fix some doubles
steffengraber Oct 17, 2024
91aae25
Fix numpy installation
steffengraber Oct 24, 2024
4af0fdc
Merge remote-tracking branch 'upstream/master'
steffengraber Oct 24, 2024
cb87371
Merge branch 'fix-sphinx'
steffengraber Oct 24, 2024
f525c1e
Add NESTML v8.0.0rc3
steffengraber Nov 27, 2024
807b178
Merge remote-tracking branch 'upstream/master'
steffengraber Dec 12, 2024
dcdd2de
Merge remote-tracking branch 'upstream/master'
steffengraber Dec 12, 2024
ed99626
feat: add devcontainer and Dependabot configuration
steffengraber Feb 4, 2025
7b6a3d7
fix: update nestml to version 8.0.0 in Dockerfiles
steffengraber Feb 4, 2025
e7bf510
Merge pull request #4 from steffengraber/sg-branch-1
steffengraber Feb 4, 2025
df678c8
Merge branch 'nest:master' into master
steffengraber Feb 4, 2025
e91073d
Delete devcontainer file
steffengraber Apr 1, 2025
40580f9
Merge branch 'nest:master' into master
steffengraber Apr 1, 2025
0a8bb3b
Merge branch 'nest:master' into master
steffengraber Apr 3, 2025
69d1b44
Remove double of pip install numpy in Dockerfile
steffengraber Apr 8, 2025
50b0633
Merge branch 'nest:master' into master
steffengraber May 22, 2025
b87fcc6
Comment out Docker registry login in CI configuration
steffengraber Jul 24, 2025
e040d59
Merge branch 'master' of github.com:steffengraber/nest-docker
steffengraber Jul 24, 2025
b71d135
Merge branch 'master' into master
steffengraber Jul 24, 2025
28b35d1
fix: update destination repository URLs in ebrains-push workflow
steffengraber Jul 24, 2025
b72e14d
Merge branch 'nest:master' into master
steffengraber Jul 25, 2025
893149b
Merge branch 'nest:master' into master
steffengraber Oct 16, 2025
e04f8d0
Update Dockerfile to use NEST version 3.9 and add missing swig depend…
steffengraber Oct 17, 2025
97d8d4b
Update Dockerfiles and run script for NEST 3.9 compatibility
steffengraber Oct 17, 2025
860ec04
Enhance README and run script for NEST 3.9 support and usability impr…
steffengraber Oct 17, 2025
8c90211
Update Docker workflow to build and push NEST 3.9 image instead of 3.…
steffengraber Oct 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/workflows/docker-image-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,26 +34,26 @@ jobs:
DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }}
DOCKER_HUB_ACCESS_TOKEN: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

build-3-9-rc1:
build-3-9:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Build 3.9-rc1 Docker image
- name: Build 3.9 Docker image
run: |
docker build ./src/3.9 --tag nest/nest-simulator:3.9-rc1
docker build ./src/3.9 --tag nest/nest-simulator:3.9

- name: Check NEST 3.9-rc1
- name: Check NEST 3.9
run: |
docker run --rm nest/nest-simulator:3.9-rc1 python3 -c "import nest" | grep "Version:"
docker run --rm nest/nest-simulator:3.9 python3 -c "import nest" | grep "Version:"

- name: Push 3.9-rc1 to Docker Hub
- name: Push 3.9 to Docker Hub
uses: docker/build-push-action@v5
with:
context: ./src/3.9
push: true
tags: nest/nest-simulator:3.9-rc1
tags: nest/nest-simulator:3.9
env:
DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }}
DOCKER_HUB_ACCESS_TOKEN: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
Expand Down
161 changes: 128 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,39 @@
# Docker image for the NEST simulator

[![Docker Hub](https://img.shields.io/badge/Docker%20Hub-nest--simulator-blue?logo=docker)](https://hub.docker.com/r/nest/nest-simulator)
[![NEST Simulator](https://img.shields.io/badge/NEST-Simulator-green?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==)](https://www.nest-simulator.org/)
[![License: GPL v2](https://img.shields.io/badge/License-GPL%20v2-blue.svg)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
[![Latest Version](https://img.shields.io/badge/Latest-v3.9-brightgreen)](https://github.com/nest/nest-docker)

## Table of Contents

- [What is it for?](#what-is-it-for)
- [Quick Start](#quick-start)
- [Usage](#usage)
- [NEST 2.20.2](#nest-2202)
- [NEST 3.9](#nest-39)
- [NEST dev](#nest-dev)
- [On Windows](#on-windows)
- [Local Build System (run.sh)](#usage-of-the-local-build-system-runsh)
- [Quick Reference](#quick-reference)
- [Step-by-Step Guide](#1---2---3)
- [Using NEST with MUSIC](#using-nest-with-music)
- [Useful Docker commands](#useful-docker-commands)
- [Publishing to Registry](#add-image-to-ebrans-registry)

## What is it for?

If you know how to use docker, you know how to use NEST.
**If you know how to use Docker, you know how to use NEST.**

This repository provides Docker images for the [NEST simulator](https://www.nest-simulator.org/), making it easy to run NEST simulations without complex installation procedures. Whether you're a researcher, student, or developer, these Docker images provide:

- ✅ **Zero-installation experience** - No dependency management headaches
- ✅ **Consistent environment** - Same setup across different systems
- ✅ **Multiple interfaces** - Jupyter notebooks, JupyterLab, or interactive shell
- ✅ **Latest versions** - From legacy 2.x to cutting-edge development builds
- ✅ **NEST Desktop integration** - Full graphical interface support

### Available Docker Images

Currently the following docker images are provided

Expand All @@ -17,14 +48,41 @@ Currently the following docker images are provided
- nest/nest-simulator:3.6
- nest/nest-simulator:3.7
- nest/nest-simulator:3.8
- nest/nest-simulator:3.9

## Quick Start

**🚀 Get started in 30 seconds:**

1. **Pull the latest NEST image:**
```bash
docker pull nest/nest-simulator:3.9
```

2. **Start Jupyter Notebook:**
```bash
docker run -it --rm -e LOCAL_USER_ID=`id -u $USER` -v $(pwd):/opt/data \
-e NEST_CONTAINER_MODE=notebook -p 8080:8080 nest/nest-simulator:3.9
```

3. **Open your browser** to the displayed URL and start exploring NEST!

**🛠️ For local development with build tools:**

```bash
git clone https://github.com/nest/nest-docker.git
cd nest-docker
./run.sh list # See all available options
./run.sh run notebook 3.9 # Start notebook with NEST 3.9
```

## Usage

You can use the docker images direct out of docker-registry.ebrains.eu like this:
You can use the docker images directly from docker-registry.ebrains.eu like this:

docker pull nest/nest-simulator:TAG

TAG is '2.20.2', '3.2', '3.3', '3.4', '3.5', '3.6', '3.7', '3.8'or 'dev'.
TAG is '2.20.2', '3.2', '3.3', '3.4', '3.5', '3.6', '3.7', '3.8', '3.9' or 'dev'.

#### NEST 2.20.2

Expand All @@ -33,12 +91,12 @@ Jupyter notebook with NEST 2.20.2:
docker run -it --rm -e LOCAL_USER_ID=`id -u $USER` -v $(pwd):/opt/data -e NEST_CONTAINER_MODE=notebook \
-p 8080:8080 nest/nest-simulator:2.20.2

Jupyter lab with NEST 2.20.2
JupyterLab with NEST 2.20.2:

docker run -it --rm -e LOCAL_USER_ID=`id -u $USER` -v $(pwd):/opt/data -e NEST_CONTAINER_MODE=jupyterlab \
-p 8080:8080 nest/nest-simulator:2.20.2

#### NEST 3.8
#### NEST 3.9

To use 'docker-compose' you need the definition file from the git repository. Download it:

Expand All @@ -51,7 +109,7 @@ To use 'docker-compose' you need the definition file from the git repository. Do
or

docker run -it --rm -e NEST_CONTAINER_MODE=nest-server -p 52425:52425 \
nest/nest-simulator:3.8
nest/nest-simulator:3.9

Starts the NEST API server container and opens the corresponding port 52425. Test it with `curl localhost:52425/api`.

Expand All @@ -62,9 +120,9 @@ To use 'docker-compose' you need the definition file from the git repository. Do
or

docker run -it --rm -e NEST_CONTAINER_MODE=nest-server -p 52425:52425 \
nest/nest-simulator:3.8
nest/nest-simulator:3.9
docker run -it --rm -e LOCAL_USER_ID=`id -u $USER` -p 54286:54286 \
-e NEST_CONTAINER_MODE=nest-desktop nest/nest-simulator:3.8
-e NEST_CONTAINER_MODE=nest-desktop nest/nest-simulator:3.9

Starts the NEST server and the NEST desktop web interface. Port 54286 is also made available.
Open in the web browser: `http://localhost:54286`
Expand All @@ -76,26 +134,26 @@ To use 'docker-compose' you need the definition file from the git repository. Do
or

docker run -it --rm -e LOCAL_USER_ID=`id -u $USER` -v $(pwd):/opt/data -e NEST_CONTAINER_MODE=notebook \
-p 8080:8080 nest/nest-simulator:3.8
-p 8080:8080 nest/nest-simulator:3.9

Starts a notebook server with pre-installed NEST 3.8. The corresponding URL is displayed in the console.
Starts a notebook server with pre-installed NEST 3.9. The corresponding URL is displayed in the console.

- Jupyter lab with NEST
- JupyterLab with NEST

docker-compose up nest-jupyterlab

or

docker run -it --rm -e LOCAL_USER_ID=`id -u $USER` -v $(pwd):/opt/data -e NEST_CONTAINER_MODE=jupyterlab \
-p 8080:8080 nest/nest-simulator:3.8
-p 8080:8080 nest/nest-simulator:3.9

Starts a jupyter lab server with pre-installed NEST 3.8. The corresponding URL is displayed in the console.
Starts a JupyterLab server with pre-installed NEST 3.9. The corresponding URL is displayed in the console.

To stop and delete running containers use `docker-compose down`.

#### NEST dev

If you want to use the compose configurtion for the dev NEST version, use the file option, e.g.:
If you want to use the compose configuration for the dev NEST version, use the file option, e.g.:

wget https://raw.githubusercontent.com/steffengraber/nest-docker/master/docker-compose.yml
docker-compose -f docker-compose-dev.yml up nest-notebook
Expand All @@ -111,8 +169,8 @@ In Powershell, '%cd%' might not work for the current directory. Then
you should explicitly specify a folder with existing write permissions.

In any case, this will download the docker image with the pre-installed
NEST master from docker-registry.ebrains.eu and start it. After booting an URL is presented.
Click on it or copy it to your browser. Voilá jupyter notebook starts from
NEST master from docker-registry.ebrains.eu and start it. After booting, a URL is presented.
Click on it or copy it to your browser. Voilà! Jupyter notebook starts from
the docker image.

You can update the image with:
Expand All @@ -126,22 +184,36 @@ You can clone this repository and use the shell script:
sh run.sh [--help] <command> [<args>] [<version>]

--help print this usage information.
<command> can be either 'provision', 'run' or 'clean'.
[<args>] can be either 'notebook', 'jupyterlab', or 'interactice'.
<command> can be either 'provision', 'run', 'clean', or 'list'.
[<args>] can be either 'notebook', 'jupyterlab', or 'interactive'.
[<version>] kind of docker image (e.g. 'dev', '2.12.0', '2.14.0',
'2.16.0', '2.18.0', '3.0', '3.1', '3.2', '3.3', '3.4', '3.5',
'3.6', '3.7', '3.8' or 'all').
'3.6', '3.7', '3.8', '3.9' or 'all').

Example: sh run.sh provision dev
Examples: sh run.sh list
sh run.sh provision dev
sh run.sh provision all-parallel
sh run.sh provision 3.9 --no-cache
sh run.sh run notebook dev
sh run.sh run jupyterlab dev
sh run.sh run jupyterlab 3.9

### Quick Reference

To see all available versions and commands:

sh run.sh list

This will display:
- All available NEST versions (categorized by legacy 2.x, NEST 3.x, and special versions)
- Available run modes (notebook, jupyterlab, interactive)
- Available provision commands


## 1 - 2 (- 3)
## Step-by-Step Guide

In the next steps, VERSION is the kind of docker image you want to use (3.8, dev, ...)
In the next steps, `VERSION` is the kind of docker image you want to use (3.9, dev, ...)

Two little steps to get started
**Two simple steps to get started:**

### 1 - Provisioning

Expand All @@ -150,7 +222,30 @@ from the docker files.

sh run.sh provision VERSION

Be careful with the version 'all'. This really takes a long time.
**Build Options:**

- Build a single version:
```
sh run.sh provision 3.9
```

- Build all versions sequentially:
```
sh run.sh provision all
```

- Build all versions in parallel (faster, but uses more system resources):
```
sh run.sh provision all-parallel
```

- Force rebuild without using Docker cache:
```
sh run.sh provision 3.9 --no-cache
sh run.sh provision all --no-cache
```

Be careful with the version 'all'. This really takes a long time. Use 'all-parallel' for faster builds if your system has sufficient resources.

After every build of a NEST docker image, there are two more images - the one
with the name of the NEST version (e.g. 'nest/nest-simulator:latest') and
Expand Down Expand Up @@ -180,21 +275,21 @@ More information about this so called 'multi-stage build' here:
be in the path where you start the script.


### (3) - Delete the NEST Images
### 3 - Clean Up (Optional)

sh run.sh clean

Be careful. This stops EVERY container and delete then EVERY NEST Images.
⚠️ **Warning:** This stops EVERY container and deletes EVERY NEST image.

## Using NEST with music
## Using NEST with MUSIC

In the folder with your music scripts run:
In the folder with your MUSIC scripts run:

docker run -it --rm -e LOCAL_USER_ID=`id -u $USER` \
-v $(pwd):/opt/data \
nest/nest-simulator:3.8 /bin/bash
nest/nest-simulator:3.9 /bin/bash

You are now on container's shell.
You are now in the container's shell.

cd /opt/nest/share/doc/nest/examples/music/
mpirun --allow-run-as-root -np 2 music ./minimalmusicsetup.music
Expand All @@ -207,7 +302,7 @@ You are now on container's shell.

- Export a docker image

docker save nest/nest-simulator:3.8 | gzip -c > nest-docker.tar.gz
docker save nest/nest-simulator:3.9 | gzip -c > nest-docker.tar.gz

- Import a docker image

Expand All @@ -221,7 +316,7 @@ You are now on container's shell.

docker exec -it --workdir /root --user root <nest_container_name> bash

## Add image to ebrans registry
## Add image to EBRAINS registry

docker login docker-registry.ebrains.eu
docker build -t nest-simulator:<VERSION> /path/to/recipe --squash
Expand Down
10 changes: 5 additions & 5 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
services:
nest-server:
image: nest/nest-simulator:3.9-rc2
image: nest/nest-simulator:3.9
environment:
LOCAL_USER_ID: "`id -u $USER`"
NEST_CONTAINER_MODE: "nest-server"
ports:
- "52425:52425"

nest-server-mpi:
image: nest/nest-simulator:3.9-rc2
image: nest/nest-simulator:3.9
environment:
LOCAL_USER_ID: "`id -u $USER`"
NEST_CONTAINER_MODE: "nest-server-mpi"
Expand All @@ -17,7 +17,7 @@ services:
- "52425:52425"

nest-desktop:
image: nest/nest-simulator:3.9-rc2
image: nest/nest-simulator:3.9
environment:
LOCAL_USER_ID: "`id -u $USER`"
NEST_CONTAINER_MODE: "nest-desktop"
Expand All @@ -27,7 +27,7 @@ services:
- nest-server

nest-notebook:
image: nest/nest-simulator:3.9-rc2
image: nest/nest-simulator:3.9
volumes:
- .:/opt/data
environment:
Expand All @@ -37,7 +37,7 @@ services:
- "8080:8080"

nest-jupyterlab:
image: nest/nest-simulator:3.9-rc2
image: nest/nest-simulator:3.9
volumes:
- .:/opt/data
environment:
Expand Down
Loading
Loading