<?xml version="1.0" encoding="utf-8" standalone="yes"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><script src="https://www.rss.style/js/atom-style.js" xmlns="http://www.w3.org/1999/xhtml"/><title>Tower of Kubes</title><link rel="self" type="application/atom+xml" hreflang="en" href="https://www.towerofkubes.com/tags/docker/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://www.towerofkubes.com/tags/docker/"/><link rel="alternate" type="application/rss+xml" hreflang="en" href="https://www.towerofkubes.com/tags/docker/index.xml"/><id>/</id><updated>2025-10-16T00:00:00Z</updated><author><name>Ro'i Bandel</name></author><generator>Hugo 0.157.0</generator><entry><title>How To Install Docker</title><link rel="alternate" type="text/html" hreflang="en" href="https://www.towerofkubes.com/articles/how-to-install-docker/"/><id>https://www.towerofkubes.com/articles/how-to-install-docker/</id><updated>2025-10-16T00:00:00Z</updated><summary type="html">Step-by-step Docker Engine install on Linux and WSL with post-install steps, verification commands, and alternative container runtime options.</summary><content type="html"><![CDATA[<p>This is how I like to install Docker on my workstations.</p>

<h2 class="relative group">Choose Environment
    <div id="choose-environment" class="anchor"></div>
    
</h2>
<p>Docker runs best on Linux. If using Linux, skip to <a href="/articles/how-to-install-docker/#install-docker" >Install Docker</a> below. If using Windows, read the <a href="/articles/how-to-install-docker/#wsl" >WSL</a> section first.</p>

    <div class="admonition note">
      <div class="admonition-header"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"/></svg>
        <span>Note</span>
      </div>
      <div class="admonition-content">
        <p>I don’t use macOS so cannot advise on installation methods for Docker on macOS. However, Lima, Colima and Rancher Desktop are possible options. See <a href="/articles/how-to-install-docker/#alternative-docker-installation-methods" >Alternative Docker Installation Methods</a> below.</p>
      </div>
    </div>
<h2 class="relative group">WSL
    <div id="wsl" class="anchor"></div>
    
</h2>
<p>On Windows, Docker Engine can be installed inside WSL. This is an alternative to using Docker Desktop (unlike Docker CE, Docker Desktop is not open source).</p>

<h3 class="relative group">Install WSL command
    <div id="install-wsl-command" class="anchor"></div>
    
</h3>
<p>You can install everything you need to run WSL with a single command. Open PowerShell in administrator mode by right-clicking and selecting “Run as administrator”, enter the <code>wsl --install</code> command, then restart your machine.</p>
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="n">wsl</span> <span class="p">-</span><span class="n">-install</span></span></span></code></pre></div></div>

    <div class="admonition note">
      <div class="admonition-header"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"/></svg>
        <span>Note</span>
      </div>
      <div class="admonition-content">
        <p>This command will enable the features necessary to run WSL and install the Ubuntu distribution of Linux. (<a href="https://learn.microsoft.com/en-us/windows/wsl/basic-commands#install"  target="_blank" rel="noreferrer">This default distribution can be changed</a>).</p>
      </div>
    </div>
<h2 class="relative group">Install Docker
    <div id="install-docker" class="anchor"></div>
    
</h2>

    <div class="admonition note">
      <div class="admonition-header"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"/></svg>
        <span>These commands all need to run in a Linux shell.</span>
      </div>
    </div>
<h3 class="relative group">1. Install using the official <a href="https://github.com/docker/docker-install"  target="_blank" rel="noreferrer">Docker installation script</a>
    <div id="1-install-using-the-official-docker-installation-script" class="anchor"></div>
    
