Image dan Kontainer
Mencari Image
Cari image dengan kata kunci:
$ podman search fedora $ podman search homeassistant
Registri yang akan dicari dikonfigurasi dalam file /etc/containers/registry.conf.
Hasil pencarian akan mencakup lokasi registri dan nama image.
-
Nama registri mungkin menyertakan nomor port.
-
Nama image terdiri dari USER/REPO. Pengguna dapat berupa individu, tim, atau perusahaan yang mengunggah image ke registri.
-
Repositori image berisi image yang telah diberi tag dan lapisan tersembunyi. Sebagian besar repositori berisi image dengan tag 'latest'.
-
Saat mengunduh image dengan perintah pull, run, atau build, Anda dapat menentukan image dengan tag tertentu. Defaultnya adalah menarik image yang diberi tag 'latest'.
Perintah skopeo adalah utilitas untuk bekerja dengan image di berbagai lingkungan kontainer. Perintah ini dibuat untuk melihat informasi di registri jarak jauh dan kini menjadi perintah sekaligus pustaka untuk menyalin image dengan berbagai transport. Perintah ini digunakan untuk mengelola image kontainer dan penyimpanan image dari jarak jauh maupun secara lokal, semuanya tanpa memerlukan akses root. Perintah ini juga dapat meneruskan kredensial autentikasi bila diperlukan oleh repositori.
Lihat tanggal pembuatan, arsitektur, label, tag, dan checksum lapisan dari repositori image jarak jauh:
$ skopeo inspect docker://registry.fedoraproject.org/fedora-minimal
Mengelola Image Lokal
Saat Anda menjalankan kontainer, image terlebih dahulu diunduh ke sistem lokal. Terkadang berguna untuk mengunduh image terlebih dahulu sebagai perintah terpisah.
Defaultnya adalah menarik image terbaru dari registri default:
$ podman pull fedora
Anda juga dapat menentukan registri, pengguna, tag, atau seperti pada contoh berikut, beberapa kombinasi:
$ podman pull registry.fedoraproject.org/fedora-minimal:rawhide
Tampilkan daftar image lokal:
$ podman images REPOSITORY TAG IMAGE ID CREATED SIZE registry.fedoraproject.org/fedora-minimal rawhide 8ecda3b9bc0d 2 days ago 164MB docker.io/homeassistant/raspberrypi3-homeassistant latest 3c74046ca2a7 3 days ago 1.05GB docker.io/library/fedora latest 8b38e3af7237 4 weeks ago 315MB
Keluaran yang sama ditampilkan dengan podman image ls. Perhatikan perintah tunggal 'image' sebelum perintah tambahan 'ls'. Jika Anda memiliki banyak image, Anda mungkin ingin menentukan filter atau mengurutkan berdasarkan nilai selain tanggal pembuatan.
Sebagai pengguna, image lokal akan disimpan di direktori ~/.local/share/containers/. Setiap pengguna memiliki namespace-nya sendiri sehingga ini terpisah dari kontainer yang dijalankan sebagai root. Menampilkan daftar image yang tersedia untuk root akan menampilkan daftar yang berbeda atau kosong:
$ sudo podman images
Beberapa tindakan tidak dapat dilakukan dengan kontainer tanpa root (rootless). Beberapa perangkat dan volume akan mengharuskan Anda menarik dan menjalankan kontainer dalam namespace root. Podman v1.0 saat ini juga memerlukan root untuk penerbitan port. Versi berikutnya akan memungkinkan penerbitan port tanpa root.
Seperti image jarak jauh, image lokal juga dapat diperiksa:
$ podman inspect fedora
Untuk memeriksa image dengan tag selain 'latest', sertakan tag-nya:
$ podman inspect fedora-minimal:rawhide
Menjalankan Kontainer
Untuk meluncurkan kontainer gunakan:
$ podman run fedora
Dengan image fedora, kontainer akan mulai berjalan lalu keluar karena tidak ada yang berjalan lagi. Beberapa image dikonfigurasi untuk menjalankan aplikasi di latar depan dan kontainer tidak akan berhenti sampai aplikasi tersebut berhenti.
Untuk menampilkan daftar kontainer yang sedang berjalan gunakan:
$ podman container ls
Untuk melihat semua kontainer, termasuk yang telah keluar:
$ podman container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES IS INFRA 7835aaadd2d1 docker.io/library/fedora:latest /bin/bash About a minute ago Exited (0) 14 seconds ago hopeful_beaver false
Kontainer yang telah keluar tetap disimpan agar data apa pun, termasuk log, dapat diperiksa sebelum hilang. Anda dapat memulai ulang kontainer yang telah keluar, namun alur kerja yang umum biasanya menghapus kontainer yang telah digunakan dan meluncurkan kontainer baru saat diperlukan.
Opsi pada perintah run dapat mengubah perilaku peluncuran kontainer:
$ podman run -it \ (1) > --name demo \ (2) > --rm \ (3) > fedora /bin/bash (4) bash-4.4# (5)
| 1 | Opsi -it mengaktifkan mode interaktif dan mengalokasikan pseudo-TTY. |
| 2 | Anda dapat memberi nama pada kontainer Anda. Tanpa opsi ini, nama acak akan dibuat secara otomatis. |
| 3 | Opsi --rm menyebabkan kontainer dihapus saat dihentikan. Ini menghemat ruang dan memungkinkan kontainer baru dimulai dengan nama yang sama. |
| 4 | Perintah yang akan dijalankan. Perintah tersebut harus ada di dalam image. Tidak semua image menyertakan bash. |
| 5 | Proses /bin/bash berjalan di latar depan. Saat Anda keluar dari shell, kontainer akan berhenti. |
Menerbitkan Port
Jika aplikasi Anda mendengarkan di jaringan, Anda perlu memetakan port kontainer ke port lokal di perangkat Anda. Pada versi saat ini, penerbitan port memerlukan akses root sehingga image harus tersedia di namespace root.
Tambahkan opsi -p saat Anda meluncurkan kontainer:
$ sudo podman run -p 127.0.0.1:8080:80 --name demo mydemohttp:latest
Anda kemudian dapat terhubung ke aplikasi Anda melalui 127.0.0.1:8080
Formatnya adalah ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort.
Opsi lain untuk menerbitkan port dan banyak opsi run lainnya tersedia dan terdokumentasi dengan baik di halaman manual podman-run.
Memetakan direktori lokal
Anda mungkin ingin aplikasi Anda menulis log atau mengumpulkan data ke direktori di host. Beberapa kontainer mengharapkan file konfigurasi yang disesuaikan berada di perangkat host. Dalam kedua kasus tersebut, Anda dapat membuat bind mount dengan opsi --volume. Tentukan direktori host, titik mount di dalam kontainer, dan opsi mount apa pun.
Misalnya, Home Assistant mengharapkan file konfigurasi berada di perangkat host:
$ podman run -d --name="home-assistant" -v /home/pi/homeassistant:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/raspberrypi3-homeassistant
Memetakan perangkat lokal
Opsi --device akan menambahkan perangkat host ke kontainer. Tentukan nama perangkat host dan secara opsional, nama perangkat di kontainer beserta izin apa pun. Beberapa perangkat, seperti perangkat GPIO, akan memerlukan akses root.
Untuk mengakses perangkat GPIO host dari kontainer:
$ sudo podman run -it --rm --name demo-gpio --device=/dev/gpiochip0 fedora:latest /bin/bash
Terhubung ke Kontainer yang Sedang Berjalan
Anda juga dapat terhubung ke kontainer yang sedang berjalan. Tentukan nama atau ID kontainer dan perintah yang akan dijalankan:
$ podman exec -it demo /bin/bash
Anda juga dapat melihat log kontainer secara langsung dengan podman:
$ podman logs demo
Perintah exec dan logs juga merupakan bagian dari perintah podman container.
Menghapus Kontainer dan Image
Tampilkan daftar kontainer untuk melihat 'Container ID' dan 'name' dari setiap kontainer. Hapus kontainer dengan menentukan ID atau nama kontainer:
$ podman container rm demo
Penghapusan kontainer terjadi secara otomatis saat kontainer berhenti jika kontainer dimulai dengan opsi --rm.
Menghapus kontainer tidak menghapus image. Tampilkan daftar image lokal dengan podman images atau podman image ls. Hapus image menggunakan 'IMAGE ID' atau nama repositori beserta tag-nya:
$ podman rmi registry.fedoraproject.org/fedora-minimal:rawhide
Anda juga dapat menghapus image dengan perintah image:
$ podman image rm registry.fedoraproject.org/fedora-minimal:rawhide
Want to help? Learn how to contribute to Fedora Docs ›