This repo builds bitcoind in an auditable way, and packages it into a minimal Docker containers provided for various CPU architectures.
knots-latest (latest current version of Bitcoin Knots)core-latest (latest current version of Bitcoin Core)inq-latest (latest current version of Bitcoin Inquisition)NOTE: For an always up-to-date list see: https://hub.docker.com/r/lnliz/bitcoind/tags
v31.1 (most current)v31.0v30.3 (most current 30.x)v30.2v29.4.inq (inquisition - most current)v29.2.inqv29.1.inqv29.4.1.knots20260508 (knots - most current)v29.4.knots20260508v29.3.knots20260508v29.3.knots20260210v29.2.knots20251110v29.4 (most current 29.x)v29.3v29.2v29.1v29.0v28.4 (most current 28.x)v28.3v28.2v28.1v28.0v27.2First pull the image from Docker Hub:
docker pull lnliz/bitcoind:v31.1
NOTE: Running above will automatically choose native architecture of your CPU.
Or, to pull a specific CPU architecture:
docker pull lnliz/bitcoind:v31.1-arm64v8
First of all, create a directory in your home directory called .bitcoin
Next, create a config file. You can take a look at the following sample: thebox-compose-system (1).
Some guides on how to configure bitcoin can be found here (bitcoin git repo)
Then to start bitcoind, run:
docker run -it --rm --detach \
-v ~/.bitcoin:/data/.bitcoin \
-p 8332:8332 \
-p 8333:8333 \
-p 28332:28332 \
-p 28333:28333 \
--name bitcoind \
lnliz/bitcoind:v31.1
That will run bitcoind such that:
~/.bitcoin on your host machine,8332 will be reachable for the RPC communication,8333 will be reachable for the peer-to-peer communication,28332 will be reachable for ZMQ block notifications,28333 will be reachable for ZMQ transaction notifications,bitcoind,bitcoind binary is run as unprivileged user bitcoind (UID=1000),You can also use Bitcoin Inquisition by using different image tag:
docker pull lnliz/bitcoind:v29.4.inq
You can also use Bitcoin Knots by using different image tag:
docker pull lnliz/bitcoind:v29.1.knots20250903
To issue any commands to a running container, do:
docker exec -it bitcoind BINARY COMMAND
Where:
BINARY is either bitcoind, bitcoin-cli, bitcoin-tx, (or bitcoin-wallet on v0.18+) andCOMMAND is something you'd normally pass to the binaryExamples:
docker exec -it bitcoind bitcoind --help
docker exec -it bitcoind bitcoind --version
docker exec -it bitcoind bitcoin-cli --help
docker exec -it bitcoind bitcoin-cli -getinfo
docker exec -it bitcoind bitcoin-cli getblockcount
Here is a docker-compose.yml for mainnet
version: '3'
services:
bitcoin:
container_name: bitcoind
user: 1000:1000
image: lnliz/bitcoind:v31.1
volumes:
- ./bitcoin:/data/.bitcoin
restart: on-failure
stop_grace_period: 15m30s
ports:
- "8333:8333"
- "8332:8332"
- "28332:28332"
- "28333:28333"
First, ensure that the bitcoin/ folder is in the directory containing docker-compose.yml.
Then, Docker Compose will mount the bitcoin/ folder to /data/.bitcoin.
git tag push, the entire process is automated, with each step printed, and the code aiming to be easy to followqemu]make check test suite, BerkeleyDB is build separately [here]amd64, arm64v8, and arm32v7git-tags] are [build automatically], and with an [auditable trace]git tag pushes result Docker image to Docker Hublnd version gets overridden, previous one is preserved)final images are based on Alpine for minimum base sizestripped]git-tag build is tagged with a unique tag numberNOTE: ZMQ
blockandtxports are set to28332and28333respectively.
Here are some possible reasons why.
The permissions for the bitcoin data direct is assumed to be UID 1000 (first user).
If you have a different setup, please do the following
# where ".bitcoin" is the data directory
sudo chown -R 1000.1000 $HOME/.bitcoin
The work here was initially based on lncm/docker-bitcoind, but has diverged since.
Content type
Image
Digest
sha256:23f5c6b26…
Size
22 MB
Last updated
25 days ago
docker pull lnliz/bitcoind:core-latest