Salah satu tantangan yang dihadapi pengembang di masa lalu adalah membuat aplikasi berjalan dengan andal di berbagai lingkungan komputasi. Seringkali, aplikasi tidak berjalan seperti yang diharapkan atau mengalami kesalahan dan gagal sama sekali. Dan di situlah konsep containers lahir.

Apa itu Gambar Kontainer?

Container gambar adalah file statis yang dikirimkan dengan kode yang dapat dieksekusi yang berjalan di lingkungan yang terisolasi. Gambar kontainer terdiri dari pustaka sistem, dependensi & pengaturan platform lain yang diperlukan oleh aplikasi untuk berjalan di lingkungan yang beragam.

Red Hat Linux menyediakan seperangkat alat kontainer berguna yang dapat Anda manfaatkan untuk bekerja secara langsung dengan kontainer Linux menggunakan perintah buruh pelabuhan yang diperlukan. Ini termasuk:

  • Podman – Ini adalah mesin kontainer tanpa daemon untuk menjalankan dan mengelola OCI wadah dalam mode root atau rootless. Podman mirip dengan Docker dan memiliki opsi perintah yang sama kecuali itu Docker adalah dasmon. Anda dapat menarik, menjalankan, dan mengelola gambar kontainer menggunakan podman dengan cara yang sama seperti yang Anda lakukan dengan Docker. Podman hadir dengan banyak fitur canggih, sepenuhnya terintegrasi dengan systems, dan menawarkan dukungan Namespace pengguna yang mencakup menjalankan container tanpa memerlukan pengguna root.
  • Skopeo: Ini adalah alat baris perintah yang digunakan untuk menyalin gambar kontainer dari satu registri ke registri lain. Kamu dapat memakai Skopeo untuk menyalin gambar ke dan dari host tertentu serta menyalin gambar ke registri atau lingkungan wadah lain. Selain menyalin gambar, Anda dapat menggunakannya untuk memeriksa gambar dari berbagai pendaftar dan menggunakan tanda tangan untuk membuat dan memverifikasi gambar.
  • Buildah: Ini adalah seperangkat alat baris perintah yang digunakan untuk membuat dan mengelola wadah OCI gambar menggunakan Dockers.

Pada artikel ini, kami akan fokus pada Mengelola kontainer menggunakan podman dan Skopeo.

Mencari Gambar Kontainer dari Remote Registry

Itu podman search memungkinkan Anda untuk mencari pendaftar jarak jauh yang dipilih untuk gambar kontainer. Daftar pendaftar default didefinisikan di: registries.conf terletak di /etc/containers/.

Registri didefinisikan oleh 3 bagian.

  • [registries.search] – Bagian ini menentukan registri default yang podman dapat mencari gambar kontainer. Ini mencari gambar yang diminta di registry.access.redhat.com, registry.redhat.io, dan docker.io pendaftar.
Registri Default
  • [registries.insecure]– Bagian ini menentukan registry yang tidak menerapkan enkripsi TLS yaitu registry yang tidak aman. Secara default, tidak ada entri yang ditentukan.
Registri Tidak Aman
Registri Tidak Aman
  • [registries.block] – Ini memblokir atau menolak akses ke registri tertentu dari sistem lokal Anda. Secara default, tidak ada entri yang ditentukan.
Blok Registri
Blok Registri

Seperti biasa (non-root) pengguna menjalankan perintah podman, Anda dapat menentukan sendiri registries.conf di direktori home Anda ($HOME/.config/containers/registries.conf) untuk mengganti pengaturan seluruh sistem.

Aturan Saat Menentukan Registri

Saat Anda menentukan registry, ingatlah hal berikut:

  • Setiap registri harus diapit oleh tanda kutip tunggal.
  • Registri dapat ditentukan menggunakan nama host atau alamat IP.
  • Jika beberapa pendaftar ditentukan, maka mereka harus dipisahkan dengan koma.
  • Jika registri menggunakan port non-standar – baik port TCP port 443 untuk aman dan 80 untuk tidak aman, – nomor port harus ditentukan di samping nama registri, mis. registry.example.com:5566.

Untuk mencari registri untuk gambar kontainer menggunakan sintaks:

# podman search registry/container_image

Misalnya, untuk mencari Redis gambar di registry.redhat.io registry, jalankan perintah:

