description |
---|
Nethermind Dockers instructions |
Docker repository can be found here:
{% embed url="https://hub.docker.com/repository/docker/nethermind/nethermind" caption="Nethermind Docker Hub" %}
We are currently supporting docker images for the following CPU architectures:
- AMD64
- ARM64
Tag | Description | Architecture |
---|---|---|
latest |
The latest Nethermind Debian based image | x86_64, ARM64 |
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.
{% hint style="danger" %}
On some OS like Amazon Linux you may need to increase the nofile
limit by adding the following instruction to docker commands:
--ulimit nofile=1000000:1000000
e.g.
docker run -it --ulimit nofile=1000000:1000000 nethermind/nethermind
ref. Github issue, alternative solutions {% endhint %}
Docker pull command:
{% tabs %} {% tab title="" %}
docker pull nethermind/nethermind
{% endtab %} {% endtabs %}
In order to start Nethermind.Runner
, simply run:
{% tabs %} {% tab title="" %}
docker run -it nethermind/nethermind
{% endtab %} {% endtabs %}
You can use --help
to get a list of possible start parameters for Nethermind or you can find them all here.
{% tabs %} {% tab title="" %}
docker run -it nethermind/nethermind --help
{% endtab %} {% endtabs %}
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
{% hint style="warning" %} Environment variables are to be passed before the docker image tag while parameters should be passed right after the docker image tag. {% endhint %}
{% hint style="info" %} Environment variables ****can be easily used within docker-compose.yml files in the environment section {% endhint %}
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:
{% tabs %} {% tab title="" %}
docker run -it --network host nethermind/nethermind --JsonRpc.Enabled true
{% endtab %} {% endtabs %}
or with port-mapping
{% tabs %} {% tab title="" %}
docker run -it -p 8545:8545 nethermind/nethermind --JsonRpc.Enabled true --JsonRpc.Host 0.0.0.0
{% endtab %} {% endtabs %}
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.
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:
{% tabs %} {% tab title="" %}
docker run -it nethermind/nethermind --config goerli
{% endtab %} {% endtabs %}
To successfully map volumes such as database, keystore, logs
at one go you can use --datadir
command option:
docker run -it -v /home/user/data:/nethermind/data nethermind/nethermind --datadir data
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.
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 a Debian based image | x86_64, ARM64 |
In order to build the images, run:
docker buildx build --platform=linux/amd64 -t nethermind .
Example usage of the locally created docker-image:
docker run -it nethermind --config goerli