Dikembangkan oleh RedHat, Podman adalah mesin kontainer tanpa daemon sumber terbuka dan gratis yang dirancang untuk menjadi pengganti drop-in untuk mesin runtime Docker yang populer. Sama seperti Docker, ini memudahkan untuk membangun, menjalankan, menyebarkan, dan berbagi aplikasi menggunakan gambar wadah dan wadah OCI ( Open Container Initiative ). Podman menggunakan ruang nama pengguna dan jaringan dan Dibandingkan dengan Docker, Podman dianggap lebih terisolasi dan aman. Sebagian besar perintah di Docker akan berfungsi di Podman. jadi jika Anda terbiasa menjalankan perintah Docker, menggunakan podman akan sangat mudah.
Dalam panduan ini, kita mempelajari cara memasang podman di Debian 11 Bullseye.
Instal Podman di Debian 11
Paket podman, perpustakaan, dan dependensi sudah dihosting di repositori resmi Debian. Oleh karena itu Anda dapat dengan mudah menginstal podman menggunakan manajer paket APT.
Pertama, perbarui daftar paket:
$ sudo apt update Selanjutnya install engine container podman sebagai berikut:
$ sudo apt install podman Saat diminta untuk melanjutkan, ketik 'Y' dan tekan ENTER.
Untuk memverifikasi versi Podman yang diinstal, jalankan:
$ podman --version
Untuk mengumpulkan lebih banyak detail tentang mesin kontainer podman, jalankan perintah:
$ sudo podman info Anda akan melihat serangkaian keluaran yang menampilkan detail rumit seperti yang kami miliki di bawah ini.
Konfigurasikan registry Podman
File registri registry.conf adalah file konfigurasi yang menentukan pendaftar kontainer yang akan digunakan kapan pun Anda ingin mendorong atau menarik gambar. Path lengkap ke file adalah /etc/containers/registries.conf . Ada berbagai pendaftar kontainer di luar sana termasuk hub Docker, Quay.io, RedHat, dan banyak lagi.
Anda dapat melihat file menggunakan editor teks seperti yang ditunjukkan
# sudo /etc/containers/registries.conf Di Docker, satu-satunya penampung registri adalah Docker Hub. Podman menawarkan lebih banyak kebebasan kepada pengguna untuk mencari dan menarik gambar dari registri apa pun. Anda dapat menentukan daftar pendaftar kontainer dengan menambahkan baris berikut.
unqualified-search-registries = [ 'registry.access.redhat.com', 'registry.redhat.io', 'docker.io']
Saat menjalankan podman search atau podman pull perintah, podman akan menghubungi pendaftar ini dimulai dengan yang pertama dalam urutan itu. Simpan perubahan dan keluar dari file.
Mencari gambar
Sebelum menarik gambar kontainer, sebaiknya cari ketersediaannya di berbagai pendaftar.
Misalnya
$ sudo podman search nginx
Outputnya memberi Anda banyak informasi termasuk Nama registri, Nama gambar, dan deskripsi singkat.
Masuk ke registri
Sebelum Anda mulai menarik atau mendorong gambar, Anda harus masuk ke registri. Pada contoh di bawah ini, saya masuk ke akun Redhat saya yang, pada dasarnya, memberi saya akses ke registri.
$ sudo podman login registry.access.redhat.com
Untuk keluar dari registri, jalankan perintah:
$ sudo podman logout registry.access.redhat.com Menarik gambar
Untuk menarik gambar, gunakan sintaks:
$ sudo podman pull image_name Misalnya, untuk menarik gambar build Resmi Nginx, jalankan perintah:
$ sudo podman pull docker.io/library/nginx
Mari kita coba menarik gambar lain. Kami akan menarik gambar MongoDB Resmi sebagai berikut.
$ sudo podman pull docker.io/library/mongo
Menampilkan gambar
Untuk membuat daftar semua gambar, jalankan perintah.
$ sudo podman images
Buat wadah dari gambar
Sekarang setelah kita memiliki gambar yang berada di sistem Debian, kita dapat meluncurkan wadah menggunakan sintaks yang ditunjukkan. Opsi -d menjalankan wadah di latar belakang dan --name opsi menentukan nama khusus untuk wadah
$ sudo podman run -d --name container_name image Misalnya, untuk meluncurkan wadah di latar belakang yang disebut webserv1 dari gambar Nginx, jalankan perintah:
$ sudo podman run -d --name webserv1 docker.io/library/nginx Anda dapat meluncurkan beberapa wadah dari gambar yang sama. Mari kita luncurkan wadah lain bernama webserv2 dari gambar Nginx yang sama.
$ sudo podman run -d --name webserv2 docker.io/library/nginx
Mendaftarkan container
Di bagian ini, kita akan melihat berbagai perintah yang dapat Anda gunakan dengan container.
Untuk memeriksa container yang sedang berjalan, jalankan perintah:
$ sudo podman ps Keluaran disajikan dalam kolom yang memberikan informasi seperti ID Penampung, nama IMAGE, perintah yang menjalankan penampung, tanggal pembuatan, dan status.
Untuk membuat daftar semua kontainer termasuk yang telah keluar jalankan:
$ sudo podman ps -a Menghentikan kontainer
Untuk menghentikan wadah, gunakan sintaks
$ sudo podman stop CONTAINER_ID ATAU
$ sudo podman stop container_name Pada contoh di bawah ini, saya telah menghentikan penampung pertama yang terdaftar menggunakan ID penampungnya
$ sudo podman stop 9daeaabdfdfc
Anda dapat memverifikasi bahwa wadah telah dihentikan menggunakan podman ps memerintah. Kami dapat melihat dengan jelas bahwa setelah menghentikan gambar, kami hanya menjalankan 1 gambar.
podman ps -a perintah akan mencantumkan kedua wadah yang terdiri dari wadah yang baru saja dihentikan.
$ sudo podman ps -a
Memulai penampung
Untuk memulai wadah gunakan sintaks:
$ sudo podman start CONTAINER_ID ATAU
$ sudo podman start container_name Misalnya, untuk memulai webserv1, jalankan:
$ sudo podman start webserv1
Mengakses cangkang wadah
Mengakses cangkang wadah paling baik ditunjukkan dengan wadah sistem Operasi.
Di sini, kita akan mengunduh atau menarik gambar Ubuntu:
$ sudo podman pull docker.io/library/ubuntu
Dari gambar, kami akan membuat atau meluncurkan wadah dan mendapatkan akses ke shell menggunakan -it pilihan.
$ sudo podman run --name ubuntu -it docker.io/library/ubuntu /bin/bash 
- -i, –interactive Tetap buka STDIN meskipun tidak terpasang
- -t, –tty Alokasikan pseudo-TTY. Defaultnya salah
Periksa log kontainer
Untuk memeriksa log wadah gunakan sintaks:
$ sudo podman logs container_name Misalnya:
$ sudo podman logs webserv2
Tampilkan statistik penampung
Untuk menampilkan statistik semua container yang sedang berjalan, jalankan:
$ sudo podman stats
Memeriksa wadah
Untuk mencetak detail rumit tentang wadah, gunakan opsi periksa:
$ sudo podman inspect webserv2 Ini mencetak output panjang dalam format JSON.
Gunakan opsi --format untuk memfilter output. Misalnya untuk mencetak alamat IP dari webserv2 container run
$ sudo podman inspect webserv2 --format '{{.NetworkSettings.IPAddress}}' Anda kemudian dapat melakukan informasi tambahan IP, misalnya menggunakan curl untuk mengambil header HTTP.
$ curl -I ip-address
Menghapus penampung
Untuk menghapus atau menghapus wadah sepenuhnya, pertama-tama hentikan wadah, jika sedang berjalan, dan terakhir keluarkan. Dalam contoh ini, kami telah menghentikan dan menghapus penampung websev1.
$ sudo podman stop webserv1 Kemudian keluarkan wadah yang dihentikan.
$ sudo podman rm webserv1
Menghapus gambar
Untuk menghapus gambar, pertama-tama, pastikan Anda telah menghentikan dan menghapus semua wadah yang diluncurkan dari gambar. Selanjutnya, gunakan rmi pilihan seperti yang ditunjukkan.
$ sudo podman rmi image_name Misalnya, untuk menghapus Gambar ubuntu, jalankan perintah:
$ sudo podman rmi docker.io/library/ubuntu
Instal Podman terbaru - Kompilasi dari sumber
Anda dapat menguji versi terbaru Podman dengan menginstal versi pengembangan dari sumbernya.
01. Bangun dan Jalankan Dependensi
sudo apt-get install \
btrfs-progs \
git \
golang-go \
go-md2man \
iptables \
libassuan-dev \
libbtrfs-dev \
libc6-dev \
libdevmapper-dev \
libglib2.0-dev \
libgpgme-dev \
libgpg-error-dev \
libprotobuf-dev \
libprotobuf-c-dev \
libseccomp-dev \
libselinux1-dev \
libsystemd-dev \
pkg-config \
runc \
make \
libapparmor-dev \
gcc \
cmake \
uidmap \
libostree-dev 02. Instal Conmon
Conmon adalah container monitor yang merupakan Program C kecil yang bertugas untuk mengawasi proses utama container.
git clone https://github.com/containers/conmon
cd conmon
make
sudo make podman
sudo cp /usr/local/libexec/podman/conmon /usr/local/bin/ 03. Instal runc
Untuk menginstal versi terbaru dari runc
git clone https://github.com/opencontainers/runc.git $GOPATH/src/github.com/opencontainers/runc
cd $GOPATH/src/github.com/opencontainers/runc
make BUILDTAGS="selinux seccomp"
sudo cp runc /usr/bin/runc 03. Instal Antarmuka Jaringan Kontainer (CNI)
Plugin CNI digunakan untuk menyisipkan antarmuka jaringan ke dalam ruang nama jaringan penampung.
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 Siapkan jaringan
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 Tambahkan konfigurasi
sudo mkdir -p /etc/containers
sudo curl -L -o /etc/containers/registries.conf https://src.fedoraproject.org/rpms/containers-common/raw/main/f/registries.conf
sudo curl -L -o /etc/containers/policy.json https://src.fedoraproject.org/rpms/containers-common/raw/main/f/default-policy.json 04. Instal Podman dari Sumber
git clone https://github.com/containers/podman/ $GOPATH/src/github.com/containers/podman
cd $GOPATH/src/github.com/containers/podman
make
sudo make install $ podman --version
podman version 4.0.0-dev Kesimpulan
Kami berharap bahwa kami telah memberikan dasar yang kuat dalam perjalanan Anda untuk menjadi lebih profesional dalam menggunakan podman untuk membuat dan mengelola container. Panduan ini memandu Anda melalui instalasi podman di Debian 11 Buster.