Learning Docker Bagian 6: Bekerja dengan Data

Dalam pemasangan seri Docker hari ini, kami akan berbicara tentang bekerja dengan data. Secara khusus, volume Docker. Dalam materi ini, kami terus-menerus membandingkan mekanisme perangkat lunak Docker dengan berbagai analogi yang dapat dimakan. Kami tidak akan meninggalkan tradisi ini di sini. Data buruh pelabuhan harus bumbu. Ada banyak jenis rempah-rempah di dunia, dan di Docker ada banyak cara untuk bekerja dengan data.

โ†’ Bagian 1: dasar-dasarnya
โ†’ Bagian 2: istilah dan konsep
โ†’ Bagian 3: File Dockerfile
โ†’ Bagian 4: mengurangi ukuran gambar dan mempercepat perakitannya
โ†’ Bagian 5: tim
โ†’ Bagian 6: bekerja dengan data



Harap dicatat bahwa bahan ini disiapkan menggunakan mesin Docker versi 18.09.1 โ€‹โ€‹dan API versi 1.39 .

Data Docker dapat disimpan baik sementara atau permanen. Mari kita mulai dengan data waktu.

Penyimpanan data sementara


Ada dua cara untuk mengatur pekerjaan dengan data sementara dalam wadah Docker.

Secara default, file yang dibuat oleh aplikasi yang berjalan dalam wadah disimpan dalam lapisan wadah yang diaktifkan perekaman. Agar mekanisme ini berfungsi, Anda tidak perlu mengkonfigurasi apa pun secara khusus. Ternyata murah dan marah. Aplikasi hanya perlu menyimpan data dan terus melakukan hal mereka sendiri. Namun, setelah wadah tidak ada lagi, data yang disimpan dengan cara sederhana akan hilang.

Untuk menyimpan file sementara di Docker, Anda dapat menggunakan solusi lain yang cocok untuk kasus-kasus di mana tingkat kinerja yang lebih tinggi diperlukan dibandingkan dengan apa yang dapat dicapai dengan menggunakan mekanisme standar untuk penyimpanan data sementara. Jika Anda tidak memerlukan data Anda untuk disimpan lebih lama dari wadah yang ada, Anda dapat menghubungkan tmpfs, penyimpanan sementara informasi yang menggunakan RAM host, ke wadah. Ini akan mempercepat kinerja penulisan dan membaca data.

Sering terjadi bahwa data perlu disimpan bahkan setelah wadah tidak ada lagi. Untuk melakukan ini, kita perlu mekanisme yang berguna untuk penyimpanan data permanen.

Penyimpanan data permanen


Ada dua cara untuk membuat umur data lebih lama dari umur kontainer. Salah satu caranya adalah menggunakan teknologi bind mount. Dengan pendekatan ini, Anda dapat memasang, misalnya, folder yang benar-benar ada ke wadah. Proses yang terletak di luar Docker akan dapat bekerja dengan data yang disimpan dalam folder tersebut. Inilah yang tampak seperti tmpfs mount dan bind mount technology.


Pasang tmpfs dan ikat mount

Kerugian menggunakan teknologi bind mount adalah penggunaannya membuatnya sulit untuk membuat cadangan data, memigrasikan data, dan berbagi data di berbagai wadah. Jauh lebih baik menggunakan volume Docker untuk penyimpanan data yang persisten.

Tom Docker


Volume adalah sistem file yang berada di mesin host di luar wadah. Pembuatan dan manajemen volume dilakukan oleh Docker. Berikut adalah sifat dasar volume Docker:

  • Mereka mewakili sarana untuk penyimpanan informasi permanen.
  • Mereka independen dan terpisah dari wadah.
  • Mereka dapat dibagi antara wadah yang berbeda.
  • Mereka memungkinkan Anda untuk mengatur pembacaan dan penulisan data yang efektif.
  • Volume dapat di-host di penyedia cloud jarak jauh.
  • Mereka dapat dienkripsi.
  • Mereka bisa diberi nama.
  • Kontainer dapat mengatur agar volume diisi dengan data terlebih dahulu.
  • Mereka nyaman untuk pengujian.

Seperti yang Anda lihat, volume Docker memiliki fitur hebat. Mari kita bicara tentang cara membuatnya.

Pembuatan Volume


Volume dapat dibuat menggunakan Docker atau melalui permintaan API.

Berikut adalah instruksi di Dockerfile yang memungkinkan Anda membuat volume saat wadah dimulai.

VOLUME /my_volume 

Saat menggunakan instruksi Docker yang sama, setelah membuat wadah, itu akan membuat volume berisi data yang sudah ada di lokasi yang ditentukan. Perhatikan bahwa jika Anda membuat volume menggunakan Dockerfile, ini tidak membebaskan Anda dari kebutuhan untuk menentukan titik pemasangan untuk volume.

Anda juga dapat membuat volume di Dockerfile menggunakan format JSON.

Selain itu, volume dapat dibuat menggunakan baris perintah saat wadah sedang berjalan.

Bekerja dengan volume dari baris perintah


โ–Buat volume


Anda dapat membuat volume independen dengan perintah berikut:

 docker volume create โ€”-name my_volume 

