Cara Membuat Gambar Docker Dari Wadah yang Berjalan

Kontainer Docker pada dasarnya adalah instance aplikasi singkat yang tidak memiliki status internal. Itulah cara praktik terbaik untuk menanganinya yang memungkinkan Anda menghentikan atau memulai ulang wadah Anda kapan saja.

Terkadang perubahan pada sistem file container tidak dapat dihindari. Mungkin Anda sedang menguji perangkat lunak dan ingin snapshot kembali lagi nanti. Kasus penggunaan lain mungkin situasi di mana perangkat lunak di dalam wadah berhenti bekerja dan Anda ingin menyimpan salinan yang dapat Anda debug di masa mendatang.

Berikut cara membuat image Docker baru dari container yang sudah ada. Anda bisa memulai satu lagi wadah dari gambar itu untuk diisi dengan sistem file dari yang pertama.

Pembuatan Kontainer

Itu docker commit Perintah ini digunakan untuk mengambil wadah dan membuat gambar baru darinya. Ini bekerja dengan wadah yang berhenti atau berjalan.

Sintaks dasarnya adalah sebagai berikut:

docker commit example-container example-image:latest

Ini membuat gambar dari wadah bernama example-container. Anda juga dapat menentukan wadah dengan ID jika Anda mau. Bagian informasi yang sama tersedia dari output dari docker ps yang mencantumkan semua wadah di Host Anda.

gambar keluaran docker ps

Gambar yang dihasilkan diberi tag yang diberikan sebagai parameter kedua dari perintah. Ini adalah example-image:latest dalam contoh yang ditunjukkan di atas. Seperti operasi penandaan gambar biasa, gambar baru akan menggantikan referensi tag jika sudah ada.

Gambar pembuatan gambar Docker

Sekarang Anda dapat menggunakan gambar Anda untuk memulihkan sistem file dari example-container dalam contoh wadah baru:

docker run -d example-image:latest

Isi sistem file akan cocok dengan example-container wadah pada saat docker commit perintah dieksekusi Ada satu peringatan penting: konten volume yang dipasang tidak akan disertakan, jadi lokasi pemasangannya akan kosong di gambar wadah yang dibuat. Untuk menjalankan wadah baru dengan data volume utuh, gunakan -v tandai untuk memasang ulang volume dari wadah pertama saat Anda memulai instance kedua dengan docker run.

Poin penting lainnya adalah bagaimana Docker menangani komit dari menjalankan kontainer. Untuk sebagian besar ini harus bekerja dengan mulus tetapi default untuk menjeda wadah target sebelum melakukan komit. Semua proses dalam wadah akan ditangguhkan dan kemudian dilanjutkan setelah pembuatan gambar selesai. Ini meningkatkan konsistensi data dalam gambar baru tetapi membuat wadah tidak dapat diakses untuk sementara. Anda dapat menonaktifkan perilaku ini dengan mengintegrasikan --pause false termasuk milikmu docker commit memesan

Menambahkan Pesan Komit

Itu docker commit Perintah tersebut mendukung pesan komit dengan cara yang mirip dengan perangkat lunak kontrol versi seperti Git. Menambahkan pesan saat Anda mengkomit gambar dari wadah memungkinkan Anda untuk mendokumentasikan apa yang berubah dan alasan di balik komit Anda.

Menggunakan --message Hai -m tandai untuk menerapkan pesan komit:

docker commit -m "Example commit" example-container example-image:latest

Anda juga dapat menambahkan informasi penulis dengan bendera khusus. Berikan string yang sama First Name <email@example.com> format ke --author Hai -a bendera Ini akan disimpan dengan pesan komit.

docker commit -a "Example Author <example@example.com>" -m "Example commit" example-container example-image:latest

Pesan komit ditampilkan saat Anda menggunakan docker history perintah untuk melihat lapisan dalam gambar. Mereka akan muncul di COMMENT kolom paling kanan.

Komentar gambar tampilan gambar Docker "sejarah buruh pelabuhan"

Cara lain untuk mengakses informasi ini adalah dengan menggunakan docker inspect setara dengan grep untuk mengekstrak nilai penulis dan komentar dari representasi gambar JSON:

docker inspect <image-id> | grep 'Created|Author|Comment'

gambar melihat data komit gambar Docker menggunakan "pemeriksaan buruh pelabuhan"

Ini akan menampilkan data yang terkait dengan lapisan paling atas pada gambar.

Mengubah Instruksi Dockerfile

Membangun gambar memberi Anda kesempatan untuk mengubah beberapa instruksi di Dockerfile-nya. Anda dapat mengganti nilai berikut di gambar baru Anda:

  • CMD
  • ENTRYPOINT
  • ENV
  • EXPOSE
  • LABEL
  • ONBUILD
  • USER
  • VOLUME
  • WORKDIR

Untuk mengatur instruksi, gunakan --change Hai -c bendera:

docker commit --change 'ENTRYPOINT ["sh"]' example-container example-image:latest

Anda dapat mengulangi tanda tersebut sebanyak yang diperlukan untuk menerapkan semua perubahan yang Anda inginkan.

Hanya instruksi yang mempengaruhi lapisan tertinggi dari sistem file yang didukung. Anda tidak dapat memperluas gambar terfokus dengan mulus dengan lapisan baru melalui instruksi seperti RUN dan COPY. Namun Anda dapat mengambil hasil dari komit dan menulis Dockerfile baru dengan menambahkan konten baru sesuai kebutuhan:

# Created via `docker commit`
FROM example-image:latest
RUN apt install example-package

Jika Anda mengubah instruksi Dockerfile pada waktu komit, ada baiknya menambahkan pesan komit yang menjelaskan apa yang Anda ubah dan mengapa. Ini akan membantu siapa saja yang memiliki akses ke gambar untuk memahami perbedaan perilaku apa pun dibandingkan dengan wadah tempat gambar itu dibuat.

Ringkasan

Gambar Docker biasanya dibuat dari Dockerfiles dan digunakan untuk memulai wadah sekali pakai. Perubahan pada status sistem file penampung dibuat dengan membangun kembali gambar, menghancurkan penampung saat ini, dan memulai yang baru. Di dunia yang ideal, wadah tidak akan memiliki keadaan internal tetapi ini tidak selalu benar dalam praktiknya.

Membuat wadah memberi Anda cara untuk memulihkan sistem file saat ini di masa mendatang. Komit berguna untuk membuat replika wadah pengganggu sehingga Anda dapat melakukan debug di lingkungan terpisah sambil mempertahankan akses ke log dan file sementara yang dibuat sebelumnya.

Meskipun komit penampung sering kali mirip dengan snapshot VM, mereka tidak sama. VM mengontrol perangkat keras virtual dan status perangkat keras tersebut tercermin dalam snapshot. Kontainer Docker hanyalah sekumpulan proses yang berjalan pada sebuah host; komit adalah gambar Docker baru yang mewakili wadah berkas sistem tetapi harus tanpa data apa pun tentang status proses, kernel, dan perangkat keras Anda.

Leave a Comment

Your email address will not be published. Required fields are marked *