How to Install Containerd on Fedora 36 / Fedora 35
containerd is an industry-standard container runtime that manages the container lifecycle. It handles image transfer and storage, container execution and supervision, low-level storage and network attachments, etc.
containerd is one of the container runtimes that works with Kubernetes, and it is well suited for your environment due to its simplicity.
Here, we will see how to install containerd on Fedora 36 / Fedora 35.
Install Containerd on Fedora
You can install containerd using official binaries or from the Docker repository.
Install Containerd Using Official Binaries
Install Containerd
First, download the latest version of containerd binary from GitHub and extract the files to the /usr/local/
directory.
wget https://github.com/containerd/containerd/releases/download/v1.6.6/containerd-1.6.6-linux-amd64.tar.gz sudo tar Czxvf /usr/local containerd-1.6.6-linux-amd64.tar.gz
Then, download the systemd service file and set it up so you can manage the service via systemd.
wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service sudo mv containerd.service /usr/lib/systemd/system/ sudo restorecon -Rv /usr/lib/systemd/system/
Finally, start the containerd service using the below command.
sudo systemctl daemon-reload sudo systemctl enable --now containerd
Install runC
runC is a CLI tool for spawning and running containers on Linux according to the OCI specification.
Download the latest version of runC from GitHub and install it as /usr/local/sbin/runc
.
wget https://github.com/opencontainers/runc/releases/download/v1.1.3/runc.amd64 sudo install -m 755 runc.amd64 /usr/local/sbin/runc
Containerd configuration for Kubernetes
containerd uses a configuration file config.toml
for handling its demons. When installing containerd via official binaries, you will not get the configuration file. So, generate the default configuration file using the below commands.
sudo mkdir -p /etc/containerd/ containerd config default | sudo tee /etc/containerd/config.toml
If you plan to use containerd as the runtime for Kubernetes, configure the systemd cgroup driver for runC.
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
Next, use the below command to restart the containerd service.
sudo systemctl restart containerd
Using Docker Repository
Docker offers the containerd containerd.io
package in the .deb
format through the Docker repository. So, install the required packages for containerd installation.
Set up Docker Repository
Add the Docker repository to the system by running the below command.
sudo dnf -y install dnf-plugins-core sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
Install Containerd
Then, install containerd using the dnf
command.
sudo dnf install -y containerd.io
Next, start the containerd service
sudo systemctl enable --now containerd
Then, check the status of the containerd service.
sudo systemctl status containerd
Containerd configuration for Kubernetes
containerd uses a configuration file config.toml
for managing demons. For Kubernetes, you need to configure the Systemd group driver for runC.
cat <<EOF | sudo tee -a /etc/containerd/config.toml [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] SystemdCgroup = true EOF
Then, enable CRI plugins by commenting out disabled_plugins = ["cri"]
in the config.toml
file.
sudo sed -i 's/^disabled_plugins \=/\#disabled_plugins \=/g' /etc/containerd/config.toml
Next, use the below commands to restart the containerd service.
sudo systemctl restart containerd
Install CNI Plugins For Containerd / Kubernetes
For the container to run, you need to install CNI plugins. In Fedora, CNI plugins get installed in the /usr/libexec/cni
directory by default; this location is not a standard for CNI plugins. So, make a symbolic link to the standard CNI directory /opt/cni/bin
.
sudo dnf install -y containernetworking-plugins sudo mkdir /opt/cni && sudo ln -sf /usr/libexec/cni/ /opt/cni/bin
Next, restart the containerd service.
sudo systemctl restart containerd
Then, check the status of the containerd service.
sudo systemctl status containerd
Output:
● containerd.service - containerd container runtime Loaded: loaded (/usr/lib/systemd/system/containerd.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2022-07-24 01:44:29 EDT; 5min ago Docs: https://containerd.io Process: 771 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS) Main PID: 777 (containerd) Tasks: 8 Memory: 76.1M CPU: 144ms CGroup: /system.slice/containerd.service └─ 777 /usr/local/bin/containerd Jul 24 01:44:29 fedora.itzgeek.local containerd[777]: time="2022-07-24T01:44:29.349868141-04:00" level=info msg=servin> Jul 24 01:44:29 fedora.itzgeek.local containerd[777]: time="2022-07-24T01:44:29.349938386-04:00" level=info msg=servin> Jul 24 01:44:29 fedora.itzgeek.local containerd[777]: time="2022-07-24T01:44:29.350046585-04:00" level=info msg="conta> Jul 24 01:44:29 fedora.itzgeek.local systemd[1]: Started containerd.service - containerd container runtime.
Install nerdctl (CLI)
nerdctl is a Docker-compliant command-line interface for containerd. It is not part of the core package, and you may install the latest version of nerdctl
from GitHub.
wget https://github.com/containerd/nerdctl/releases/download/v0.21.0/nerdctl-0.21.0-linux-amd64.tar.gz sudo tar Cxzvf /usr/local/bin nerdctl-0.21.0-linux-amd64.tar.gz
A sample command:
sudo nerdctl run -d -p 80:80 --name=nginx nginx
Conclusion
That’s All. I hope you have learned how to install containerd on Fedora 36 / Fedora 35.