Podman melengkapi Buildah dan Skopeo dengan menawarkan pengalaman yang mirip dengan baris perintah Docker:memungkinkan pengguna menjalankan container mandiri (tidak diatur). Dan Podman tidak memerlukan daemon untuk menjalankan container dan pod, jadi kita bisa dengan mudah mengucapkan selamat tinggal pada daemon besar. Tidak ada daemon di latar belakang yang melakukan sesuatu, dan ini berarti Podman dapat diintegrasikan ke dalam layanan sistem melalui systemd
.
Dalam panduan ini kita akan mempelajari cara menginstal Podman di Fedora.
Pos terkait
- Cara menginstal dan menggunakan Podman di Debian 11
- Cara menginstal dan menggunakan Podman di Rocky Linux/Alma Linux/Centos 8
- Cara menginstal dan menggunakan Podman di OpenSUSE Leap 15.3
- Cara menginstal dan mengkonfigurasi buruh pelabuhan Di Rocky Linux/Centos 8
- Memulai Menulis Docker Dengan Contoh
- Docker sebagai agen build – Jalankan build Jenkins di Docker
Prasyarat
Untuk mengikuti, pastikan Anda memiliki yang berikut:
- Server/Workstation Fedora yang diperbarui
- Akses root atau Pengguna dengan akses sudo
- Akses ke internet
Daftar isi
- Memastikan bahwa server selalu mutakhir
- Memasang podman
- Contoh baris perintah
- Runa postgres container persisten
- Mengelola container sebagai layanan sistem melalui systemd dan Podman
1. Memastikan bahwa server sudah diperbarui
Gunakan perintah ini untuk memastikan bahwa paket server kami diperbarui
sudo dnf update -y
Biarkan kami memastikan paket umum telah diinstal
sudo dnf install -y vim
2. Memasang Podman
Podman tersedia di repositori default untuk Fedora. Instal menggunakan perintah ini:
sudo dnf install -y podman
Perintah ini akan menginstal Podman dan juga dependensinya.
Itu saja. Sekarang kita bisa bermain dengan Podman.
3. Contoh baris perintah
Mari kita jelajahi menjalankan Rocky Linux Container menggunakan podman.
Di buruh pelabuhan kita akan menggunakan perintah ini untuk menjalankan wadah linux yang berbatu:
docker run -it fedora:35 sh
Ini akan gagal karena tidak ada docker
perintah di mesin Fedora saya. Kita bisa mengganti buruh pelabuhan dengan podman:
podman run -it fedora:35 sh
Mari kita jalankan beberapa perintah untuk mengonfirmasi bahwa itu berfungsi seperti yang diharapkan:
$ podman run -it fedora:35 sh
Resolved "fedora" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
Trying to pull registry.fedoraproject.org/fedora:35...
Getting image source signatures
Copying blob 791199e77b3d done
Copying config 1b52edb081 done
Writing manifest to image destination
Storing signatures
sh-5.1# whoami
root
sh-5.1# exit
exit
Untuk memeriksa status penampung, gunakan podman ps
perintah
$ podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cd8f63c2e3f2 registry.fedoraproject.org/fedora:35 sh 50 seconds ago Exited (0) 17 seconds ago musing_ishizaka
Untuk menghapus penampung, gunakan podman rm
:
$ podman rm cd8f63c2e3f2
cd8f63c2e3f2fe5799d619104522892fca3ada2d3a5b7e4601648ac0de20cb89
Untuk membuat daftar gambar:
$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.fedoraproject.org/fedora 35 1b52edb08181 11 days ago 159 MB
Kami dapat menghapus gambar menggunakan gambar podman image rm
perintah:
$ podman image rm fedora
Untagged: registry.fedoraproject.org/fedora:35
Deleted: 1b52edb0818147bea39780625ec01ab46944284acf16d8bcfa4055f8a854a9f5
Dari penjelasan di atas, kita dapat mengonfirmasi bahwa perintah podman menggunakan sintaks yang sama dengan docker
4. Jalankan wadah persisten Postgres
Selanjutnya, mari kita jelajahi bagaimana kita dapat menjalankan wadah persisten. Dalam contoh ini, kita akan menjalankan container Postgres 14 dan me-mount data postgres ke volume lokal sehingga dapat terus dimulai ulang. Karena container bersifat sementara, data akan hilang jika kita tidak menyimpan dalam volume lokal.
Tarik docker.io/library/postgres:14.0-alpine
gambar
$ podman pull docker.io/library/postgres:14.0-alpine
Trying to pull docker.io/library/postgres:14.0-alpine...
Getting image source signatures
Copying blob 3da258773353 done
Copying blob 5034a66b99e6 done
Copying blob 82e9eb77798b done
Copying blob a0d0a0d46f8b done
Copying blob ccd761727716 done
Copying blob c6b2245b2f36 done
Copying blob 028554d3b6cc done
Copying blob 2c7ee7bc69e8 done
Copying config 87440f4e7f done
Writing manifest to image destination
Storing signatures
87440f4e7f9e60607dc11a4f0590a1c69b3a1c075211df478e22b0c27fb263e6
Konfirmasi gambar
$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/postgres 14.0-alpine 87440f4e7f9e 2 weeks ago 198 MB
Periksa gambar dengan
$ podman inspect 87440f4e7f9e
Mari kita siapkan folder yang akan menangani data Postgres setelah kita memulai wadah kita:
$ mkdir -p ~/apps/postgres/data
Jalankan
podman run -d \
-p 5432:5432 \
-v ~/apps/postgres/data:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=Sup3rSecre7 \
-e POSTGRES_USER=citizix_user \
-e POSTGRES_DB=citizix_db \
docker.io/library/postgres:14.0-alpine
Ini hasil saya
$ podman run -d \
-p 5432:5432 \
-v ~/apps/postgres/data:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=Sup3rSecre7 \
-e POSTGRES_USER=citizix_user \
-e POSTGRES_DB=citizix_db \
docker.io/library/postgres:14.0-alpine
dc5117faeb431c021f54a60e6303707fe7b48aef199fe53b751236eaf2c08136
Periksa proses:
$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dc5117faeb43 docker.io/library/postgres:14.0-alpine postgres 9 seconds ago Up 9 seconds ago 0.0.0.0:5432->5432/tcp cool_hermann
Konfirmasi log kontainer dengan ini. Anda dapat melihat bahwa inisialisasi db
$ podman logs dc5117faeb43 | head The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale "en_US.utf8". The default database encoding has accordingly been set to "UTF8". The default text search configuration will be set to "english". Data page checksums are disabled. fixing permissions on existing directory /var/lib/postgresql/data ... ok
Mari kita terhubung ke database dan melakukan beberapa operasi
$ podman exec -it dc5117faeb43 /bin/bash
bash-5.1# psql -U citizix_user -d citizix_db;
psql (14.0)
Type "help" for help.
citizix_db=# select version();
version
--------------------------------------------------------------------------------------------------------------
PostgreSQL 14.0 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit
(1 row)
citizix_db=#
Selanjutnya mari kita jelajahi membunuh dan mengeluarkan wadah. Kita dapat menggunakan podman kill
untuk menghentikan wadah. Ini akan menghentikan wadah, tetapi akan tetap ada di sana. Gunakan podman ps -a
untuk mendaftar. Untuk menghapusnya dengan benar, podman rm -f
.
$ podman kill dc5117faeb43
dc5117faeb43
$ podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dc5117faeb43 docker.io/library/postgres:14.0-alpine postgres 3 minutes ago Exited (137) About a minute ago 0.0.0.0:5432->5432/tcp cool_hermann
$ podman rm -f dc5117faeb43
dc5117faeb431c021f54a60e6303707fe7b48aef199fe53b751236eaf2c08136
5. Mengelola container sebagai layanan sistem melalui systemd dan Podman
Kami dapat mengelola wadah podman melalui systemd. Mari kita buat systemd
file resource untuk menangani container postgres yang baru saja kita buat di atas.
Buat file podman postgres:
sudo vim /etc/systemd/system/postgres-podman.service
Tambahkan konten ini
[Unit]
Description=Custom Postgres Podman Container
After=network.target
[Service]
Type=simple
TimeoutStartSec=5m
ExecStartPre=-/usr/bin/podman rm -f postgrespodman
ExecStart=/usr/bin/podman run \
-p 5432:5432 \
-v /home/fedora/apps/postgres/data:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=Sup3rSecre7 \
-e POSTGRES_USER=citizix_user \
-e POSTGRES_DB=citizix_db \
docker.io/library/postgres:14.0-alpine
ExecReload=-/usr/bin/podman stop postgrespodman
ExecReload=-/usr/bin/podman rm postgrespodman
ExecStop=-/usr/bin/podman stop postgrespodman
Restart=always
RestartSec=30
[Install]
Kemudian kita dapat memuat ulang systemd
katalog dan mulai layanan:
sudo systemctl daemon-reload
sudo systemctl start postgres-podman
Konfirmasi status layanan
$ sudo systemctl status postgres-podman
● postgres-podman.service - Custom Postgres Podman Container
Loaded: loaded (/etc/systemd/system/postgres-podman.service; static)
Active: active (running) since Mon 2021-11-15 05:20:35 UTC; 5s ago
Process: 29565 ExecStartPre=/usr/bin/podman rm -f postgrespodman (code=exited, status=1/FAILURE)
Main PID: 29596 (podman)
Tasks: 15 (limit: 4585)
Memory: 262.3M
CPU: 5.362s
CGroup: /system.slice/postgres-podman.service
├─29596 /usr/bin/podman run -p 5432:5432 -e POSTGRES_PASSWORD=Sup3rSecre7 -e POSTGRES_USER=citizix_user -e POSTGRES_DB=citizix_db docker.io/library/postgres:14.0-alpine
└─29646 storage-untar / /var/lib/containers/storage/overlay/772aeee45322a287d8cfed4d3a774519a5a1bfb20750bf46584a8f7a9713fcaf/diff
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:82e9eb77798bd506a06a9adab733c822c718be829c54d514b5789b07c0f1c164
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:c6b2245b2f36c7d2a1e9071eeede220cca1f2e0662350115a22e7cac7f973a8c
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:ccd761727716597fddb7d24aa4d7d68b3b638897b9351ccc295aa86407bd85e6
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:5034a66b99e67db609bf6b4f82bea915e39a42e6f03d11889f7406b4de9e99da
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:a0d0a0d46f8b52473982a3c466318f479767577551a53ffc9074c9fa7035982e
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:3da258773353ad3725cb0ef73e28bd60fdd9078df3790b06b98198a86ef0424f
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:2c7ee7bc69e85f0517dccf3edfa293c2bfc147e3794ab403fda249c2e59a58ab
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:028554d3b6ccc72641ab3b2a68597bf04cdbb49e03bb977c69198fd35c098e87
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:2c7ee7bc69e85f0517dccf3edfa293c2bfc147e3794ab403fda249c2e59a58ab
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:028554d3b6ccc72641ab3b2a68597bf04cdbb49e03bb977c69198fd35c098e87
Kami baru saja menyiapkan layanan sistem khusus berdasarkan wadah yang dikelola melalui Podman!
Kesimpulan
Kami berhasil menjelajahi cara menginstal Podman di server Rocky Linux/Centos 8 kami dalam panduan ini.