</h3>
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">/bin/sh -c <span class="s2">"</span><span class="k">$(</span>curl -fsSL https://get.docker.com<span class="k">)</span><span class="s2">"</span></span></span></code></pre></div></div>

    <div class="admonition important">
      <div class="admonition-header"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"/></svg>
        <span>If you are using WSL, you may get a warning about Docker Desktop. Since we do not use Docker Desktop, simply <strong>ignore</strong> this warning (wait 20 seconds and the installation will resume).</span>
      </div>
    </div>
<h3 class="relative group">2. After the install completes, complete the <a href="https://docs.docker.com/engine/install/linux-postinstall/"  target="_blank" rel="noreferrer">Linux post-installation steps for Docker Engine</a> by running the following commands
    <div id="2-after-the-install-completes-complete-the-linux-post-installation-steps-for-docker-engine-by-running-the-following-commands" class="anchor"></div>
    
</h3>
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo usermod -aG <span class="s2">"docker"</span> <span class="s2">"</span><span class="si">${</span><span class="nv">USER</span><span class="si">}</span><span class="s2">"</span>
</span></span><span class="line"><span class="cl">newgrp docker
</span></span><span class="line"><span class="cl">sudo systemctl <span class="nb">enable</span> --now docker.service
</span></span><span class="line"><span class="cl">sudo systemctl <span class="nb">enable</span> --now containerd.service</span></span></code></pre></div></div>

<h2 class="relative group">Optional: Confirm Docker Is Installed
    <div id="optional-confirm-docker-is-installed" class="anchor"></div>
    
</h2>

    <div class="admonition note">
      <div class="admonition-header"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"/></svg>
        <span>These commands all need to run in a Linux shell.</span>
      </div>
    </div>
<h3 class="relative group">1. Confirm <code>docker</code> is installed and check versions
    <div id="1-confirm-docker-is-installed-and-check-versions" class="anchor"></div>
    
</h3>
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">docker version
</span></span><span class="line"><span class="cl">docker --version</span></span></code></pre></div></div>

<h3 class="relative group">2. Confirm the <code>docker buildx</code> and <code>docker compose</code> plugins are also installed (likely already installed alongside <code>docker</code>)
    <div id="2-confirm-the-docker-buildx-and-docker-compose-plugins-are-also-installed-likely-already-installed-alongside-docker" class="anchor"></div>
    
</h3>
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">docker buildx version
</span></span><span class="line"><span class="cl">docker compose version</span></span></code></pre></div></div>

<h3 class="relative group">3. Run a test container
    <div id="3-run-a-test-container" class="anchor"></div>
    
</h3>
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">docker run --rm hello-world</span></span></code></pre></div></div>

<h2 class="relative group">Alternative Docker Installation Methods
    <div id="alternative-docker-installation-methods" class="anchor"></div>
    
</h2>

    <div class="admonition note">
      <div class="admonition-header"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"/></svg>
        <span>Note</span>
      </div>
      <div class="admonition-content">
        <p>I do not suggest Docker Desktop as an installation method because it is not open source.</p>
      </div>
    </div><ul>
<li><strong>Manual Install:</strong> Follow the steps in <a href="https://docs.docker.com/engine/install/"  target="_blank" rel="noreferrer">Install | Docker Docs</a> according to your distribution.</li>
<li><strong>Ansible:</strong> Use <a href="https://github.com/geerlingguy/ansible-role-docker"  target="_blank" rel="noreferrer">geerlingguy/ansible-role-docker: Ansible Role - Docker</a>.</li>
<li><strong>Docker on NixOS:</strong> <a href="https://nixos.wiki/wiki/Docker"  target="_blank" rel="noreferrer">Docker - NixOS Wiki</a>.</li>
<li><strong>Rancher Desktop:</strong> Follow <a href="https://docs.rancherdesktop.io/getting-started/installation/"  target="_blank" rel="noreferrer">Installation | Rancher Desktop Docs</a>.</li>
<li><strong>Lima:</strong> <a href="https://lima-vm.io/"  target="_blank" rel="noreferrer">Lima</a>; <a href="https://github.com/lima-vm/lima"  target="_blank" rel="noreferrer">GitHub - lima-vm/lima: Linux virtual machines, with a focus on running containers</a>.</li>
<li><strong>Colima:</strong> <a href="https://github.com/abiosoft/colima"  target="_blank" rel="noreferrer">GitHub - abiosoft/colima: Container runtimes on macOS (and Linux) with minimal setup</a>.</li>
</ul>

<h2 class="relative group">Docker Alternatives for Running OCI Containers
    <div id="docker-alternatives-for-running-oci-containers" class="anchor"></div>
    
</h2>

    <div class="admonition note">
      <div class="admonition-header"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"/></svg>
        <span>Note</span>
      </div>
      <div class="admonition-content">
        <p>All of these tools can run <a href="https://opencontainers.org/"  target="_blank" rel="noreferrer">OCI containers</a> (sometimes referred to as “Docker containers”).</p>
      </div>
    </div><ul>
<li><a href="https://podman.io/"  target="_blank" rel="noreferrer">Podman</a> and <a href="https://podman-desktop.io/"  target="_blank" rel="noreferrer">Podman Desktop</a></li>
<li><a href="https://github.com/containerd/nerdctl"  target="_blank" rel="noreferrer">nerdctl (contaiNERD ctl)</a></li>
<li><a href="https://kubernetes.io/"  target="_blank" rel="noreferrer">Kubernetes</a></li>
</ul>

<h2 class="relative group">Resources
    <div id="resources" class="anchor"></div>
    
</h2>
<ul>
<li><a href="https://docs.docker.com/engine/install/"  target="_blank" rel="noreferrer">Install | Docker Docs</a></li>
<li><a href="https://docs.docker.com/engine/install/linux-postinstall/"  target="_blank" rel="noreferrer">Post-installation steps | Docker Docs</a></li>
<li><a href="https://github.com/docker/docker-install"  target="_blank" rel="noreferrer">GitHub - docker/docker-install: Docker installation script</a></li>
<li><a href="https://learn.microsoft.com/en-us/windows/wsl/install"  target="_blank" rel="noreferrer">Install WSL | Microsoft Learn</a></li>
</ul>
<hr>
<p><em>Featured image by <a href="https://unsplash.com/@carrier_lost?utm_source=hugo&utm_medium=referral"  target="_blank" rel="noreferrer">Ian Taylor</a> on <a href="https://unsplash.com/photos/blue-and-red-cargo-ship-on-sea-during-daytime-jOqJbvo1P9g?utm_source=hugo&utm_medium=referral"  target="_blank" rel="noreferrer">Unsplash</a>.</em></p>
]]></content><author><name>Ro'i Bandel</name></author><category term="docker" label="Docker" scheme="https://www.towerofkubes.com/tags/docker/"/><category term="guide" label="Guide" scheme="https://www.towerofkubes.com/tags/guide/"/><category term="snippets" label="Snippets" scheme="https://www.towerofkubes.com/tags/snippets/"/><published>2025-10-16T00:00:00Z</published></entry><entry><title>Docker User Interfaces</title><link rel="alternate" type="text/html" hreflang="en" href="https://www.towerofkubes.com/articles/docker-user-interfaces/"/><id>https://www.towerofkubes.com/articles/docker-user-interfaces/</id><updated>2025-09-17T00:00:00Z</updated><summary type="html">There are different User Interfaces that help use Docker.</summary><content type="html"><![CDATA[<p>There are different User Interfaces that help use Docker.</p>

