Dockers

Nethermind Dockers instructions

Docker repository

Docker repository can be found here:

Nethermind Docker Hub

Supported architectures

We are currently supporting docker images for the following CPU architectures:

  • AMD64

  • ARM64

  • ARM32

Using an existing image

Available tags:

Tag

Description

Architecture

latest

The latest Nethermind Debian based image

x86_64, ARM64, ARM32

To use one of the previous versions you can pass {tag} e.g. 1.8.50 before the main image name.

For example if you wish to use version 1.7.4 of Nethermind Debian image, the image name would be nethermind/nethermind:1.7.4.

All versions are available in tags history.

Running Nethermind Container

Docker pull command:

Untitled
docker pull nethermind/nethermind

In order to start Nethermind.Runner, simply run:

Untitled
docker run -it nethermind/nethermind

You can use --help to get a list of possible start parameters for Nethermind or you can find them all here.

Untitled
docker run -it nethermind/nethermind --help

It’s possible to modify each configuration property via environment variable, using a simple convention:

NETHERMIND_{MODULE}CONFIG_{PROPERTY} or --{Module}.{Property}

For example:

NETHERMIND_INITCONFIG_ISMINING=true or --Init.IsMining

Environment variables are to be passed before the docker image tag while parameters should be passed right after the docker image tag.

Environment variables can be easily used within docker-compose.yml files in the environment section

JSON RPC

To enable JSON RPC, share the host’s networking namespace with --network host and set--JsonRpc.Enabled true. To change port simply pass--JsonRpc.Port 8550.

If running locally:

Untitled
docker run -it --network host nethermind/nethermind --JsonRpc.Enabled true

or with port-mapping

Untitled
docker run -it -p 8545:8545 nethermind/nethermind --JsonRpc.Enabled true --JsonRpc.Host 0.0.0.0

If running from a VM you may want to expose JSON RPC to the outer world via --JsonRpc.Host {hostmachine_ip} (127.0.0.1 is set by default). You may try setting --JsonRpc.Host 0.0.0.0 if you still can not connect with JSON RPC.

Available configurations

To switch the network use --config {network} flag (default value is mainnet).

  • mainnet

  • goerli

  • rinkeby

  • ropsten

  • xdai

  • poacore

  • sokol

  • volta

  • energyweb

For example to run Nethermind on goerli network:

Untitled
docker run -it nethermind/nethermind --config goerli

Volumes

To fully override a configuration file, you need to use a volume:

-v /home/user/mainnet.cfg:/nethermind/configs/mainnet.cfg

In order to map an internal database to a local volume, you need to map /nethermind/nethermind_db/:

-v /home/user/nethermind_db:/nethermind/nethermind_db

Logs can be mapped with the following command:

-v /home/user/logs:/nethermind/logs

Keystore:

-v /home/user/keystore:/nethermind/keystore

Nlog:

-v /home/user/NLog.config:/nethermind/NLog.config

More detailed NLog configuration can be found here.

Building an image

Dockerfile can be found in the repository root and it currently uses the power of multi-arch builds:

File Name

Description

Architecture

Dockerfile

requires to have a cloned repository in order to build an Alpine based image

x86_64, ARM64, ARM32

Dockerfile_full

doesn’t require to have a cloned repository, as it will download it during the first step

x86_64

In order to build the images, run either:

docker build -t nethermind .

or to specify other Dockerfile use -f flag:

docker build -f Dockerfile_full -t nethermind .

Example usage of the locally created docker-image:

docker run -it nethermind --config goerli