A about a week ago I’ve twitted about dockerizing all of IRI-playbook’s services.
This is a major step in the playbook’s evolution to become more versatile, enhance security and support additional distributions.
- New “dockerized” release is being worked on
- Will support Debian in addition to CentOS and Ubuntu
- Support load-balancing
- Users wanting to use the new release will have to re-install the node
Docker is a container technology that allows a user to package an application with all the parts it needs to run. Docker runs as a service on the server (the Host system) and manages containers running on the Host. To keep it simple: it can create, start, stop and restart containers. Containers are shipped as Docker images: you download (pull) an image for latest IRI and then tell docker to run it.
Applications in Docker Containers
IRI Playbook typically installs more than 10 services on a node. Just to name a few: IRI, Grafana, Prometheus, Nelson, Field and IOTA Peer Manager. You will not feel any difference when services run within containers. The advantages might not be visible to the user, but in terms of maintenance and versatility, the advantages are great.
I’ll try to briefly explain why:
Each application has its own dependencies on which it depends in order to run. For example, IRI requires Java and IOTA Peer Manager requires nodejs. These have to be installed on the node before being able to use IRI or IOTA Peer manager.
The problem with having to install nodejs or Java on the Host system is that different applications may require different versions of Java or nodejs. That can lead to a lot of mess on the Host.
It is way more efficient to bundle all the requirements into a single container: IRI’s Docker image already ships with right version of Java, Nelson’s Docker image with the right version of nodejs and so on. There is no conflict when running different applications in containers using a different version of nodejs, because the container filesystem is isolated from the Host. The last thing you want are sleepless nights trying to resolve package conflicts ;).
More Advantages to Docker
Here are a few more benefits to running applications inside of containers:
- Easy to upgrade or downgrade
- Security: being isolated from the host system, only required components are allowed access to the container. For example directories, files and network ports
- Ability to limit CPU and Memory shares per container
- Portability of applications
The new dockerized playbook makes it possible to support 3 major Linux distributions:
CentOS, Ubuntu and now also Debian!
What is Being Worked on at the Moment?
The new feature branch is where all the work is being done. All services have already been ported to run inside containers.
At the moment, some community members are helping test the new version (thanks to Ulairi, Mr. Andersen, uwec, dterandgo, Luca and Knobby)
Last but not least, I plan to integrate the iri-lb-haproxy project I have been working on. This will allow node operators who have multiple nodes to use one (or more) of their nodes as load balancers! (this feature might be added and fully working a little after the dockerized version is ready).
The Release Phase
The older version of the playbook will not be supported any longer. It is too time consuming to maintain and support 2 different versions of the playbook. Users will be encouraged to upgrade to the new version. This will require a complete re-install of the node.
Feel free to ping me on Twitter or IOTA’s Discord for any questions!
Thanks for the support!
If you like this project and would like to donate please use this address (and thanks!):