<h2 class="relative group">Web UI
    <div id="web-ui" class="anchor"></div>
    
</h2>
<ul>
<li><a href="https://docs.portainer.io/start/install-ce"  target="_blank" rel="noreferrer"><strong>Portainer CE</strong></a></li>
<li><a href="https://komo.do/"  target="_blank" rel="noreferrer"><strong>Komodo</strong></a></li>
<li><a href="https://dockge.kuma.pet/"  target="_blank" rel="noreferrer"><strong>Dockge</strong></a></li>
<li><a href="https://dev.yacht.sh/"  target="_blank" rel="noreferrer"><strong>Yacht</strong></a></li>
<li><strong>More:</strong> <a href="https://github.com/veggiemonk/awesome-docker/blob/master/README.md#web"  target="_blank" rel="noreferrer">Web | awesome-docker</a></li>
</ul>

<h2 class="relative group">Desktop UI
    <div id="desktop-ui" class="anchor"></div>
    
</h2>
<ul>
<li><a href="https://www.docker.com/products/docker-desktop/"  target="_blank" rel="noreferrer"><strong>Docker Desktop</strong></a></li>
<li><a href="https://podman-desktop.io/"  target="_blank" rel="noreferrer"><strong>Podman Desktop</strong></a></li>
<li><a href="https://rancherdesktop.io/"  target="_blank" rel="noreferrer"><strong>Rancher Desktop by SUSE</strong></a></li>
<li><strong>More:</strong> <a href="https://github.com/veggiemonk/awesome-docker/blob/master/README.md#terminal"  target="_blank" rel="noreferrer">Desktop | awesome-docker</a></li>
</ul>

