Skip to content

Instantly share code, notes, and snippets.

@AliKhadivi
Last active November 10, 2023 08:31
Show Gist options
  • Save AliKhadivi/284c22f481b0a87500b10ffb69a06d04 to your computer and use it in GitHub Desktop.
Save AliKhadivi/284c22f481b0a87500b10ffb69a06d04 to your computer and use it in GitHub Desktop.
Build Containerd Debian Package
#!/bin/bash
# Set Containerd version
export "containerd_version=1.7.8"
export "runc_version=1.1.10"
export "cni_version=1.3.0"
export "nerdctl_version=1.7.0"
export "folder=$(pwd)/containerd.io"
mkdir -p "${folder}"
mkdir -p "${folder}/DEBIAN"
cat <<EOF | tee ${folder}/DEBIAN/control
Package: containerd.io
Section: devel
Version: ${containerd_version}
Priority: optional
Maintainer: Containerd team <help@containerd.io>
Homepage: https://containerd.io
Vcs-Browser: https://github.com/containerd/containerd
XS-Go-Import-Path: github.com/containerd/containerd
Architecture: all
Provides: containerd, runc, nerdctl
Conflicts: containerd, runc, nerdctl
Replaces: containerd, runc, nerdctl
Description: An open and reliable container runtime
EOF
# echo "/etc/containerd/config.toml" > ${folder}/DEBIAN/conffiles
wget "https://github.com/containerd/containerd/releases/download/v${containerd_version}/containerd-${containerd_version}-linux-amd64.tar.gz"
mkdir -p "${folder}/usr"
mkdir -p "${folder}/usr/lib/systemd/system"
tar Czxvf "${folder}/usr" "containerd-${containerd_version}-linux-amd64.tar.gz"
wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service -O "${folder}/usr/lib/systemd/system/containerd.service"
sed -i 's+/usr/local/bin/+/usr/bin/+g' "${folder}/usr/lib/systemd/system/containerd.service"
wget "https://github.com/opencontainers/runc/releases/download/v${runc_version}/runc.amd64"
mkdir -p "${folder}/usr/sbin"
mv runc.amd64 "${folder}/usr/sbin/runc"
chmod 755 "${folder}/usr/sbin/runc"
mkdir -p /opt/cni/bin
wget "https://github.com/containernetworking/plugins/releases/download/v${cni_version}/cni-plugins-linux-amd64-v${cni_version}.tgz"
tar Cxzvf "${folder}/opt/cni/bin" "cni-plugins-linux-amd64-v${cni_version}.tgz"
wget "https://github.com/containerd/nerdctl/releases/download/v${nerdctl_version}/nerdctl-${nerdctl_version}-linux-amd64.tar.gz"
tar Cxzvf "${folder}/usr/bin" "nerdctl-${nerdctl_version}-linux-amd64.tar.gz"
rm -rf "nerdctl-${nerdctl_version}-linux-amd64.tar.gz" "cni-plugins-linux-amd64-v${cni_version}.tgz" "containerd-${containerd_version}-linux-amd64.tar.gz"
dpkg-deb --root-owner-group --build "${folder}"
echo "Your file ready!"
@AliKhadivi
Copy link
Author

Finding Versions:
containerd_version : Containerd
runc_version : runC
cni_version : Containerd CNI Plugin
nerdctl_version : Nerdctl

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment