
Running an Ethereum Node with Docker

Docker is a powerful tool for managing containers and run-time environments and, besides its many advantages, Docker can also be handy to keep your server tidy and secure.
#Docker allows to run operating systems, applications and tools in so called Containers. A #Container is an isolated environments that represents a autonomous host on its own – a bit in the same way a Virtual Machine does. Yet, Docker Containers are much lighter. They do not start an entire full-blown operating system for each Container instance. Instead, Docker uses #Linux kernel isolation mechanisms to run applications on the top of the host’s operating systems, yet keeping them isolated.
The Ethereum Go (language) team builds a Docker image of a “geth” node as part of their continuous build chain. Their Howto is more then enough to run your full node, mine below is just an enhanced example with volume, name, .. nothing fancy.
# i want to persist the blockchain in a volume
docker volume create --name=ethereum-data
# and limit cpu usage to 20% of all 8 cores –cpus=”.2″, give a name to container, more command line options
docker run --cpus=".2" -d -p 8545:8545 -p 30303:30303 \ --name=ethereum-node \ -v ethereum-data:/root/.ethereum ethereum/client-go \ --rpc --rpcaddr "127.0.0.1"
to stop and recreate the container
docker stop ethereum-node && docker rm ethereum-node
to go inside the container
docker exec -it ethereum-node bash
to test the RPC api
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' localhost:8545
or
curl -H "Content-Type: application/json" -X POST \ --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest", true],"id":1}' http://127.0.0.1:8545
see https://ethereum.gitbooks.io/frontier-guide/content/rpc.html
You may want to register your node at The Ethereum (centralised) network status monitor , in that case just follow https://github.com/ethereum/wiki/wiki/Network-Status
My Ethereum node is now running at http://ethereum.galaxiis.com
A better status page is in development using PHP with RPC