Podman

Podman adalah mesin container yang tidak memerlukan daemon (daemon-less). Tidak seperti docker yang memakai daemon. Tetapi, ada satu yang menyediakan API untuk layanan cockpit dengan melalui cockpit-podman. Container dapat dijalankan sebagai root atau dalam mode tanpa root. Namun, secara default hanya root yang diizinkan untuk menjalankan container (atau namespace di kernelspeak). Untuk menjalankan kontainer podman secara tanpa root, pertama-tama podman membutuhkan namespace untuk menjalankan sebuah kontainer. Karena dalam kasus ini akan menjalankan kontainer tanpa akun root maka diperlukan menyetel batasan namespace (max_user_namespace) agar sebagai user normal dapat mengelola kontainer di dalam sistem operasi.

Kedua, tentukan user(s) dan grup(s) mana yang ingin Anda gunakan untuk kontainer. Lalu tambahkan entri yang sesuai ke /etc/subuid dan /etc/subgid. sudo bash -c 'echo 10000 > \ /proc/sys/user/max_user_namespaces' sudo bash -c "echo $(whoami):100000:65536 > /etc/subuid" sudo bash -c "echo $(whoami):100000:65536 > /etc/subgid" Secara umum Podman menyediakan antarmuka serupa dengan docker dan rata-rata opsi yang ada pada docker sudah tersedia/support di podman. Maka, dengan tujuan memudahkan mereka yang sudah terbiasa menulis perintah docker, service podman dapat diinisialisasi dengan cara menggunakan alias. `alias docker = podman`. echo "alias docker='podman'" >> ~/.bashrc source ~/.bashrc

echo alias docker="podman" >> ~/.zshrc source ~/.zshrc Lalu, untuk menghemat resource karena untuk kasus ini docker tidak digunakan maka dapat dimatikan saja dengan menggunakan systemctl ~ ❯❯❯ sudo systemctl disable docker Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install disable docker ~ ❯❯❯ sudo systemctl stop docker.socket ~ ❯❯❯ sudo systemctl stop docker

Alur Kerja (Workflow)
Secara umum, jika menggunakan flow dari sebuah docker satu service dapat berjalan mulai dari registry, kernel, images, dan container menggunakan Docker daemon saat berinteraksi dengan Docker CLI melalui perantara Docker Engine REST API. Efek yang paling signifikan terhadap mesin ialah termakannya resource berupa CPU dan RAM karena efek layanan konstan yang digunakan daemon untuk dapat memproduksi sebuah container. Untuk dapat melihat Docker daemon yang berjalan secara konstan tersebut dapat dicek pada sysctl.

Maka, solusi lain yang dapat menjalankan service-service docker tanpa menggunakan (daemon-less container engine) salah satunya ialah Podman. Setiap interaksi command line podman sendiri yang melakukan permintaan kepada image registry, kernel, images, maupun container. Jika dilakukan pengecekan pada sysctl tidak ada service podman yang berjalan kecuali sedang dalam menggunakan atau menjalankan container.

Registry
Seperti biasa setelah mem-build Dockerfile, images yang telah dihasilkan dapat di upload oleh Podman dapat ke beberapa Docker Registry seperti docker.io, gcr.io, Gitlab, atau Red Hat.

Instalasi pada Ubuntu 18.04
apt-get install software-properties-common -y add-apt-repository -y ppa:projectatomic/ppa apt-get install podman -y

Testing
~ ❯❯❯ echo -e "[registries.search]\nregistries = ['docker.io']" | sudo tee /etc/containers/registries.conf [registries.search] registries = ['docker.io']

~ ❯❯❯ podman run hello-world Trying to pull docker.io/library/hello-world... Getting image source signatures Copying blob b8dfde127a29 done Copying config d1165f2212 done Writing manifest to image destination Storing signatures

Hello from Docker!

Manajemen Container dengan Podman
Container, image, dan image registry harus dapat berinteraksi satu sama lain. Misalnya, Anda harus dapat membuat gambar dan memasukkannya ke dalam image registry. Anda juga harus dapat mengambil image dari image registry dan membangun container dari image itu.

Podman adalah alat open source untuk mengelola container dan gambar container serta berinteraksi dengan registry gambar. Ini menawarkan fitur-fitur utama berikut:


 * Ini menggunakan format image yang ditentukan oleh Open Container Initiative (OCI). Spesifikasi tersebut menentukan format image yang standar, berbasis komunitas atau community-driven, dan bukan non-proprietary image format.
 * Podman menyimpan image lokal dalam file sistem lokal. Melakukannya akan menghindari aktivitas client/server yang tidak perlu atau menjalankan daemon pada mesin lokal seperti yang dilakukan Docker
 * Podman mengikuti pola perintah yang sama dengan Docker CLI, jadi tidak perlu mempelajari toolset baru.
 * Podman kompatibel dengan Kubernetes. Kubernetes dapat menggunakan Podman untuk mengelola container-nya.

Lihat Juga

 * Buildah
 * Skopeo
 * Docker
 * OpenShift
 * Linux Containers (LXC/LXD)

Referensi

 * https://wiki.archlinux.org/index.php/Podman
 * https://podman.io/