diff --git a/utils/kata-manager.sh b/utils/kata-manager.sh
index bf211424a0..044432ce77 100755
--- a/utils/kata-manager.sh
+++ b/utils/kata-manager.sh
@@ -31,6 +31,11 @@ readonly docker_slug="moby/moby"
 readonly docker_project="Docker (moby)"
 readonly docker_releases_url="https://api.github.com/repos/${docker_slug}/releases"
 
+readonly nerdctl_slug="containerd/nerdctl"
+readonly nerdctl_project="nerdctl"
+readonly nerdctl_releases_url="https://api.github.com/repos/${nerdctl_slug}/releases"
+readonly nerdctl_supported_arches="x86_64 aarch64"
+
 # Directory created when unpacking a binary release archive downloaded from
 # $kata_releases_url.
 readonly kata_install_dir="${kata_install_dir:-/opt/kata}"
@@ -182,6 +187,10 @@ github_get_release_file_url()
 	case "$url" in
 		*kata*)
 			regex="kata-static-${version}-${arch_regex}.tar.xz" ;;
+		*nerdctl*)
+			# Keep this *always* before the containerd check, as it comes from
+			# the very same containerd organisation on GitHub.
+			regex="nerdctl-full-${version_number}-linux-${arch_regex}.tar.gz" ;;
 		*containerd*)
 			regex="containerd-${version_number}-linux-${arch_regex}.tar.gz" ;;
 		*) die "invalid url: '$url'" ;;
@@ -261,6 +270,7 @@ Options:
                 https://containerd.io/releases/#support-horizon
  -d           : Enable debug for all components.
  -D           : Install Docker server and CLI tooling (takes priority over '-c').
+ -N           : Install nerdctl (takes priority over '-c', only implemented for x86_64 and ARM).
  -f           : Force installation (use with care).
  -h           : Show this help statement.
  -k <version> : Specify Kata Containers version.
@@ -467,43 +477,84 @@ install_containerd()
 	info "$project installed\n"
 }
 
+install_nerdctl()
+{
+	local project="$nerdctl_project"
+
+	info "Downloading $project latest release"
+
+	local results
+	results=$(github_download_package \
+		"$nerdctl_releases_url" \
+		"" \
+		"$project")
+
+	[ -z "$results" ] && die "Cannot download $project release file"
+
+	local version
+	version=$(echo "$results"|cut -d: -f1)
+
+	local file
+	file=$(echo "$results"|cut -d: -f2-)
+
+	[ -z "$version" ] && die "Cannot determine $project resolved version"
+	[ -z "$file" ] && die "Cannot determine $project release file"
+
+	info "Installing $project release $version from $file"
+
+	sudo tar -C /usr/local -xvf "${file}"
+	for file in \
+		/usr/local/bin/containerd \
+		/usr/local/bin/ctr \
+		/usr/local/bin/nerdctl
+		do
+			sudo ln -sf "$file" "${link_dir}"
+		done
+
+	info "$project installed\n"
+}
+
 configure_containerd()
 {
 	local enable_debug="${1:-}"
 	[ -z "$enable_debug" ] && die "no enable debug value"
+	local configure_systemd_service="${2:-true}"
 
 	local project="$containerd_project"
 
 	info "Configuring $project"
 
-	local systemd_unit_dir="/etc/systemd/system"
-	sudo mkdir -p "$systemd_unit_dir"
-
-	local dest="${systemd_unit_dir}/${containerd_service_name}"
-
-	if [ ! -f "$dest" ]
+	if [ "$configure_systemd_service" = "true" ]
 	then
-		pushd "$tmpdir" >/dev/null
-
-		local service_url
-		service_url=$(printf "%s/%s/%s/%s" \
-			"https://raw.githubusercontent.com" \
-			"${containerd_slug}" \
-			"main" \
-			"${containerd_service_name}")
-
-		curl -LO "$service_url"
-
-		printf "# %s: Service installed for Kata Containers\n" \
-			"$(date -Iseconds)" |\
-			tee -a "$containerd_service_name"
-
-		sudo cp "${containerd_service_name}" "${dest}"
-		sudo systemctl daemon-reload
-
-		info "Installed ${dest}"
-
-		popd >/dev/null
+		local systemd_unit_dir="/etc/systemd/system"
+		sudo mkdir -p "$systemd_unit_dir"
+	
+		local dest="${systemd_unit_dir}/${containerd_service_name}"
+	
+		if [ ! -f "$dest" ]
+		then
+			pushd "$tmpdir" >/dev/null
+	
+			local service_url
+			service_url=$(printf "%s/%s/%s/%s" \
+				"https://raw.githubusercontent.com" \
+				"${containerd_slug}" \
+				"main" \
+				"${containerd_service_name}")
+	
+			curl -LO "$service_url"
+	
+			printf "# %s: Service installed for Kata Containers\n" \
+				"$(date -Iseconds)" |\
+				tee -a "$containerd_service_name"
+	
+			sudo cp "${containerd_service_name}" "${dest}"
+			sudo systemctl daemon-reload
+	
+			info "Installed ${dest}"
+	
+			popd >/dev/null
+		fi
 	fi
 
 	# Backup the original containerd configuration:
@@ -572,6 +623,7 @@ configure_containerd()
 	fi
 
 	[ "$modified" = "true" ] && info "Modified containerd config file '$containerd_config'"
+	sudo systemctl daemon-reload
 	sudo systemctl enable containerd
 	sudo systemctl start containerd
 
@@ -782,6 +834,25 @@ handle_docker()
 	docker --version
 }
 
