When most developers and admins think about deploying, managing, and working with Docker containers, the first thing they consider is the command line. After all, Docker was originally created as a command-line tool and there’s nothing you cannot do with Docker from the CLI (Command Line Interface). The Docker CLI is fast, flexible, and available on any machine that supports the Docker runtime engine. And given how many work with containers from third-party cloud hosts that don’t generally provide GUI tools for container environments, it makes perfect sense to manage your deployments from the command line.
But not every admin, developer, and user prefers the command line. Sure, when first learning the ins and outs of Docker, you should certainly start with the command line. After all, there is no better way to educate yourself on how containers are deployed and managed than with the CLI. Even still, when you are incredibly busy, the command line tools can get a bit unwieldy. On top of this, some advanced Docker features can get a bit cumbersome when used from the command line.
That’s why several companies have produced various types of GUI tools to help with the management of containers. These tools range from the overly simple to the incredibly complex, to the feature-rich to the feature-lacking (and everything in-between).
For example, you might have come across the official Docker Desktop client. Although this is a good tool for managing currently deployed containers, it doesn’t actually give you the option of building new container deployments within the GUI. In other words, you must deploy your containers from the command line, and then you can manage them from within the Docker Desktop GUI. Although this desktop client is a solid entry, it’s not exactly a one-stop-shop kind of tool that allows you to manage every single aspect of your Docker containers.
That’s where a tool like Portainer comes in handy.
I’ve already covered many aspects of Portainer in a series of tutorials here on TNS, including the deployment of Portainer, deploying full-stack applications with Portainer, managing secrets with Portainer, creating and using volumes in Portainer, and managing Docker Swarm with Portainer, even manage Kubernetes with Portainer. Of course, there will be more to come.
What Is Portainer?
Portainer is a universal container management tool that can work with both Docker and Kubernetes to make the deployment and management of containerized applications and services easier and more efficient. Portainer enjoys over 650,000 users and 21,700 GitHub stars, so it’s widely used and popular.
Over the past year, Portainer has become my go-to tool for managing container deployments. One of the main reasons for that is that Portainer actually makes working with containers understandable. For me, that makes it an obvious management platform for admins and developers of all skill levels.
You will be hard-pressed to find a more feature-rich and easy-to-use container management GUI than Portainer.
With Portainer you can:
- Reduce the complexity of single and multicluster container deployments.
- Work with a user-friendly UI.
- Codify best practices with the help of templates and default configurations.
- Work more consistently and reliably.
- Apply centralized access management and permissions.
Portainer makes it considerably easier to:
- Deploy and manage containers.
- Deploy and manage full-stack applications.
- Create and manage networks.
- Create and manage volumes.
- Create and manage templates.
- Create and manage services.
- Create and manage secrets.
- Create and manage environment variables.
- Create and manage configs (for non-sensitive information).
- Pull and manage images from various repositories.
- Manage users.
- Create and manage environments.
As you can see, there isn’t much you can’t do with Portainer.
The Portainer Workflow
One of my favorite aspects of Portainer is how it simplifies the container deployment and management workflow. For example, I can pull down an image, create a network, add a volume, create and save secrets, and then build and deploy either a container or a full-stack application that takes advantage of everything I’ve already created (Figure 1).
And many of those items can be easily reused for other deployments. Instead of having to build a complex manifest to include every aspect of the deployment, I can work with a GUI to select elements, add environment variables, and even configure various options such as restart policies, labels, working directories, users and so much more.
Portainer also makes it very easy to manage access to container elements. You can either give full access to all users or restrict access to specific users or groups on the system. With this feature, you could create specific groups on a per-task or department basis and then create various elements to be accessed only by those groups. And with the Portainer Business Edition, you get access to RBAC as well. As well, you can create various Environments (Figure 2) and then assign specific users to each.
For example, you might create a simple local environment to be used by developers and then give only developers access to it. You could also create a Kubernetes environment and assign specific admins to that. Or, you could create an environment that is attached to Microsoft Azure and assign that to a set group of trusted admins/developers.
You will be hard-pressed to find a more feature-rich and easy-to-use container management GUI than Portainer. This free tool makes it possible for anyone to get up to speed with container deployments faster and with fewer headaches than any other tool, in my opinion. Whether you’re just starting with containers, or you’re an old hat, Portainer should be the first (and last) web-based GUI you consider.
The New Stack is a wholly owned subsidiary of Insight Partners, an investor in the following companies mentioned in this article: Docker.