# Containers

{% hint style="info" %}

#### Containers

Containers are lightweight, standalone packages that include everything needed to run an application: code, runtime, system tools, libraries, and settings. Unlike virtual machines that virtualize hardware, containers virtualize the operating system, sharing the host OS kernel while isolating the application processes. This makes them much more efficient and faster to start.
{% endhint %}

<figure><img src="/files/tK3RgKmY00ZsVoL49PZk" alt=""><figcaption><p>Containers</p></figcaption></figure>

{% tabs %}
{% tab title="Runtimes" %}
{% hint style="info" %}
**Docker** is the most well-known container platform. It popularized containerization by making it accessible and easy to use. Docker provides tools for building container images (Dockerfile), running containers, and managing them. While "Docker" often refers to the entire platform, Docker Engine is the actual runtime that executes containers. Docker also includes Docker Compose for defining multi-container applications and Docker Swarm for basic orchestration.

**containerd** is an industry-standard core container runtime that actually powers Docker (Docker uses it under the hood). It manages the complete container lifecycle - image transfer, storage, execution, and networking. Many Kubernetes deployments use containerd directly rather than going through Docker.

**CRI-O** is a lightweight container runtime built specifically for Kubernetes. It implements the Kubernetes Container Runtime Interface (CRI) and is designed to be a minimal runtime for Kubernetes without extra features.

**Podman** is a daemonless container engine that's compatible with Docker commands but doesn't require a background service running with root privileges. It's popular in security-conscious environments and on Red Hat/Fedora systems.

**LXC/LXD** (Linux Containers) is an older container technology that provides OS-level virtualization. LXC containers are more like lightweight VMs, running a full Linux system, whereas Docker containers typically run single applications.
{% endhint %}

<figure><img src="/files/QAsnCsLMPpngzalDMF6c" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Orchestration" %}
{% hint style="info" %}
**Kubernetes** (K8s) is the dominant container orchestration platform. It doesn't run containers itself but manages container runtimes, automating deployment, scaling, networking, and management of containerized applications across clusters of machines. Kubernetes introduces concepts like pods (groups of containers), services, deployments, and namespaces to manage complex applications.

**Docker Swarm** is Docker's native orchestration tool, simpler than Kubernetes but less feature-rich. It's easier to set up but has largely been overshadowed by Kubernetes.

**Apache Mesos** with Marathon was an early container orchestration platform, though it's less common now. It can orchestrate both containers and other workloads.

**Nomad** by HashiCorp is a simpler alternative to Kubernetes that can orchestrate containers, VMs, and standalone applications.

**Amazon ECS/EKS, Azure Container Instances, Google Kubernetes Engine** are cloud-specific managed container services that handle much of the infrastructure complexity.
{% endhint %}

<figure><img src="/files/VamCIFYx61S0gX9WbMgu" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Specialized" %}
{% hint style="info" %}
**Windows Containers** allow containerization of Windows applications, though they're less common than Linux containers. They come in two types: Windows Server Containers (process isolation) and Hyper-V Containers (stronger isolation).

**Serverless Containers** like AWS Fargate, Azure Container Instances, and Google Cloud Run let you run containers without managing the underlying infrastructure - you just provide the container image.
{% endhint %}
{% endtab %}
{% endtabs %}

{% hint style="info" %}
The ecosystem has largely converged around OCI (Open Container Initiative) standards, meaning most tools are interoperable. Docker remains the most popular for development, containerd for production runtimes, and Kubernetes for orchestration at scale.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://academy.pentaho.com/pentaho-11-installation-en/installation/containers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
