Container Service for Kubernetes (ACK) supports the following container runtimes: containerd, Sandboxed-Container, and Docker. This topic compares these runtimes in terms of implementations, limits, and deployment architectures, to help you select a container runtime based on your business requirements and scenarios.
Comparison in terms of implementations and limits
Feature | containerd | Sandboxed-Container | Docker (discontinued maintenance) |
Cluster types |
|
| All types of of ACK clusters |
Kubernetes version | Kubernetes 1.31 and earlier | Kubernetes 1.31 and earlier | Kubernetes 1.22 and earlier Note We recommend that you upgrade Docker to containerd for your clusters. For more information, see Change the container runtime from Docker to containerd. |
Node type |
| ECS Bare Metal instance | ECS instance |
Node operating system | ACK provides public images for operating systems, including:
For more information, see OS images. | Alibaba Cloud Linux Customized Edition |
|
Container engine | containerd | containerd | Docker |
Monitoring | Supported | Supported | Supported |
Log collection | Supported | Manual configuration of sidecar containers is required to support log collection. | Supported |
Stdout collection | Supported | Supported | Supported |
RuntimeClass | Not supported | Supported (runV) | Not supported |
Pod scheduling | No configuration is required. | You must configure pods based on the following rules:
| No configuration is required. |
HostNetwork | Supported | Not supported | Supported |
Node data disk | Optional | Required (at least 200 GiB) | Optional |
Network plug-in |
|
|
|
Kube-proxy mode |
|
|
|
Volume plug-in | CSI (excluding ACK Edge clusters) | CSI | CSI |
Container root file system | OverlayFS | OverlayFS with support for disk quotas | OverlayFS |
You cannot deploy both Docker and Sandboxed-Container on the same node.
To deploy both Docker and Sandboxed-Container in the same cluster, you can create node pools that use different types of container runtimes.
For more information about the sidecar configuration, see Use CRDs to collect container text logs in Sidecar mode.
Comparison in terms of deployment architectures
Runtime | Deployment architecture |
Docker |
|
containerd |
|
Sandboxed-Container V2 |
|
Comparison of the commonly used commands provided by Docker Engine and containerd
Docker uses Docker Engine for container lifecycle management. Sandboxed-Container uses containerd for container lifecycle management. Both runtimes provide their own unique CLI tools for managing images and containers. The following table describes the commonly used commands provided by Docker Engine and containerd.
Operation | containerd | Docker | |
crictl (recommended) | ctr | docker | |
Query containers |
|
|
|
Query container details |
|
|
|
Query container logs |
| N/A |
|
Run commands in containers |
| N/A |
|
Attach local stdin, stdout, and stderr to containers |
| N/A |
|
Query resource usage statistics |
| N/A |
|
Create containers |
|
|
|
Start containers |
|
|
|
Stop containers |
| N/A |
|
Delete containers |
|
|
|
Query images |
|
|
|
Query image details |
| N/A |
|
Pull images |
|
|
|
Push images | N/A |
|
|
Delete images |
|
|
|
Query pods |
| N/A | N/A |
Query pod details |
| N/A | N/A |
Start pods |
| N/A | N/A |
Stop pods |
| N/A | N/A |