Installing Prysm with docker

Prysm can be installed on Windows, GNU/Linux, MacOS systems with Docker. This page includes instructions for performing this method.

Prysm Docker Setup

Pro-Tip

The Prysm installation script is the easiest and most efficient way of installing the latest binaries. Instructions for using it can be found here.

Have questions? Stop by the #documentation channel on Discord and let us know.

System requirements

Minimum specifications

These specifications must be met in order to successfully run the Prysm client.

  • Operating System: 64-bit Linux, Mac OS X 10.14+, Windows 64-bit
  • Processor: Intel Core i5–760 or AMD FX-8100 or better
  • Memory: 4GB RAM
  • Storage: 20GB available space SSD
  • Internet: Broadband connection

Recommended specifications

These hardware specifications are recommended, but not required to run the Prysm client.

  • Processor: Intel Core i7–4770 or AMD FX-8310 or better
  • Memory: 8GB RAM
  • Storage: 100GB available space SSD
  • Internet: Broadband connection

Dependencies

  • A modern operating system
  • The latest release of Docker installed

Installing the beacon chain and validator

  1. Ensure you are running the most recent version of Docker by issuing the command:
docker -v
  1. To pull the Prysm images, issue the following commands:
docker pull gcr.io/prysmaticlabs/prysm/validator:latest
docker pull gcr.io/prysmaticlabs/prysm/beacon-chain:latest

This process will also install any related dependencies.

Pro-Tip

For advanced users, the beacon-chain and validator images with debugging tools bundled in can be fetched instead by appending -alpine to the end of the images in the pull commands above. For example: docker pull .../prysm/validator:latest-alpine.

Connecting to the testnet: running a beacon node

Below are instructions for initialising a beacon node and connecting to the public testnet. To further understand the role that the beacon node plays in Prysm, see this section of the documentation.

Pro-Tip

It is recommended to open up port tcp/13000 and udp/12000 on your local router to improve connectivity and receive more peers from the network. To do so, navigate to 192.168.0.1 in your browser and login if required. Follow along with the interface to modify your routers firewall settings. When this task is completed, append the parameter--p2p-host-ip=$(curl -s ident.me) to your selected beacon startup command presented in this section to use the newly opened port.

To start your beacon node, issue the following command:

docker run -it -v $HOME/.eth2:/data -p 4000:4000 -p 13000:13000 -p 12000:12000/udp --name beacon-node \
gcr.io/prysmaticlabs/prysm/beacon-chain:latest \
--datadir=/data \
--rpc-host=0.0.0.0 \
--monitoring-host=0.0.0.0

At this point, the beacon chain data will begin synchroni zing up to the latest head block. Please note that, depending on your network capacity and CPU, this process may take several hours. Once it is complete, you will be ready to make a deposit and begin setting up a validator client.

Syncing the Blockchain

The beacon node you are using should be completely synced before submitting your deposit for the validator client, otherwise the validator will not be able to validate and will inflict minor inactivity balance penalties.

Now that your beacon chain is setup, you can then run a validator on the Medalla testnet by following our detailed guidelines here

Managing the beacon node with Docker

Below are various methods of controlling the beacon node in Docker installations.

The beacon node can be halted by either using Ctrl+c or with the command:

docker stop beacon-node

To restart the beacon node, issue the following command:

docker start -ai beacon-node

To delete a corrupted container, issue the following command:

docker rm beacon-node

To recreate a deleted container and refresh the chain database, issue the start command with an additional --clear-db parameter:

docker run -it -v $HOME/.eth2:/data -p 4000:4000 -p 13000:13000 -p 12000:12000/udp --name beacon-node \
gcr.io/prysmaticlabs/prysm/beacon-chain:latest \
--datadir=/data \
--clear-db \
--rpc-host=0.0.0.0 \
--monitoring-host=0.0.0.0