# podman search registry.redhat.io/redis
Cari Registry untuk Gambar Kontainer
Cari Registry untuk Gambar Kontainer

Untuk mencari MariaDB gambar kontainer dijalankan.

# podman search registry.redhat.io/mariadb
Cari Gambar Kontainer MariaDB
Cari Gambar Kontainer MariaDB

Untuk mendapatkan deskripsi yang rumit tentang gambar kontainer, gunakan: –no-trunc sebelum nama gambar container dari hasil yang anda dapatkan. Misalnya, kami akan mencoba mendapatkan deskripsi detail dari gambar kontainer MariaDB seperti yang ditunjukkan:

# podman search --no-trunc registry.redhat.io/rhel8/mariadb-103
Deskripsi Daftar Gambar Kontainer MariaDB
Deskripsi Daftar Gambar Kontainer MariaDB

Menarik Gambar Kontainer

Menarik atau mengambil gambar kontainer dari registri jarak jauh mengharuskan Anda mengautentikasi terlebih dahulu sebelum hal lain. Misalnya, untuk mengambil gambar wadah MariaDB, pertama-tama masuk ke registri Redhat:

# podman login

Berikan nama pengguna dan kata sandi Anda dan tekan ‘ENTER‘ di papan ketik Anda. Jika semuanya berjalan dengan baik, Anda akan mendapatkan pesan konfirmasi bahwa login ke registri berhasil.

Login Succeeded!

Sekarang, Anda dapat menarik gambar menggunakan sintaks yang ditunjukkan:

# podman pull <registry>[:<port>]/[<namespace>/]<name>:<tag>

Itu <registry> mengacu pada host jarak jauh atau registri yang menyediakan repositori gambar kontainer di TCP <port>. Itu <namespace> dan <name> secara kolektif menentukan gambar wadah berdasarkan <namespace> di registri. Akhirnya, <tag> menentukan versi gambar kontainer. Jika tidak ada yang ditentukan, tag default – terbaru – digunakan.

Itu selalu disarankan untuk menambahkan pendaftar tepercaya, yaitu yang menyediakan enkripsi dan tidak mengizinkan pengguna anonim untuk menelurkan akun dengan nama acak.

Untuk menarik gambar MariaDB, jalankan perintah:

# podman pull registry.redhat.io/rhel8/mariadb-103
  • Itu <registry> – registry.redhat.io
  • Itu <namespace> – rhel8
  • Itu <name> – MariaDB
  • Itu <tag> – 103
Tarik Gambar MariaDB
Tarik Gambar MariaDB

Untuk penarikan gambar kontainer berikutnya, tidak diperlukan login lebih lanjut karena Anda sudah diautentikasi. Untuk menarik Redis gambar kontainer, cukup jalankan:

# podman pull registry.redhat.io/rhscl/redis-5-rhel7
Tarik Gambar Kontainer Redis
Tarik Gambar Kontainer Redis

Mencantumkan Gambar Kontainer

Setelah Anda selesai menarik gambar, Anda dapat melihat gambar yang saat ini ada di host Anda dengan menjalankan perintah gambar podman.

# podman images
Daftar Gambar Kontainer
Daftar Gambar Kontainer

Memeriksa Gambar Kontainer

Sebelum menjalankan container, sebaiknya periksa gambar dan pahami fungsinya. Itu podman inspect mencetak lautan metadata tentang wadah seperti OS dan Arsitektur.

Untuk memeriksa gambar, jalankan podman inspect diikuti oleh ID gambar atau repositori.

# podman inspect IMAGE ID
OR
# podman inspect REPOSITORY

Dalam contoh di bawah ini, kami memeriksa MariaDB wadah.

# podman inspect registry.redhat.io/rhel8/mariadb-103
Memeriksa Gambar Kontainer MariaDB
Memeriksa Gambar Kontainer MariaDB

Untuk menarik metadata tertentu untuk wadah, lewati –format diikuti dengan metadata dan identitas wadah ( ID Gambar atau nama ).

Pada contoh di bawah, kami mengambil informasi tentang arsitektur dan deskripsi wadah dasar RHEL 8 yang berada di bawah ‘Labels‘ bagian.

# podman inspect --format=’{{.Labels.architecture}}’ image ID
# podman inspect --format=’{{.Labels.description}}’ image ID
Dapatkan Info Tentang Arsitektur Kontainer
Dapatkan Info Tentang Arsitektur Kontainer

