Docker’s CLI tools are undoubtedly the best option for your containerization experiments when you’re just starting out. But once you’ve grown familiar with terminal commands and deployed dozens of services, menu-based UIs are a lot more convenient for controlling your arsenal. Portainer is typically the most recommended tool for the job, but after using it for well over two years, I’m starting to grow tired of its overly convoluted design and paywalled features. As such, I’ve started looking into other container management platforms. While Komodo, Dockage, and Yacht have certain advantages over Portainer, I have to admit that they tend to fall flat in certain respects. But after running into Dockhand and testing its container management prowess firsthand, I have to crown it as the best Portainer alternative – at least as far as Docker environments are concerned.

👁 Accessing Runtipi on a MacBook
5 things I do to simplify self-hosting

Building a container empire doesn't have to be difficult

Dockhand pairs a streamlined UI with essential container management tools

Including remote host monitoring, vulnerability scans, and notification channels

Compared to a terminal interface, Portainer definitely has more QoL options for self-hosting enthusiasts. However, its web UI hides many of the important settings behind waves of menus, and I have to sift through numerous pages before I can access the essential container management options. Take container logs, for example. If a certain service acts fishy, I’d have to go from the Dashboard to Containers, choose the specific service from the list, and find the little Logs button just to check what’s going on inside the app. The same holds true for executing commands inside a container and checking the system resources hogged by it.

In contrast, Dockhand offers a neat UI that, despite featuring every essential tool in the sidebar, doesn’t seem overwhelming in the slightest. It has dedicated Logs and Shell tabs, where I can quickly choose the container and get cracking with my troubleshooting tasks. Likewise, the Dashboard includes an overview of my Docker environments, while the Containers section lists everything from the operation status, uptime, and (internal) IP addresses to the image details and resource consumption metrics of my services. Everything is clearly organized, too, and I don’t have to switch between multiple tabs just to find the option I’m looking for. Personally, Komodo has a simple Compose integration, but Dockhand can also use compose.yml files and .env configs to spin up containers.

Dockhand can even scan my images for vulnerabilities once I arm it with Trivy and Grype, and doing so is as simple as using the Pull button for each tool within the Security tab of my Docker nodes. Unlike Portainer, which paywalls the alert mechanism behind its business edition, Dockhand can send SMTP and Apprise notifications to keep me up to date on my Docker containers. It also includes typical network and volume management tools, and lets me modify entire directories inside other containers. Portainer also has an events list, but Dockhand’s activity log is far more detailed when it comes to describing container operations.

Dockhand's automatic updates and schedules make it even more useful

Besides its clean interface, I adore the extra QoL services that are included in Dockhand. Rather than relying on a separate container or Git repos to pull updates, Dockhand can scan my image collection for the newest releases. When I give the word, it can also pull the latest version of the images, shut down my existing containers, and use the updated images to spin up new instances. I’ve got a couple of mission-critical monitoring, networking, and backup services running in my home lab. Since Dockhand can selectively update my containers, I don’t have to worry about a broken image bringing down important services when I bulk-update my self-hosted arsenal.

As if that’s not enough, Dockhand has automated schedules to clear unused containers, their logs, and orphaned storage volumes. And if I don’t want the platform to randomly prune data on certain nodes, I can modify the frequency of these tasks as well.

Spinning up Dockhand is pretty simple

And you can use a central UI to manage multiple Docker instances

Just like its easy-to-use interface, deploying Dockhand is a cakewalk, even if you’re new to hosting your own apps. Once you’ve created a directory for its data, you can add it to the docker run command (or compose.yml config file) from the official website to get it up and running.

Plus, Dockhand also supports remote monitoring, which is a godsend when you’ve got as many Docker nodes as I do. There are a couple of ways to pull data from multiple nodes into a central Dockhand interface, including a direct connection to the Docker Engine API via the TCP port. But you can also deploy the Hawser agent to listen for incoming Dockhand requests, or use it in edge mode to create an outbound WebSocket link to your container management hub if you’re relying on a VPS-based node.

Dockhand makes controlling Docker containers enjoyable

As someone who has been burned out by Portainer, Dockhand checks all my boxes for a container management platform. Sure, it may not support Podman instances, but I already rely on Cockpit (and the Cockpit-Podman plugin) to access the services deployed via the FOSS container runtime. My only complaint with Dockhand is that it locks role-based access control and LDAP/Active Directory authentication behind a paywall. But since I can use OpenID Connect to pair it with my Authentik server, I guess I can let that minor issue slide for now.