+handle_nerdctl()
+{
+	{ containerd_installed; ret=$?; } || true
+	if [ "$ret" -eq 0 ]
+	then
+		info "Backing up previous $containerd_project configuration"
+		[ -e "$containerd_config" ] && sudo mv $containerd_config $containerd_config.system-$(date -Iseconds)
+	fi
+
+	install_nerdctl
+
+	configure_containerd "$enable_debug" "false"
+
+	sudo systemctl enable --now containerd
+
+	containerd --version
+	nerdctl --version
+}
+
 test_installation()
 {
 	local tool="${1:-}"
@@ -853,9 +924,11 @@ handle_installation()
 	local kata_version="${7:-}"
 	local containerd_flavour="${8:-}"
 	local install_docker="${9:-}"
+	local install_nerdctl="${10:-}"
 	[ -z "$install_docker" ] && die "no install docker value"
+	[ -z "$install_nerdctl" ] && die "no install nerdctl value"
 
-	local kata_tarball="${10:-}"
+	local kata_tarball="${11:-}"
 	# The tool to be testing the installation with
 	local tool="ctr"
 
@@ -871,6 +944,24 @@ handle_installation()
 		tool="docker"
 	fi
 
+	if [ "$install_nerdctl" = "true" ]
+	then
+		local arch=$(uname -m)
+		if ! grep -q " $arch " <<< " $nerdctl_supported_arches "
+		then
+			die "nerdctl deployment only supports $nerdctl_supported_arches"
+		fi
+
+		if [ "$skip_containerd" = "false" ]
+		then
+			# The script provided by nerdctl already takes care
+			# of properly installing containerd
+			skip_containerd="true"
+			info "Containerd will be installed during the nerdctl installation ('-c' option ignored)"
+		fi
+		tool="nerdctl"
+	fi
+
 	[ "$only_run_test" = "true" ] && test_installation "$tool"  && return 0
 
 	setup "$cleanup" "$force" "$skip_containerd"
@@ -883,16 +974,22 @@ handle_installation()
 		"$force" \
 		"$enable_debug"
 
+	[ "$install_docker" = "true" ] && [ "$install_nerdctl" = "true" ] && \
+		die "Installing docker and nerdctl at the same time is not possible."
+
 	[ "$install_docker" = "true" ] && handle_docker
 
+	[ "$install_nerdctl" = "true" ] && handle_nerdctl
+
 	[ "$disable_test" = "false" ] && test_installation "$tool"
 
-	if [ "$skip_containerd" = "true" ] && [ "$install_docker" = "false" ]
+	if [ "$skip_containerd" = "true" ] && ( [ "$install_docker" = "false" ] || [ "$install_nerdctl" = "false" ] )
 	then
 		info "$kata_project is now installed"
 	else
 		local extra_projects="containerd"
 		[ "$install_docker" = "true" ] && extra_projects+=" and docker"
+		[ "$install_nerdctl" = "true" ] && extra_projects+=" and nerdctl"
 		info "$kata_project and $extra_projects are now installed"
 	fi
 
@@ -965,6 +1062,7 @@ handle_args()
 	local only_run_test="false"
 	local enable_debug="false"
 	local install_docker="false"
+	local install_nerdctl="false"
 	local list_versions='false'
 
 	local opt
@@ -973,7 +1071,7 @@ handle_args()
 	local containerd_flavour="lts"
 	local kata_tarball=""
 
-	while getopts "c:dDfhk:K:lortT" opt "$@"
+	while getopts "c:dDfhk:K:lNortT" opt "$@"
 	do
 		case "$opt" in
 			c) containerd_flavour="$OPTARG" ;;
@@ -984,6 +1082,7 @@ handle_args()
 			k) kata_version="$OPTARG" ;;
 			K) kata_tarball="$OPTARG" ;;
 			l) list_versions='true' ;;
+			N) install_nerdctl="true" ;;
 			o) skip_containerd="true" ;;
 			r) cleanup="false" ;;
 			t) disable_test="true" ;;
@@ -1012,6 +1111,7 @@ handle_args()
 		"$kata_version" \
 		"$containerd_flavour" \
 		"$install_docker" \
+		"$install_nerdctl" \
 		"$kata_tarball"
 }