Saat Anda membutuhkan alat yang tepat, pergi ke toko perangkat keras lokal dan berjalan-jalan di gang memang tiada bandingnya. Sangat menyenangkan untuk menelusuri lorong perkakas tangan dan memeriksa semua obeng, palu, kunci pas heksagonal, pita pengukur, dan banyak lagi. Tepat ketika Anda merasa telah menemukan alat yang tepat, sebuah pemikiran muncul di benak Anda, jika saya dapat melakukannya dengan alat tangan, saya benar-benar dapat menyelesaikannya dengan alat listrik yang sempurna!
Setidaknya itulah yang dikatakan istri saya, dan Anda tahu, dia adalah orang yang berguna di keluarga kami. Alat pilihan saya adalah alat teknologi. Beri saya setumpuk kartu video di toko komputer, dan saya senang berkemah.
Baru-baru ini saya melakukan demo di Podman Community Meeting yang memamerkan beberapa alat wadah baru yang lebih bersinar yang telah kami kembangkan untuk Podman dan Buildah. Kami memiliki banyak pengumuman besar dengan Podman v3.0, jadi saya pikir beberapa alat ini mungkin telah dibayangi. Ketika saya menerima beberapa umpan balik yang bagus dari demonstrasi itu, saya merasa posting tindak lanjut mungkin bisa membantu juga. Jadi, mari selami dan temukan alat kontainer baru yang mengilap ini.
Ubah FROM pertama di Containerfile Anda
Ada --from
pilihan di buildah bud
perintah yang akan segera masuk ke Podman v3.0. Opsi ini memungkinkan Anda mengganti nilai yang terkait dengan yang pertama—dan hanya yang pertama—DARI pernyataan di Containerfile. Misalnya, jika kita memiliki Containerfile ini:
# cat ~/Containerfile.multifrom
FROM fedora as builder
FROM busybox
COPY --from=builder /bin/df /tmp/df_tester
Kita dapat melakukan lari awal, dan itu akan menunjukkan bahwa kita menggunakan fedora
gambar kontainer. Kemudian busybox
gambar digunakan dan akhirnya menyalin file dari fedora
/bin/df
direktori ke dalam busybox
/tmp/df_tester
gambar' direktori.
# buildah bud -t multi -f ~/Containerfile.multifrom .
STEP 1: FROM fedora AS builder
Resolved "fedora" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Getting image source signatures
Copying blob 157ab8011454 done
Copying config 9f2a560376 done
Writing manifest to image destination
Storing signatures
--> 9f2a5603764
STEP 2: FROM busybox
Resolved "busybox" as an alias (/root/.config/containers/short-name-aliases.conf)
Getting image source signatures
Copying blob 4c892f00285e done
Copying config 22667f5368 done
Writing manifest to image destination
Storing signatures
STEP 3: COPY --from=builder /bin/df /tmp/df_tester
STEP 4: COMMIT multi
Getting image source signatures
Copying blob 6b245f040973 skipped: already exists
Copying blob 9b68b051b385 done
Copying config 187c956137 done
Writing manifest to image destination
Storing signatures
--> 187c9561378
187c9561378efb043dfd0e8fa9c0afbdc0cf2faeb244e0dd7f2003321feab524
Sekarang bayangkan situasi yang lebih nyata, situasi di mana DARI your Anda pernyataan menunjuk ke gambar yang dibuat khusus dengan berbagai tag untuk versi gambar yang berbeda. Akan lebih baik, terutama di lingkungan CI, untuk hanya meneruskan gambar wadah yang ingin Anda gunakan pada proses berikutnya daripada membuat ulang seluruh Dockerfile. Itulah pekerjaan yang --from
mengisi.
Dalam contoh ini, kita akan menjalankan bud
yang sama perintah, tapi kali ini kita akan menambahkan --from alpine:latest
.
# buildah bud -t multi -f ~/Containerfile.multifrom --from alpine:latest .
STEP 1: FROM alpine:latest AS builder
Resolved "alpine" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Getting image source signatures
Copying blob 4c0d98bf9879 done
Copying config e50c909a8d done
Writing manifest to image destination
Storing signatures
--> e50c909a8df
STEP 2: FROM busybox
STEP 3: COPY --from=builder /bin/df /tmp/df_tester
STEP 4: COMMIT multi
Getting image source signatures
Copying blob 6b245f040973 skipped: already exists
Copying blob b498f23d5c32 done
Copying config d7e92107ed done
Writing manifest to image destination
Storing signatures
--> d7e92107edf
d7e92107edf42f046f6a7faddade4825ef1c2361ae21eb0ac3694871dcdb496c
Anda dapat melihat bahwa alpine:latest
container image pertama kali digunakan, dan sekarang setelah busybox
gambar telah dibuat, file dari /bin/df
al alpine disalin ke /tmp/df_tester
direktori di busybox
. Nilai FROM pertama pernyataan di Containerfile diganti dengan argumen yang kita lewati dengan --from
pilihan.
[ Anda mungkin juga ingin membaca: Wadah tanpa root menggunakan Podman ]
Terima masukan selama pembuatan
Alat baru lainnya adalah --stdin
opsi yang sesuai dengan buildah bud
atau podman build
(pada Podman v3.0). Saat Anda menggunakan opsi ini, proses build akan berhenti sejenak dan meminta input keyboard jika proses yang berjalan selama prosedur build memintanya.
Lihatlah Containerfile ini:
# cat /root/Containerfile.stdin
FROM ubi8
RUN yum install iputils
RUN touch /tmp/done
Containerfile ini menggunakan ubi8
image dan kemudian instal iputils
. Seperti yang mungkin bisa Anda tebak, yum
perintah akan meminta kami untuk memverifikasi pemasangan iputils
. Mari kita lihat apa yang terjadi tanpa --stdin
pilihan dalam permainan.
# cat /root/Containerfile.stdin
FROM ubi8
RUN yum install iputils
RUN touch /tmp/done
# cat /root/Containerfile.stdin
FROM ubi8
RUN yum install iputils
RUN touch /tmp/done
# buildah bud -t mystdin -f ~/Containerfile.stdin .
STEP 1: FROM ubi8
Resolved "ubi8" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Getting image source signatures
Copying blob d9e72d058dc5 done
Copying blob cca21acb641a done
Copying config 3269c37eae done
Writing manifest to image destination
Storing signatures
STEP 2: RUN yum install iputils
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Red Hat Universal Base Image 8 (RPMs) - BaseOS 2.5 MB/s | 774 kB 00:00
Red Hat Universal Base Image 8 (RPMs) - AppStre 7.6 MB/s | 5.0 MB 00:00
Red Hat Universal Base Image 8 (RPMs) - CodeRea 75 kB/s | 13 kB 00:00
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
iputils x86_64 20180629-2.el8 ubi-8-baseos 149 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 149 k
Installed size: 361 k
Is this ok [y/N]: Operation aborted.
error building at STEP "RUN yum install iputils": error while running runtime: exit status
Kapan yum
menginstal iputils
, itu meminta konfirmasi dan gagal karena tidak pernah menerima tanggapan. Sekarang mari kita lihat apa yang terjadi dengan --stdin
pilihan dalam permainan.
# buildah bud -t mystdin --stdin -f ~/Containerfile.stdin .
STEP 1: FROM ubi8
STEP 2: RUN yum install iputils
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Red Hat Universal Base Image 8 (RPMs) - BaseOS 2.8 MB/s | 774 kB 00:00
Red Hat Universal Base Image 8 (RPMs) - AppStre 7.5 MB/s | 5.0 MB 00:00
Red Hat Universal Base Image 8 (RPMs) - CodeRea 86 kB/s | 13 kB 00:00
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
iputils x86_64 20180629-2.el8 ubi-8-baseos 149 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 149 k
Installed size: 361 k
Is this ok [y/N]: y
Itu tidak muncul juga di blog seperti secara pribadi, tetapi proses pembuatan berhenti di baris Apakah ini boleh [y/T]: dan saya memasukkan karakter y dan pembangunan dilanjutkan (lihat output di bawah).
Downloading Packages:
iputils-20180629-2.el8.x86_64.rpm 972 kB/s | 149 kB 00:00
--------------------------------------------------------------------------------
Total 952 kB/s | 149 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : iputils-20180629-2.el8.x86_64 1/1
Running scriptlet: iputils-20180629-2.el8.x86_64 1/1
Verifying : iputils-20180629-2.el8.x86_64 1/1
Installed products updated.
Installed:
iputils-20180629-2.el8.x86_64
Complete!
STEP 3: RUN touch /tmp/done
STEP 4: COMMIT mystdin
Getting image source signatures
Copying blob 92538e92de29 skipped: already exists
Copying blob eb7bf34352ca skipped: already exists
Copying blob f9ed641975cb done
Copying config b2742f08a7 done
Writing manifest to image destination
Storing signatures
--> b2742f08a7a
b2742f08a7ae2cb76a2cd0c481f2d2d66b303379d23e5260577ea09476a8a486
Ini adalah contoh sederhana lainnya, terutama karena Anda dapat menambahkan -y
argumen ke yum
memerintah. Namun, mungkin ada perintah lain yang ingin Anda jalankan selama proses pembuatan yang ingin Anda masukkan lebih signifikan dengan mudah.
Temukan tag untuk gambar kontainer
Alat berikutnya yang relatif baru untuk Podman ini menunjukkan semua tag untuk gambar kontainer di registri. Saya menggunakan gambar di quay.io untuk Buildah, Podman, dan Skopeo, dan terkadang saya ingin menggunakan versi tertentu dari salah satu proyek dan tidak dapat mengingat mana yang ada di luar sana. Jika Anda terbiasa dengan Skopeo, Skopeo bekerja dengan sangat baik di ruang ini. Tetapi jika Anda belum menginstal Skopeo secara lokal, atau tidak dapat karena alasan tertentu, maka --list-tags
yang baru opsi untuk podman search
perintah adalah tiket Anda.
Jadi mari kita lihat semua tag yang dimiliki gambar Podman stable di quay.io:
# podman search --list-tags quay.io/podman/stable
NAME TAG
quay.io/podman/stable v1.4.4
quay.io/podman/stable v1.4.2
quay.io/podman/stable v1.5.1
quay.io/podman/stable v1.5.0
quay.io/podman/stable v1.6.2
quay.io/podman/stable auto
quay.io/podman/stable v1.6
quay.io/podman/stable v1.9.0
quay.io/podman/stable v1.9.1
quay.io/podman/stable v2.0.2
quay.io/podman/stable v2.0.6
quay.io/podman/stable v2.1.1
quay.io/podman/stable master
quay.io/podman/stable latest
Cepat, mudah, dan praktis.
Menggunakan gambar wadah Skopeo
Alat ini adalah jenis ying ke alat terakhir yang . Proyek Skopeo dipenuhi dengan banyak alat untuk digunakan dengan gambar kontainer. Itu juga akan menunjukkan kepada Anda daftar tag yang dimiliki gambar di registri. Skopeo juga dapat menampilkan informasi tentang registry, memungkinkan Anda untuk menyalin image container antar mekanisme penyimpanan termasuk registry, menyinkronkan registry container, menghapus image dari registry, dan banyak lagi.
Sekarang saya tidak akan membahas masing-masing perintah Skopeo ini di sini. Saya hanya akan melakukan kemampuan pencarian untuk menunjukkan tag. Perubahannya adalah saya hanya akan menggunakan Podman untuk menjalankan quay.io/skopeo/stable:latest
image, oleh karena itu menghilangkan kebutuhan untuk menginstal Skopeo namun masih memiliki semua fungsinya.
Jadi mari kita daftar tag dari quay.io/podman/stable:latest
gambar lagi, tapi kali ini melalui gambar wadah Skopeo:
# podman run quay.io/skopeo/stable:latest list-tags docker://quay.io/podman/stable
Trying to pull quay.io/skopeo/stable:latest...
Getting image source signatures
Copying blob 6629904ed3b7 done
Copying blob 2b74ed94761c done
Copying blob 692512e477a1 done
Copying blob 166a3cbbffd1 done
Copying blob b1e90be38d32 done
Copying blob a5dc7d6cfd62 done
Copying blob a3ed95caeb02 done
Copying blob a3ed95caeb02 done
Writing manifest to image destination
Storing signatures
{
"Repository": "quay.io/podman/stable",
"Tags": [
"v1.4.4",
"v1.4.2",
"v1.5.1",
"v1.5.0",
"v1.6.2",
"auto",
"v1.6",
"v1.9.0",
"v1.9.1",
"v2.0.2",
"v2.0.6",
"v2.1.1",
"master",
"latest"
]
}
Pertama kali Anda menjalankan perintah ini, ini lebih lambat daripada yang setara dengan Podman karena Anda dikenakan biaya skopeo
gambar kontainer ditarik. Setelah itu, kecepatannya setara pada putaran kedua, dan kemudian Anda dapat melakukan perintah Skopeo lain yang Anda inginkan juga.
Saya akan membiarkan Anda menjelajah lebih jauh sendiri, dan saya sarankan memulai penjelajahan Anda dengan How to run Skopeo in a container dari Valentin Rothberg. . Saya rasa gambar container Skopeo adalah alat yang paling keren di kotak alat container saya.
[ Memulai container? Lihat kursus gratis ini. Menyebarkan aplikasi kemas:Tinjauan teknis. ]
Semua alat baru yang mengilap
Sekarang istri saya masih dapat memiliki semua alat mengkilapnya dari toko perangkat keras lokal, dan saya akan menyimpan alat wadah baru saya di kotak alat virtual saya. Saya harap Anda menemukan perintah dan opsi baru ini berguna di kotak peralatan Anda sendiri.