Untuk memeriksa gambar jarak jauh dari registri lain, gunakan: skopeo inspect. Pada contoh di bawah ini, kami memeriksa gambar init RHEL 8 yang dihosting di Docker.

# skopeo inspect docker://registry.redhat.io/rhel8-beta/rhel-init
Periksa Gambar Jarak Jauh dari Docker Registry
Periksa Gambar Jarak Jauh dari Docker Registry

Menandai Gambar Kontainer

Seperti yang mungkin telah Anda catat, nama gambar biasanya bersifat generik. Misalnya, gambar redis diberi label:

registry.redhat.io/rhscl/redis-5-rhel7

Memberi tag pada gambar memberi mereka nama yang lebih intuitif untuk lebih memahami isinya. Menggunakan podman tagAnda dapat membuat tag gambar yang pada dasarnya merupakan alias untuk nama gambar yang terdiri dari bagian-bagian berbeda.

Ini adalah:

registry/username/NAME:tag

Misalnya, untuk mengubah nama generik gambar Redis yang memiliki ID 646f2730318c kita akan menjalankan perintah:

# podman tag 646f2730318c myredis

Untuk menambahkan tag di akhir, tambahkan titik dua penuh diikuti dengan nomor tag:

# podman tag 646f2730318c myredis:5.0

Tanpa menambahkan nomor tag, itu hanya akan diberikan atribut terbaru.

Tetapkan Nama untuk Gambar Kontainer Redis
Tetapkan Nama untuk Gambar Kontainer Redis

Menjalankan Gambar Kontainer

Untuk menjalankan wadah, gunakan podman run. Sebagai contoh:

# podman run image_id

Untuk menjalankan wadah secara diam-diam di latar belakang sebagai layanan daemon, gunakan -d seperti yang ditunjukkan.

# podman run -d image_id

Misalnya, untuk menjalankan redis gambar dengan ID 646f2730318ckita akan memanggil perintah:

# podman run -d 646f2730318c
Jalankan Gambar Wadah Redis
Jalankan Gambar Wadah Redis

Jika Anda menjalankan wadah berdasarkan sistem operasi seperti RHEL 8 gambar dasar, Anda dapat memperoleh akses ke shell menggunakan -it pengarahan. Itu -i membuat sesi interaktif sementara -t memunculkan sesi terminal. Itu –name atur nama wadah menjadi mybash sementara adalah ecbc6f53bba0 id gambar dari gambar dasar.

# podman run -it --name=mybash ecbc6f53bba0

Setelah itu, Anda dapat menjalankan perintah shell apa pun. Pada contoh di bawah, kami memverifikasi versi OS dari image container.

# cat /etc/os-release
Verifikasi Versi OS Gambar Kontainer
Verifikasi Versi OS Gambar Kontainer

Untuk keluar dari container, cukup aktifkan perintah exit.

# exit

Setelah wadah keluar, secara otomatis berhenti. Untuk memulai wadah lagi, gunakan podman start itu -ai seperti yang ditunjukkan.

# podman start -ai mybash

Sekali lagi, ini memberi Anda akses ke shell.

Mulai Gambar Kontainer
Mulai Gambar Kontainer

Daftar Menjalankan Gambar Kontainer

Untuk membuat daftar container yang sedang berjalan, gunakan: podman ps seperti yang ditunjukkan.

# podman ps
Daftar Menjalankan Gambar Kontainer
Daftar Menjalankan Gambar Kontainer

Untuk melihat semua container termasuk container yang telah keluar setelah dijalankan, gunakan perintah:

# podman ps -a
Lihat Semua Gambar Kontainer
Lihat Semua Gambar Kontainer

Konfigurasikan Gambar Kontainer ke Mulai Otomatis di bawah Layanan Systemd

Di bagian ini, kami fokus pada bagaimana wadah dapat dikonfigurasi untuk berjalan langsung pada sistem RHEL sebagai layanan systemd.

Pertama, dapatkan gambar pilihan Anda. Dalam hal ini, kami telah menarik Redis gambar dari hub buruh pelabuhan:

# podman pull docker.io/redis

Jika Anda menjalankan SELinux di sistem Anda, Anda perlu mengaktifkan container_manage_cgroup boolean untuk menjalankan kontainer dengan systemd.

