How to Use the Command 'ctr' (with examples)
- Linux
- December 17, 2024
ctr
is a command-line interface designed to manage containers and images within the containerd
framework, which serves as an industry-standard container runtime. containerd
streamlines the complexities involved in managing container lifecycles by providing a high-level API for operations such as retrieving, launching, stopping containers, and more. The ctr
tool acts as a convenient utility to interact with containerd
, making it easier for developers and system administrators to control containerized applications.
Use case 1: List all containers (running and stopped)
Code:
ctr containers list
Motivation: Listing all containers, regardless of their state (running or stopped), is an essential operation for gaining a comprehensive overview of the systems you’re managing. This information helps with monitoring system resource usage, performing audits for container health, or orchestrating further actions based on current container states.
Explanation:
ctr
: This is the command-line tool for interacting withcontainerd
.containers
: A subcommand indicating that the operation targets containers rather than images or another resource type.list
: The action requested, which, in this context, means to enumerate all available containers.
Example Output:
CONTAINER IMAGE RUNTIME
app_server_v1 docker.io/library/nginx:latest io.containerd.runtime.v1.linux
database_service_v2 docker.io/library/postgres:latest io.containerd.runtime.v1.linux
Use case 2: List all images
Code:
ctr images list
Motivation: Knowing which images are available is crucial for deploying containers, managing storage efficiently, and ensuring that your builds and deployments are using the correct versions. By listing all images, you can verify their existence, check tags, and manage outdated images.
Explanation:
ctr
: This serves as the entry point to accesscontainerd
functionalities.images
: Specifies that the operation concerns container images stored or managed bycontainerd
.list
: Denotes the command to display all currently available images.
Example Output:
REF TYPE DIGEST SIZE PLATFORMS
docker.io/library/nginx:latest application/vnd.docker.distribution.manifest.v2+json sha256:03f944be7d756958305e9e72f8bac98e7792e331f02... 133.1 MiB linux/amd64
docker.io/library/postgres:latest application/vnd.docker.distribution.manifest.v2+json sha256:5de8e8e0ea0c58f6e5fb2e55c9b0da6d78c58b16e9d... 216.5 MiB linux/amd64
Use case 3: Pull an image
Code:
ctr images pull image
Motivation: Pulling an image is fundamental for initializing the use of a containerized application or service. It fetches the specified image from a remote registry, ensuring that you have the necessary resources to spin up containers that rely on the fetched image. This is the first step in the deployment pipeline for containerized applications.
Explanation:
ctr
: Again, the command-line utility used to interact withcontainerd
.images
: Indicates that the command pertains to images.pull
: Defines the action of downloading an image from a remote source to local storage.image
: Placeholder for the actual image name you want to pull, e.g.,docker.io/library/nginx:latest
.
Example Output:
fetching sha256:43a047de7272ef4829bd21f3e1a54023a5b063a0faae377b1d95a847a0382655...
unpacking linux/amd64 sha256:43a047de7272ef4829bd21f3e1a54023a5b063a0faae377b1d95a847a0382655...
done
Use case 4: Tag an image
Code:
ctr images tag source_image:source_tag target_image:target_tag
Motivation: Tagging an image allows you to create a new reference or an alias for an existing image, often used to denote different versions or deployments settings. This operation is useful for version control, allowing easy rollback or testing different versions and environments systematically.
Explanation:
ctr
: This command facilitates interaction with thecontainerd
environment.images
: Specifies the operation domain, which is images in this instance.tag
: The action of marking an existing image with a new identifier.source_image:source_tag
: Represents the current image tag, e.g.,nginx:1.19
.target_image:target_tag
: Represents the new tag you wish to assign, e.g.,nginx:stable
.
Example Output:
Image nginx:1.19 tagged as nginx:stable
Conclusion:
The ctr
command offers a robust set of options for managing containers and images, which is integral in today’s container-driven development environments. Whether it’s listing existing resources to get an overview of your system state, pulling images for deployment, or tagging images to maintain version control, ctr
simplifies these processes and manages dependencies efficiently, making it an invaluable tool for developers and sysadmins alike.