โ–Melipat informasi volume


Untuk melihat daftar volume Docker, gunakan perintah berikut:

 docker volume ls 

Anda dapat menjelajahi volume tertentu seperti ini:

 docker volume inspect my_volume 

โ–Hapus Volume


Anda dapat menghapus volume seperti ini:

 docker volume rm my_volume 

Untuk menghapus semua volume yang tidak digunakan oleh kontainer, Anda dapat menggunakan perintah berikut:

 docker volume prune 

Sebelum menghapus volume, Docker akan meminta Anda untuk konfirmasi operasi ini.

Jika volume dikaitkan dengan wadah, volume seperti itu tidak dapat dihapus sampai wadah terkait dihapus. Dalam hal ini, bahkan jika kontainer dilepas, Docker tidak selalu memahami hal ini. Jika ini terjadi, Anda dapat menggunakan perintah berikut:

 docker system prune 

Ini dirancang untuk membersihkan sumber daya Docker. Setelah menjalankan perintah ini, Anda harus dapat menghapus volume yang statusnya sebelumnya salah ditentukan.

Tandai --mount dan --volume


Untuk bekerja dengan volume, ketika Anda memanggil docker , Anda sering harus menggunakan bendera. Misalnya, untuk membuat volume selama pembuatan wadah, Anda dapat menggunakan konstruksi berikut:

 docker container run --mount source=my_volume, target=/container/path/for/volume my_image 

Pada zaman kuno (hingga 2017), bendera --volume . Awalnya, flag ini (juga dapat digunakan dalam bentuk yang disingkat, kemudian terlihat seperti -v ) digunakan untuk kontainer independen, dan flag --mount di lingkungan Docker Swarm. Namun, dimulai dengan Docker 17.06, flag --mount dapat digunakan dalam skenario apa pun.

Perlu dicatat bahwa ketika menggunakan flag --mount , jumlah data tambahan yang harus ditentukan dalam perintah meningkat, tetapi, karena beberapa alasan, lebih baik menggunakan flag ini daripada --volume . Bendera --mount adalah satu-satunya mekanisme yang memungkinkan Anda untuk bekerja dengan layanan atau menentukan pengaturan driver volume. Selain itu, bekerja dengan bendera ini lebih mudah.

Dalam contoh-contoh perintah yang ada yang bertujuan untuk bekerja dengan data di Docker, Anda dapat menemukan banyak contoh penggunaan flag -v . Saat mencoba menyesuaikan perintah ini untuk Anda sendiri, perlu diingat bahwa --volume dan --volume menggunakan format parameter yang berbeda. Artinya, Anda tidak bisa hanya mengganti -v dengan --mount dan mendapatkan perintah yang berfungsi.

Perbedaan utama antara --mount dan --volume adalah ketika menggunakan flag --volume semua parameter dikumpulkan bersama dalam satu bidang, dan saat menggunakan --mount parameter dipisahkan.

Saat bekerja dengan --mount parameter direpresentasikan sebagai pasangan kunci-nilai, yaitu, sepertinya key=value . Pasangan ini dipisahkan oleh koma. Berikut adalah opsi --mount umum digunakan:

  • type - type mount. Nilai untuk kunci yang sesuai dapat berupa bind , volume atau tmpfs . Kita berbicara tentang volume di sini, yaitu - kita tertarik pada nilai volume .
  • source - source mount. Untuk volume bernama, ini adalah nama volume. Untuk volume yang tidak disebutkan namanya, kunci ini tidak ditentukan. Itu dapat disingkat menjadi src .
  • destination - jalur di mana file atau folder dipasang di wadah. Kunci ini dapat disingkat menjadi dst atau target .
  • readonly - readonly -mount volume read-only . Penggunaan kunci ini adalah opsional, tidak ada nilai yang diberikan padanya.

Berikut adalah contoh penggunaan --mount dengan banyak opsi:

 docker run --mount type=volume,source=volume_name,destination=/path/in/container,readonly my_image 

Ringkasan


Berikut adalah beberapa perintah berguna yang dapat Anda gunakan saat bekerja dengan volume Docker:

  • docker volume create
  • docker volume ls
  • docker volume inspect
  • docker volume rm
  • docker volume prune

Berikut adalah daftar opsi yang umum digunakan untuk --mount , berlaku untuk perintah seperti docker run --mount my_options my_image :

  • type=volume
  • source=volume_name
  • destination=/path/in/container
  • readonly

Sekarang setelah kami menyelesaikan seri Docker ini, saatnya untuk mengatakan beberapa kata tentang di mana mereka yang mempelajari Docker dapat melanjutkan. Berikut ini adalah artikel bagus tentang Docker. Ini adalah buku tentang Docker (ketika membeli buku ini, cobalah untuk mendapatkan edisi terbarunya). Berikut ini adalah buku lain yang cocok untuk mereka yang percaya bahwa praktik adalah cara terbaik untuk belajar teknologi.

Pembaca yang budiman! Materi apa tentang Docker yang akan Anda rekomendasikan kepada pemula untuk dipelajari?

Source: https://habr.com/ru/post/id441574/


All Articles