Installing IRI with Docker

In order to install IRI with Docker, there are certain requirements to be considered. It should be noted that IRI only works on 64-bit architectures.
  • Docker 17.05+ (For multi-stage build support)

Docker

Docker is a tool designed to make it easier to create, deploy, and run applications by using containers. Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package.
It is multiplatform, meaning that it is supported on the following platforms:
  • Linux
  • Mac OSX
  • Windows

Install Docker

Follow the official Docker Installation guide to proceed.

Test Docker

Test the Docker installation by executing the following commands from a terminal session.
  • Note: depending on how you have installed Docker, you may need to use the sudo command to execute Docker on Mac OSX or Linux platforms.
docker run hello-world
If the command above prints some informational text, then your Docker installation was successful.

Pull the Prebuilt Docker Container

If you prefer not to build the IRI Docker container from source, follow this step. Otherwise, proceed to the Build Docker Container from Source step.
docker pull iotaledger/iri:latest
Now you may skip to the step Running the Node.

Build Docker Container from Source

This step is not required, you can skip ahead to the section Running the Node if you have used the prebuilt Docker image.
To build from source, you must Install GIT.
git clone https://github.com/iotaledger/iri.git cd iri export TAG=$(git describe --tags $(git rev-list --tags --max-count=1)) git checkout $TAG docker build -t iri .

Running the Node

Start the IRI node.
  • Note: the /path/to/data in the following examples will be the path on your host where the tangle data will be stored persistently.

Using the Prebuilt Docker Container from Dockerhub

docker run -d -p 14265:14265 -p 15600:15600 -p 14600:14600/udp -v /path/to/data:/iri/data --name iri iotaledger/iri:latest --remote -p 14265

Using the Docker Container built from source

docker run -d -p 14265:14265 -p 15600:15600 -p 14600:14600/udp -v /path/to/data:/iri/data --name iri iri:latest --remote -p 14265

Logging

The above commands run IRI in daemon mode, so in order to view the process output, issue the following command.
docker logs -f iri

Stopping

To stop and remove the IRI container, execute the following commands.
docker stop iri
docker rm iri

Restarting

If you wish to have the IRI container start on every boot, add the following flag to the Docker run command.
--restart=always

Port Mapping

IRI by default uses three ports. These ports need to be mapped to machine from an external static IP address.
  • UDP neighbor peering port (default is 14600)
  • TCP neighbor peering port (default is 14600)
  • TCP API port (default is 14265)

Checking the Node Status

Using curl and jq you can test the TCP API port.
sudo apt install -y curl jq curl -s http://localhost:14265 -X POST -H 'X-IOTA-API-Version: 1' -H 'Content-Type: application/json' -d '{"command": "getNodeInfo"}' | jq

Configuring the Node

The node can be configured by passing command line arguments to the IRI jar when invoked, however a configuration file can also be used.
# Create an INI file like the one below, lets say iri.ini
[IRI]
PORT = 14265
UDP_RECEIVER_PORT = 14600
NEIGHBORS = udp://my.favorite-iri-node.com:14600
IXI_DIR = ixi
DEBUG = false
DB_PATH = db

A new mount point for this configuration file will need to be added to the Docker run command.
-v /path/to/conf:/iri/conf

For more detailed configuration options, please see the IRI Docker Documentation on GitHub.
The configuration will be read from disk.

Finding Neighbours

In order to allow your node to sync the tangle, you must find neighbours for your node. Once you have found and configured neighbors for your node, they must manually approve your node before the syncing will take place.
Please follow the link below for more details.
Finding Neighbours