<p>While diving into Docker, Google Cloud and Kubernetes, and without clearly understanding all three of them yet, it seems to me these products are overlapping, yet they're not compatible.</p>

<p>For example, a <code>docker-compose.yml</code> file needs to be re-written so an app can be deployed to Kubernetes.</p>

<p>Could someone provide a high-level, rough description of where Docker, Docker Compose, Docker Cloud, and Kubernetes overlap and where one is dependent on the other?</p>

<p><strong><a href="https://www.docker.com/resources/what-container" rel="noreferrer">Containers</a></strong>:</p>
<ul>
<li>Containers are at the core of the other technologies listed here</li>
</ul>
<p><strong><a href="https://www.docker.com/" rel="noreferrer">Docker</a></strong>:</p>
<ul>
<li>Docker is a popular implementation of the technology that allows applications to be bundled into a container.</li>
<li><code>docker</code> is a command-line tool to manage images, containers, volumes, and networks</li>
</ul>
<p><strong><a href="https://docs.docker.com/compose/" rel="noreferrer">Docker Compose</a></strong></p>
<ul>
<li>Docker Compose is the declarative version of the docker cli</li>
<li>It can start one or more containers</li>
<li>It can create one or more networks and attach containers to them</li>
<li>It can create one or more volumes and configure containers to mount them</li>
<li>All of this is for use on a <em><strong>single</strong></em> host</li>
</ul>
<p><strong><a href="https://docs.docker.com/engine/swarm/" rel="noreferrer">Docker Classic Swarm</a></strong></p>
<ul>
<li>Docker swarm has been abandoned by Docker Inc. and is not being actively maintained or supported.</li>
<li>Docker Swarm is for running and connecting containers on <strong>multiple</strong> hosts.</li>
<li>Docker Swarm is a container cluster management and orchestration tool.</li>
<li>It manages containers running on multiple hosts and does things like scaling, starting a new container when one crashes, networking containers ...</li>
<li>The Docker Swarm file named stack file is very similar to a Docker Compose file</li>
<li>The only comparison between Kubernetes and Compose is at the most trivial and unimportant level: they both run containers, but this says nothing to help one understand what the two tools are and where they are useful. They are both useful for different things</li>
</ul>
<p><strong><a href="https://kubernetes.io/" rel="noreferrer">Kubernetes</a></strong></p>
<ul>
<li>Kubernetes (K8S) is a <strong>distributed container orchestration tool</strong> initially created by Google</li>
<li>It was open-sourced in 2014 and handed over to the Cloud Native Computing Foundation (CNCF) the following year</li>
<li>The CNCF is an industry body with <a href="https://landscape.cncf.io/members" rel="noreferrer">hundreds of members drawn from the majority</a> of large cloud, software and hardware companies</li>
<li>At the time of writing (late 2021) there are nearly a <a href="https://landscape.cncf.io/" rel="noreferrer">thousand K8S related projects</a> split into around twenty classes with a total of over $21 billion dollars in funding</li>
<li>Kubernetes (2021) is the most popular distributed system orchestrator in the world with <a href="https://www.redhat.com/en/resources/kubernetes-adoption-security-market-trends-2021-overview" rel="noreferrer">88% adoption</a></li>
<li>Because of its near ubiquity, K8S has become the most popular contemporary platform for innovative system development in 2021</li>
<li>Kubernetes is a competitor (more or less) to Docker swarm but does more stuff than docker swarm i.e a popular choice.</li>
</ul>