# setsebool -p container_manage_cgroup on

Setelah itu, jalankan gambar kontainer di latar belakang dan tetapkan ke nama gambar pilihan Anda. Dalam contoh ini, kami telah menamai gambar kami redis_server dan memetakan pelabuhan 6379 dari wadah ke kami RHEL 8 tuan rumah

# podman run -d --name redis_server -p 6379:6379 redis
Jalankan Gambar Kontainer di Latar Belakang
Jalankan Gambar Kontainer di Latar Belakang

Selanjutnya, kita akan membuat systemd file konfigurasi unit untuk redis di /etc/systemd/system/.

# vim /etc/systemd/system/redis-container.service

Tempel konten di bawah ini ke file.

[Unit]
Description=Redis container

[Service]
Restart=always
ExecStart=/usr/bin/podman start -a redis_server
ExecStop=/usr/bin/podman stop -t 2 redis_server

[Install]
WantedBy=local.target

Simpan dan keluar dari file.

Selanjutnya, konfigurasikan wadah untuk memulai secara otomatis saat boot.

# systemctl enable redis-container.service

Selanjutnya, mulai penampung dan verifikasi status berjalannya.

# systemctl start redis-container.service
# systemctl status redis-container.service
Verifikasi Status Gambar Penampung
Verifikasi Status Gambar Penampung

Konfigurasikan Penyimpanan Persisten untuk Gambar Kontainer

Saat menjalankan container, sebaiknya konfigurasikan penyimpanan eksternal persisten pada host. Ini menyediakan cadangan jika wadah mogok atau terhapus secara tidak sengaja.

Untuk mempertahankan data, kita akan memetakan direktori yang terletak di host ke direktori di dalam wadah.

$ podman run --privileged -it -v /var/lib/containers/backup_storage:/mnt registry.redhat.io/ubi8/ubi /bin/bash

Itu –privileged dilewatkan ketika SELinux diatur untuk menegakkan. Itu -v menentukan volume eksternal yang terletak di host. Volume wadah di sini adalah /mnt.

Setelah kita mengakses shell, kita akan membuat file sampel testing.txt dalam /mnt seperti yang ditunjukkan.

$ echo "This tests persistent external storage" > /mnt/testing.txt

Kami kemudian exit wadah dan periksa apakah file ada di penyimpanan eksternal yang berada di host

# exit
# cat /var/lib/containers/backup_storage/testing.txt

Keluaran This tests persistent external storage.

Konfigurasikan Penyimpanan Persisten untuk Kontainer
Konfigurasikan Penyimpanan Persisten untuk Kontainer

Menghentikan dan Menghapus Kontainer

Setelah Anda selesai menjalankan wadah Anda, Anda dapat menghentikannya menggunakan podman stop diikuti oleh container-id yang bisa kamu dapatkan dari podman ps.

# podman stop container-id
Hentikan Gambar Kontainer
Hentikan Gambar Kontainer

Untuk menghapus wadah yang tidak lagi Anda perlukan, pertama-tama, pastikan Anda menghentikannya dan kemudian memanggil podman rm diikuti oleh id wadah atau nama sebagai opsi.

# podman rm container-id

Untuk menghapus beberapa wadah sekaligus dalam satu perintah, tentukan wadahnya ids dipisahkan oleh spasi.

# podman rm container-id-1 container-id-2 container-id-3
Hapus Gambar Kontainer
Hapus Gambar Kontainer

Untuk menghapus semua wadah Anda, jalankan perintah:

# podman rm -a
Hapus Semua Kontainer
Hapus Semua Kontainer

Menghapus Gambar

Untuk menghapus gambar, pertama-tama, pastikan bahwa semua wadah yang muncul dari gambar dihentikan dan dihapus seperti yang dibahas dalam sub-topik sebelumnya.

Selanjutnya, lanjutkan dan jalankan podman -rmi diikuti dengan ID gambar seperti yang ditunjukkan:

# podman -rmi image-id
Hapus Gambar
Hapus Gambar

Kesimpulan

Ini mengakhiri bab ini tentang mengelola dan bekerja dengan kontainer di RHEL 8. Kami harap panduan ini memberikan pemahaman yang baik tentang container dan bagaimana Anda dapat berinteraksi dan mengelolanya di RHEL sistem menggunakan podman dan Skopeo.