<h2 class="relative group">TUI (Terminal UI)
    <div id="tui-terminal-ui" class="anchor"></div>
    
</h2>
<ul>
<li><a href="https://www.docker.com/products/cli/"  target="_blank" rel="noreferrer"><strong>Docker CLI</strong></a></li>
<li><a href="https://github.com/jesseduffield/lazydocker"  target="_blank" rel="noreferrer"><strong>lazydocker</strong></a></li>
<li><strong>More:</strong> <a href="https://github.com/veggiemonk/awesome-docker/blob/master/README.md#terminal"  target="_blank" rel="noreferrer">Terminal | awesome-docker</a></li>
</ul>

<h2 class="relative group">My Experiences
    <div id="my-experiences" class="anchor"></div>
    
</h2>
<p>I first started using Docker with Podman CE in <a href="https://www.openmediavault.org/"  target="_blank" rel="noreferrer">openmediavault</a>. <a href="https://omv-extras.org"  target="_blank" rel="noreferrer">OMV-Extras.org</a> used to have an easy install option for Docker + Portainer CE.</p>

    <div class="admonition note">
      <div class="admonition-header"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"/></svg>
        <span>Note</span>
      </div>
      <div class="admonition-content">
        <p>I see <a href="https://www.reddit.com/r/OpenMediaVault/comments/1btte0u/omv_7_portainer/"  target="_blank" rel="noreferrer">OMV 7 no longer has Portainer CE</a> and <a href="https://wiki.omv-extras.org/doku.php?id=omv7:docker_in_omv"  target="_blank" rel="noreferrer">the current guide</a> recommends using <a href="https://wiki.omv-extras.org/doku.php?id=omv7:omv7_plugins:docker_compose"  target="_blank" rel="noreferrer">openmediavault-compose plugin</a> instead. Of course, Portainer  can still be installed manually.</p>
      </div>
    </div><p>Initially, I was using the Portainer Web UI to deploy containers manually, until I learned about <a href="https://docs.docker.com/compose/"  target="_blank" rel="noreferrer">Docker Compose</a> and <a href="https://docs.portainer.io/user/docker/stacks"  target="_blank" rel="noreferrer">Portainer Stacks</a>. I quickly noticed that defining all the services in one file was quicker and more reproducible than manually configuring containers in Portainer. I continued using Portainer Stacks as my main form of container deployment, eventually transferring all my existing containers to stacks. I noticed that compose stacks that are deployed <em>outside</em> Portainer can be viewed but not managed by the Portainer UI, so I defaulted to deploying all Stacks through Portainer.</p>
