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 dataHarap 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 mountKerugian 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?
