<p>I know that Docker and Kubernetes aren’t direct competitors. Docker is the container platform and containers are coordinated and scheduled by Kubernetes, which is a tool. </p>

<p>What does it really mean and how can I deploy my app on Docker for Azure ? </p>

Nedzad G
<h1>Short answer:</h1>

<ul>
<li><p>Docker (and containers in general) solve the problem of packaging an application and its dependencies. This makes it easy to ship and run everywhere.</p></li>
<li><p>Kubernetes is one layer of abstraction above containers. It is a distributed system that controls/manages containers.</p></li>
</ul>

<p>My advice: because the <a href="https://landscape.cncf.io/" rel="noreferrer">landscape</a> is huge... start learning and putting the pieces of the puzzle together by following a course. Below I have added some information from the:</p>

<ul>
<li><a href="https://www.edx.org/course/introduction-to-kubernetes" rel="noreferrer">Introduction to Kubernetes</a>, free online course from The Linux Foundation.</li>
</ul>

<h2>Why do we need Kubernetes (and other orchestrators) above containers?</h2>

<blockquote>
  <p>In the quality assurance (QA) environments, we can get away with running containers on a single host to develop and test applications. However, <strong><em>when we go to production, we do not have the same liberty</em></strong>, as we need to ensure that our applications:</p>
  
  <ul>
  <li>Are fault-tolerant</li>
  <li>Can scale, and do this on-demand</li>
  <li>Use resources optimally</li>
  <li>Can discover other applications automatically, and communicate with each other</li>
  <li>Are accessible from the external world </li>
  <li>Can update/rollback without any downtime.</li>
  </ul>
  
  <p><strong><em>Container orchestrators</em></strong> are the tools which group hosts together to form a cluster, and help us fulfill the requirements mentioned above.</p>
  
  <hr>
  
  <p>Nowadays, there are many container orchestrators available, such as:</p>
  
  <ul>
  <li><strong>Docker Swarm:</strong> Docker Swarm is a container orchestrator provided by Docker, Inc. It is part of Docker Engine.</li>
  <li><strong>Kubernetes:</strong> Kubernetes was started by Google, but now, it is a part of the Cloud Native Computing Foundation project.</li>
  <li><strong>Mesos Marathon:</strong> Marathon is one of the frameworks to run containers at scale on Apache Mesos.</li>
  <li><strong>Amazon ECS:</strong> Amazon EC2 Container Service (ECS) is a hosted service provided by AWS to run Docker containers at scale on its infrastructrue.</li>
  <li><strong>Hashicorp Nomad:</strong> Nomad is the container orchestrator provided by HashiCorp.</li>
  </ul>
</blockquote>