<p>I am aware that some people don’t like Portainer for various reasons. However, it has been rock-solid for me through the years that I’ve been using it. I’ve also never found the Community Edition of Portainer to be too limiting. There are a few minor things that I don’t like about it, but I still appreciated having a UI, and even experimented with some of Portainer’s more advanced features like <a href="https://www.portainer.io/blog/portainer-agent-vs-edge-agent"  target="_blank" rel="noreferrer">Agents/Edge Agents</a> (for management of multiple nodes) and <a href="https://portainer.io/blog/gitops-with-portainer-real-world-use-cases-and-worked-examples"  target="_blank" rel="noreferrer">GitOps</a>. Eventually, I learned how to use the Docker CLI and <code>docker compose</code> commands well enough to the point that I don’t <em>need</em> the Web UI for anything, however I still like having a UI for my homelab.</p>
<p>Throughout the years, there have been many other Web UIs. I tried some of them including Yacht. Some of these UIs did not survive and got abandoned eventually (including Yacht). Portainer continued to be maintained. It’s likely the fact that <a href="https://www.portainer.io/company/about-us"  target="_blank" rel="noreferrer">Portainer is a company</a> with paid solutions helped. Interestingly, I see Portainer much more in the homelab community than in the professional world, so I don’t know how much the company is really making. Nevertheless, Portainer looks like it’s here to stay and recently went through a rebrand (<a href="https://portainer.io/blog/why-we-rebranded-portainer"  target="_blank" rel="noreferrer">Why we rebranded Portainer</a>).</p>
<p>More recently, I have heard about two newer Web UIs, Komodo and Dockge. Both look good, though part of me wonders whether they will last a long time like Portainer, or get abandoned eventually like Yacht.</p>
<p>On the Desktop UI front, I have avoided using Docker Desktop for many years. I felt like I had no need for it since I had Portainer CE working well as a Web UI, and also learned to use the Docker CLI commands. I was also concerend about the <a href="https://docs.docker.com/subscription/desktop-license/"  target="_blank" rel="noreferrer">Docker Desktop license agreement</a>. Unlike Docker CLI, Docker Desktop <strong>is not</strong> open-source.</p>
<p>I did briefly try Docker Desktop a few months ago before uninstalling it. It is useful on Windows, however I found that installing regular Docker inside WSL also works well.</p>
<p>I have also tried Podman Desktop. Unlike most of the tools in this note, Podman Desktop is not a Docker UI but instead a Podman UI. Nevertheless, Podman can run Docker containers thanks to the <a href="https://opencontainers.org/"  target="_blank" rel="noreferrer">Open Container Initiative</a>.</p>

<h2 class="relative group">My Choice
    <div id="my-choice" class="anchor"></div>
    
</h2>
<p>I’m in the process of fully moving my homelab from Docker to a Kubernetes cluster. My Kubernetes UIs of choice are <a href="https://argo-cd.readthedocs.io/"  target="_blank" rel="noreferrer">Argo CD</a> (Web UI and GitOps), <a href="https://kubernetes.io/docs/reference/kubectl/"  target="_blank" rel="noreferrer">kubectl</a> (CLI) and <a href="https://k9scli.io/"  target="_blank" rel="noreferrer">K9s</a> (TUI), though there are many others as well which I may try.</p>
<p>I still want to try Komodo some day. I imagine, if I were to ever re-engineer my homelab, but choose to go back to Docker instead of Kubernetes, I would want to have a Web UI and some type of GitOps solution. Portainer and Komodo both have GitOps support. Dockge doesn’t which rules it out for me.</p>
<hr>
<p><em>Featured image by <a href="https://unsplash.com/@ventiviews?utm_source=hugo&utm_medium=referral"  target="_blank" rel="noreferrer">Venti Views</a> on <a href="https://unsplash.com/?utm_source=hugo&utm_medium=referral"  target="_blank" rel="noreferrer">Unsplash</a>.</em></p>
]]></content><author><name>Ro'i Bandel</name></author><category term="docker" label="Docker" scheme="https://www.towerofkubes.com/tags/docker/"/><category term="homelab" label="Homelab" scheme="https://www.towerofkubes.com/tags/homelab/"/><published>2025-09-17T00:00:00Z</published></entry></feed>