Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Petunjuk / Saran
Konten ini adalah kutipan dari eBook, .NET Microservices Architecture for Containerized .NET Applications, tersedia di .NET Docs atau sebagai PDF yang dapat diunduh gratis dan dapat dibaca secara offline.
Dalam kebanyakan kasus, Anda dapat menganggap kontainer sebagai instans dari sebuah proses. Proses tidak mempertahankan status persisten. Meskipun kontainer dapat menulis ke penyimpanan lokalnya, dengan asumsi bahwa instans akan ada tanpa batas waktu akan seperti mengasumsikan bahwa satu lokasi dalam memori akan tahan lama. Anda harus berasumsi bahwa gambar kontainer, seperti proses, memiliki beberapa instans atau akhirnya akan dimatikan. Jika dikelola dengan orkestrator kontainer, Anda harus berasumsi bahwa mereka mungkin dipindahkan dari satu node atau VM ke node lain.
Solusi berikut digunakan untuk mengelola data dalam aplikasi Docker:
Dari host Docker, sebagai Docker Volume:
Volume disimpan di area sistem file host yang dikelola oleh Docker.
Pemasangan ikatan dapat memetakan ke folder apa pun di sistem file host, sehingga akses tidak dapat dikontrol dari proses Docker dan dapat menimbulkan risiko keamanan karena kontainer dapat mengakses folder OS yang sensitif.
pemasangan tmpfs seperti folder virtual yang hanya ada di memori host dan tidak pernah ditulis ke sistem file.
Dari Penyimpanan Jarak Jauh:
Azure Storage, yang menyediakan penyimpanan yang dapat didistribusikan secara geografis, memberikan solusi persistensi jangka panjang yang baik untuk kontainer.
Database relasional jarak jauh seperti Azure SQL Database atau NoSQL seperti Azure Cosmos DB, atau layanan cache seperti Redis.
Dari kontainer Docker:
- Sistem File Overlay. Fitur Docker ini mengimplementasikan tugas copy-on-write yang menyimpan informasi yang diperbarui ke sistem file akar kontainer. Informasi itu ada "di atas" dari gambar asli tempat kontainer didasarkan. Jika kontainer dihapus dari sistem, perubahan tersebut akan hilang. Oleh karena itu, meskipun dimungkinkan untuk menyimpan status kontainer dalam penyimpanan lokalnya, merancang sistem di sekitar ini akan bertentangan dengan premis desain kontainer, yang secara default tidak memiliki status.
Namun, sekarang, penggunaan Docker Volume menjadi cara yang disukai untuk menangani data lokal di Docker. Jika Anda memerlukan informasi lebih lanjut tentang penyimpanan dalam kontainer, periksa driver penyimpanan Docker dan Tentang driver penyimpanan.
Berikut ini menyediakan detail selengkapnya tentang opsi ini:
Volume adalah direktori yang dipetakan dari OS host ke direktori dalam kontainer. Ketika kode dalam kontainer memiliki akses ke direktori, akses tersebut sebenarnya ke direktori di OS host. Direktori ini tidak terkait dengan masa pakai kontainer itu sendiri, dan direktori dikelola oleh Docker dan diisolasi dari fungsi inti komputer host. Dengan demikian, volume data dirancang untuk mempertahankan data secara independen dari masa pakai kontainer. Jika Anda menghapus kontainer atau gambar dari host Docker, data yang bertahan dalam volume data tidak dihapus.
Volume dapat diberi nama atau anonim (default). Volume bernama adalah evolusi Kontainer Volume Data dan memudahkan untuk berbagi data antar kontainer. Volume juga mendukung driver volume yang memungkinkan Anda menyimpan data pada host jarak jauh, di antara opsi lainnya.
Pemasangan ikat tersedia sejak lama dan memungkinkan pemetaan folder apa pun ke titik pemasangan dalam kontainer. Pemasangan ikatan memiliki lebih banyak batasan daripada volume dan beberapa masalah keamanan penting, sehingga volume adalah opsi yang direkomendasikan.
pemasangan tmpfs dasarnya adalah folder virtual yang hanya ada di memori host dan tidak pernah ditulis ke sistem file. Mereka cepat dan aman tetapi menggunakan memori dan hanya dimaksudkan untuk data sementara dan tidak persisten.
Seperti yang ditunjukkan pada Gambar 4-5, volume Docker reguler dapat disimpan di luar kontainer itu sendiri tetapi dalam batas fisik server host atau VM. Namun, kontainer Docker tidak dapat mengakses volume dari satu server host atau VM ke server lain. Dengan kata lain, dengan volume ini, tidak mungkin untuk mengelola data yang dibagikan antara kontainer yang berjalan pada host Docker yang berbeda, meskipun dapat dicapai dengan driver volume yang mendukung host jarak jauh.
Gambar 4-5. Volume dan sumber data eksternal untuk aplikasi berbasis kontainer
Volume dapat dibagikan antar kontainer, tetapi hanya di host yang sama, kecuali Anda menggunakan driver jarak jauh yang mendukung host jarak jauh. Selain itu, ketika kontainer Docker dikelola oleh orkestrator, kontainer mungkin "berpindah" di antara host, tergantung pada pengoptimalan yang dilakukan oleh kluster. Oleh karena itu, Anda tidak disarankan menggunakan volume data untuk data bisnis. Tetapi ini adalah mekanisme yang baik untuk bekerja dengan file pelacakan, file temporal, atau serupa yang tidak akan memengaruhi konsistensi data bisnis.
Alat sumber data dan cache jarak jauh seperti Azure SQL Database, Azure Cosmos DB, atau cache jarak jauh seperti Redis dapat digunakan dalam aplikasi dalam kontainer dengan cara yang sama seperti yang digunakan saat mengembangkan tanpa kontainer. Ini adalah cara yang terbukti untuk menyimpan data aplikasi bisnis.
Azure Storage. Data bisnis biasanya perlu ditempatkan di sumber daya atau database eksternal, seperti Azure Storage. Azure Storage, secara konkret, menyediakan layanan berikut di cloud:
Penyimpanan blob menyimpan data objek yang tidak terstruktur. Blob dapat berupa semua jenis teks atau data biner, seperti file dokumen atau media (gambar, audio, dan file video). Penyimpanan blob juga disebut sebagai penyimpanan Objek.
Penyimpanan file menawarkan penyimpanan bersama untuk aplikasi lama dengan menggunakan protokol SMB berstandar industri. Mesin Virtual Azure dan layanan cloud dapat berbagi data file data di seluruh komponen aplikasi melalui share yang dipasang. Aplikasi lokal dapat mengakses data file dalam share melalui REST API layanan File.
Penyimpanan Tabel menyimpan himpunan data terstruktur. Penyimpanan Tabel adalah penyimpanan data atribut kunci NoSQL yang memungkinkan pengembangan dan akses cepat ke data dalam jumlah besar.
Database relasional dan Database NoSQL. Ada banyak pilihan untuk database eksternal, dari database relasional seperti SQL Server, PostgreSQL, Oracle, atau database NoSQL seperti Azure Cosmos DB, MongoDB, dll. Database ini tidak akan dijelaskan sebagai bagian dari panduan ini karena mereka berada dalam subjek yang sama sekali berbeda.