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.