Portainer and dyrector.io are both container management platforms with some overlapping scopes and capabilities. But there are some important differences.
Both platforms make life easier for Docker and Kubernetes users but they’re for different use cases.
Portainer identifies itself as a universal container management platform that doesn’t lock users into a single technology or vendor. dyrector.io establishes itself as an open-source continuous deployment platform.
For the purpose of this blog post, we compared the free edition of both open-source platforms. Portainer offers a wide range of functionalities without limitations in their platform’s Community Edition (CE), while packaging up some premium features in their Business Edition not available in CE. At the same time, self-managed dyrector.io comes with no restrictions, as all features are 100% open-source.
The cool thing about both is that they aim to be technology and vendor agnostic. This means that both platforms can be useful when you work with Docker or K8s, and you can deploy containerized apps to all kinds of providers, even on-premises environments. This is a useful trait for users who already have their infrastructure set, or teams who still have the infrastructure design part ahead of them and would prefer to pick the best provider for their solutions.
Another common trait between the two is that they offer CD capabilities. Portainer offers both polling and webhook for this purpose, while dyrector.io operates with webhooks. One more similarity they share is that both provide API to their users, so they’re able to customize Portainer and dyrector.io’s functionalities to their purposes.
Besides, both of them offer preset applications as templates which you can deploy with little to no configuration.
At first glance, Portainer seems like a Docker GUI. Portainer lists all kinds of information about not only the containers, but the images and the volumes stored on the environment where Portainer is hosted. Extended Docker capabilities include the management of Docker Swarm, as well, something that dyrector.io doesn’t deal with.
Besides the GUI, Portainer has API capabilities for Docker management and provisioning. Essentially, Portainer, as a more mature product, has a wide range of integrations. Teams in Portainer enable users to collaborate when they manage their containers.
Portainer Business Edition provides S3 compatible configuration backups and host management, which might be useful to users who don’t feel like working with SSH keys.
Compared to Portainer, dyrector.io acts as a GUI where you can configure and manage versions of your containerized applications. For example, when you develop an application that uses a PostgreSQL database, you can configure both images as a deployable stack. The platform is designed to support de facto release management practices, as it offers rolling and incremental version types, rollbacks, and tracks the deployment statuses of said versions.
The configuration management capabilities provide deep level customization with Docker and Kubernetes specific options, such as ingress variables. Configuration backups are built-in, as the platform saves them automatically. Contrary to Portainer, dyrector.io doesn’t support Docker Swarm.
As an emerging platform, a long list of integrations includes chat notifications in Slack, Teams, and Discord, where users can stay up to date on the recent activities of their teammates. The platform provides file injection from S3 buckets.
Similar to Portainer, you’re able to gain information about the runtimes on your infrastructure, inspect and log them through the platform. Therefore, the platform offers a shortcut to users who need a quick look at their containers without SSH access.
Multi-instance deployment is another interesting use case of dyrector.io. It’s useful when you have dozens or hundreds of deployment targets where you’d like to set up your containers. Instead of manually going through the deployments, you can select them and trigger the deployment to all the targets at the same time.
Both platform’s agent setup workflows are similar at the beginning. You’ll have to run a script that’s going to install the agent on the eventual deployment target. Portainer works with a general script that’s only responsible for the agent’s runtime, you’ll have to manually enter your environment’s IP address and port. On the contrary, authorization is baked into dyrector.io agent’s install script, as the platform generates a unique script for a one-time setup.
Due to this difference, we were unable to connect Portainer’s agent to our instance of the platform. It was even more problematic as we didn’t receive a meaningful error message to solve the problem, no matter what we did to firewall rules on said environments. In the meantime, we were able to spark up dyrector.io’s agent to multiple VPS providers with ease.
Portainer acts like an in-depth Docker GUI that leaves room for lots of Docker specific capabilities, including GitOps integrations to facilitate to CD pipelines. The biggest difference between Portainer and dyrector.io is the latter’s ability to manage and deploy versions with several capabilities designed to serve collaboration. Portainer offers detailed Docker and infrastructure management functionality, however, dyrector.io focuses on release management instead.
This blogpost was written by the team of dyrector.io. dyrector.io is an open-source continuous delivery & deployment platform with version management.
Find the project on GitHub.