GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Di mana Gambar &Wadah Docker Disimpan di Host?

Docker menggunakan dua jenis format untuk mewakili proses yang berjalan—gambar, dan wadah, dan keduanya menyimpan data di drive komputer Anda. Kita akan berbicara tentang perintah yang disediakan Docker untuk menangani data, dan bagaimana Anda dapat menggunakannya untuk mengakses file image dan container.

Perbedaan Antara Gambar dan Wadah

Gambar adalah apa yang Anda buat saat menjalankan docker build; mereka disimpan dalam registri wadah seperti Docker Hub, dan berisi semua file dan kode untuk menjalankan aplikasi. Anda dapat menganggapnya seperti file ISO untuk sistem operasi mesin virtual.

Wadah dibuat dari gambar, dan seperti mesin virtual sebenarnya yang menjalankan aplikasi. Anda mungkin memiliki beberapa wadah yang berjalan secara paralel dari gambar yang sama. Setiap container akan memiliki sistem filenya sendiri, secara opsional dibuat dengan “volume mount” yang mengikat data dari host ke container.

Bekerja Dengan Penyimpanan Gambar Docker

Gambar menyimpan seluruh konten gambar di drive Anda. Setiap kali Anda menarik gambar dari internet, itu diunduh dan disimpan, biasanya selamanya. Gambar bisa sangat besar, jadi ini bisa bertambah seiring waktu, terutama untuk laptop dengan penyimpanan terbatas.

Jika Anda ingin mengakses data gambar secara langsung, biasanya disimpan di lokasi berikut:

  • Linux:/var/lib/docker/
  • Windows:C:ProgramDataDockerDesktop
  • macOS:~/Library/Containers/com.docker.docker/Data/vms/0/

Namun, menyentuh data ini kemungkinan merupakan ide yang buruk . Penyimpanan Docker rumit, dan sebenarnya sangat bervariasi tergantung pada driver penyimpanan apa yang digunakannya. Linux sekarang default ke overlay2 di sebagian besar distro, yang bahkan tidak dapat diakses oleh sebagian besar pengguna akhir. Mengacaukan hal ini dapat menyebabkan hilangnya data.

Sebagai gantinya, Docker menyediakan perintah terkelola untuk menangani gambar. Anda dapat melihat semua versi gambar yang diunduh dengan perintah sederhana:

docker image ls

Untungnya, ini tidak seburuk kelihatannya, karena gambar Docker menyimpan versi secara bertahap. Artinya, setiap kali Anda mengunduh versi baru, itu hanya mengganti bagian yang diubah. Jika Anda sering menggunakan gambar yang sama berulang kali, Anda mungkin tidak akan menghabiskan terlalu banyak biaya penyimpanan.

Namun, jika Anda menggunakan banyak gambar yang berbeda, Anda mungkin menyimpan banyak gambar yang bahkan tidak digunakan lagi. Untuk membersihkannya, Docker menyediakan perintah bawaan untuk menjalankan pengumpulan sampah. Ini akan memangkas semua gambar yang tidak memiliki referensi, yaitu tidak diberi tag atau tidak dirujuk oleh wadah apa pun.

docker image prune

Untuk memangkas semua gambar lama yang tidak digunakan oleh wadah yang ada, jalankan dengan -a bendera:

docker image prune -a

Itu mencakup kasus penggunaan utama, tetapi ada beberapa perintah yang lebih berguna:

  • inspect :menampilkan info tentang versi penampung.
  • save & load :menyimpan dan memuat gambar ke tar arsip.
  • rm :menghapus gambar secara langsung.
  • pull/push :pembaruan dari registri jarak jauh.
  • history :menyediakan log perubahan.

Bekerja Dengan Penyimpanan Kontainer Docker

Anda dapat melihat semua info tentang wadah dengan docker inspect , yang menunjukkan driver dan data sistem file, serta semua mount dan volume yang ada.

docker inspect containerID

Wadah menyimpan data dalam dua cara. Pertama adalah sistem file dasar, yang disalin dari gambar dan unik untuk setiap wadah. Docker menggunakan "dir bawah" dan "dir atas", yang merupakan lapisan terpisah yang digabungkan menjadi satu sistem file hybrid. Dir bawah menyimpan data gambar dasar, dan dir atas menyimpan semua yang diubah saat runtime, seperti file log. Dalam kedua kasus, penyimpanan ini bergantung pada driver sistem file yang dikonfigurasi Docker untuk digunakan.

Lalu, ada mount , yang mengikat direktori dari host ke penampung, biasanya dikelola secara otomatis dengan fitur Docker yang disebut volume. Ini disimpan secara normal, dan dapat diakses oleh pengguna akhir. Jika Anda melakukan pekerjaan yang mengharuskan Anda untuk mengubah data pada container yang sedang berjalan, Anda mungkin harus memodifikasi volume atau pengikatan mount.

Mengakses Volume

Bind mount dapat diakses secara langsung, dan merupakan pilihan tepat jika Anda ingin menyimpan konfigurasi yang digunakan untuk banyak container, atau menyimpan data yang dapat diakses yang tetap ada di seluruh container restart.

Jika Anda ingin mengubah data yang disimpan dalam volume, Anda juga dapat melakukannya. Mereka disimpan dalam format standar yang dapat diakses dari Linux:

/var/lib/docker/volumes/volumeID/_data

Anda bisa mendapatkan ID volume dan informasi dengan docker volume inspect .

Sama seperti gambar, volume juga bisa menjadi basi. Anda dapat menghapusnya dengan mudah, tetapi mencadangkan dan mentransfernya adalah proses yang lebih rumit.

docker volume prune

docker volume rm volumeID

Memodifikasi Sistem File Docker Container

Jika Anda ingin mengubah sistem file penampung, seperti halnya gambar, ini adalah ide yang buruk. Biasanya, Anda harus membuat versi baru penampung dengan perubahan yang diperbarui, dan menerapkan pembaruan.

Namun, jika Anda ingin membuat beberapa perubahan cepat tanpa menghentikan wadah, cara terbaik adalah dengan membuka bash shell di dalam wadah dan memodifikasinya melalui Docker. Melakukannya sangat mudah—jalankan docker exec pada wadah, dan berikan "bash" sebagai perintah:

docker exec -it container bash

Dari sini, Anda bebas menggunakan perintah Linux biasa. Jika Anda ingin melakukannya dari jarak jauh, Anda dapat menginstal server SSH di wadah Anda, dan mengikat port 22 ke port lain di host.

TERKAIT: Cara SSH Menjadi Wadah Docker


Docker
  1. Host Banyak Situs Web di Docker Containers

  2. Cara Menggunakan Gambar Docker, Wadah, dan File Docker Secara Mendalam

  3. Pengantar Gambar Docker

  1. Di mana File Terjemahan Disimpan?

  2. Cara memeriksa status dan ruang yang digunakan oleh gambar dan wadah

  3. Ketika Anda menginstal apt-get di mana file .deb disimpan?

  1. Cara Menjaga Kontainer Docker Tetap Berjalan Saat Daemon Berhenti

  2. Perbedaan Antara CMD dan ENTRYPOINT di Gambar Docker

  3. Di mana Gambar, Kontainer, dan Volume Docker Disimpan di Sistem Host Linux?