12.1 C
Texas

How To Install Podman on Debian on 10 / 9

Introduction:

Podman is used to develop, manage and run OCI Containers on our Linux System. It runs without starting daemon every time. In today tutorial, we will cover the installation of Podman on our Debian System.

Step 1: Updating your system

Update your system by running

sudo apt -y update && sudo apt -y upgrade

Step 2: Installing pre-requisites

In our case we are going to build the packages from source code. Install the required dependencies you want to use

- Advertisement -
sudo apt -y install \
gcc \
make \
cmake \
git \
btrfs-progs \
golang-go \
go-md2man \
iptables \
libassuan-dev \
libc6-dev \
libdevmapper-dev \
libglib2.0-dev \
libgpgme-dev \
libgpg-error-dev \
libostree-dev \
libprotobuf-dev \
libprotobuf-c-dev \
libseccomp-dev \
libselinux1-dev \
libsystemd-dev \
pkg-config \
runc \
uidmap \
libapparmor-dev

Step 3: Installing common

Common is used to monitor OCI run times on your Linux System. Install the latest version of common on Debian by cloning.

git clone https://github.com/containers/common
cd common
sudo make podman
sudo cp /usr/local/libexec/podman/common /usr/local/bin/

Step 4: Installing CNI Plugins

Make sure that the CNI Plugins are installed on your system. If they are not installed yet, Install them by typing

git clone https://github.com/containernetworking/plugins.git $GOPATH/src/github.com/containernetworking/plugins
cd $GOPATH/src/github.com/containernetworking/plugins
./build_linux.sh
sudo mkdir -p /usr/libexec/cni
sudo cp bin/* /usr/libexec/cni

Step 5: Setting Up CNI Networking

Now, add the configuration files by

sudo mkdir -p /etc/cni/net.d
curl -qsSL https://raw.githubusercontent.com/containers/libpod/master/cni/87-podman-bridge.conflist | sudo tee /etc/cni/net.d/99-loopback.conf

Step 6: Populate Config files

You have to manually add configuration files like registry and policy files.

sudo mkdir -p /etc/containers
sudo curl https://raw.githubusercontent.com/projectatomic/registries/master/registries.fedora -o /etc/containers/registries.conf
sudo curl https://raw.githubusercontent.com/containers/skopeo/master/default-policy.json -o /etc/containers/policy.json

Step 7: Installing Podman

After doing all the above requirements, its time to download and Install Podman on your system.

git clone https://github.com/containers/libpod/ $GOPATH/src/github.com/containers/libpod
cd $GOPATH/src/github.com/containers/libpod
make
sudo make install

You can run the command podman version to check the installed version of podman

$ podman info
host:
BuildahVersion: 1.9.2
Conmon:
package: Unknown
path: /usr/local/bin/conmon
version: 'conmon version 1.0.1-dev, commit: 8392df88fba944510b51c7d5b92aa745a15863f8'
Distribution:
distribution: debian
version: "10"
MemFree: 6179495936
MemTotal: 8167223296
OCIRuntime:
package: 'runc: /usr/sbin/runc'
path: /usr/sbin/runc
version: |-
runc version 1.0.0~rc6+dfsg1
commit: 1.0.0~rc6+dfsg1-3
spec: 1.0.1
SwapFree: 0
SwapTotal: 0
arch: amd64
cpus: 2
eventlogger: journald
hostname: debian10
kernel: 4.19.0-5-amd64
os: linux
rootless: false
uptime: 13m 44.64s
registries:
blocked: null
insecure: null
search:
docker.io
registry.fedoraproject.org
registry.access.redhat.com
store:
ConfigFile: /etc/containers/storage.conf
ContainerStore:
number: 0
GraphDriverName: overlay
GraphOptions: null
GraphRoot: /var/lib/containers/storage
GraphStatus:
Backing Filesystem: extfs
Native Overlay Diff: "true"
Supports d_type: "true"
Using metacopy: "false"
ImageStore:
number: 0
RunRoot: /var/run/containers/storage
VolumePath: /var/lib/containers/storage/volumes

Here are the main configuration files.

  • /etc/containers/regestries.conf : We use this file to store the registries of domain or new container images.
  • /etc/containers/mounts.conf: Keeps the record of mounted directories.

Step 8: Testing Podman Installation on Debian

Download the Alpine image by running

$ podman pull alpine
Trying to pull docker.io/library/alpine…
Getting image source signatures
Copying blob 050382585609 done
Copying config b7b28af77f done
Writing manifest to image destination
Storing signatures
b7b28af77ffec6054d13378df4fdf02725830086c7444d9c278af25312aa39b9

Run Docker Container

[root@localhost sabi]# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/alpine latest b7b28af77ffe 3 weeks ago 5.85 MB
$ podman run -ti b7b28af77ffe /bin/sh
/ # cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.10.1
PRETTY_NAME="Alpine Linux v3.10"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://bugs.alpinelinux.org/
/# exit

You can remove the container by running the below command

[root@localhost sabi]# podman rm -f podman ps -aq
d16db8f39c82f50f3a2bbf4834d948b660525a5c2b98979e433c3428f613c18d

And that is it.

- Advertisement -
Everything Linux, A.I, IT News, DataOps, Open Source and more delivered right to you.
Subscribe
"The best Linux newsletter on the web"

LEAVE A REPLY

Please enter your comment!
Please enter your name here



Latest article