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

Haruskah Anda Menjalankan Database di Docker?

Beban kerja server containerizing semakin populer, dan menjadi semakin umum untuk melihat penerapan server web berjalan dalam container. Bisakah manfaat yang sama diterapkan ke database?

Docker Dapat Menangani Beban Kerja Stateful

Sebaiknya mulai dengan mengajukan pertanyaan lain:C sebuah Anda bahkan menjalankan database di Docker? Secara umum, Docker tidak dirancang untuk layanan stateful. Salah satu nilai jual utama container adalah container dapat dihentikan dan dimulai sesuka hati, biasanya terhubung ke sumber data otoritatif, seperti database, untuk menyimpan statusnya. Semua data dalam penampung bersifat sementara, dan akan hancur saat penampung dihapus.

Ini membuat menjalankan beban kerja stateful sangat menantang, tetapi untungnya Docker memang memiliki beberapa alat untuk menangani status:volume dan pengikatan mount. Ini memungkinkan Anda untuk memasang lokasi di mesin host ke lokasi di wadah, yang akan menyimpan data bahkan saat wadah dimatikan. Dengan cara ini, Anda dapat menjalankan container dalam jangka panjang tanpa khawatir data akan hilang.

Pemasangan volume adalah cara yang lebih disukai untuk menangani sebagian besar skenario. Mereka memungkinkan Anda membuat volume, yang dikelola oleh Docker:

docker volume create my-volume

Kemudian pasang volume itu ke lokasi target di dalam wadah:

docker run --mount source=my-volume,target=/app

Bind mount lebih sederhana. Ini adalah volume yang digunakan di bawah tenda, tetapi memungkinkan Anda untuk mengatur lokasi secara manual di disk host daripada mengelolanya melalui Docker.

docker run ~/nginxlogs:/var/log/nginx

Dalam praktiknya, menggunakan tunggangan ini bisa sedikit lebih rumit. Banyak layanan Docker terkelola, seperti ECS AWS, atau Kubernetes terkelola, tidak memberi Anda akses langsung ke server yang mendasarinya, dan karena itu Anda tidak akan dapat membuat koneksi pengikatan secara langsung. Biasanya ini diselesaikan dengan layanan seperti EFS, yang memungkinkan pemasangan ke wadah ECS, atau dengan penyimpanan data eksternal, seperti database.

TERKAIT: Cara Menginstal Docker dan Docker Compose di Linux

Haruskah Anda Memilih Docker untuk Database Anda?

Docker umumnya tidak bagus untuk menangani status. Beban kerja berbasis Docker biasanya mengalihdayakan masalah ini ke database. Dengan database sebagai solusi untuk masalah tersebut, apakah praktis untuk menempatkan database Anda di Docker?

Sebagian besar, jawabannya adalah "tidak biasanya." Docker telah berkembang jauh sejak awal, dan bukan ide yang buruk atau "salah" untuk menyimpan database lagi. Itu pasti bisa dilakukan, dan memiliki beberapa manfaat untuk itu. Namun, untuk sebagian besar beban kerja umum, manfaatnya tidak lebih besar daripada komplikasinya.

Untuk mengetahui alasannya, mari kita lihat manfaat yang diberikan Docker:

  • Penskalaan mudah:server dapat dibuat dan dihancurkan dengan cepat untuk memenuhi permintaan
  • Perkakas CI/CD yang lebih mudah:pembuatan otomatis itu sepele
  • Kodifikasi infrastruktur Anda:semua pustaka dan penyiapan yang mendasarinya ditangani di Dockerfile

Sebagian besar dari ini tidak benar-benar mentransfer dengan baik ke beban kerja database, yang seringkali merupakan upaya jangka panjang yang mengutamakan integritas data di atas segalanya. Anda biasanya tidak ingin melakukan penskalaan otomatis pada sebagian besar basis data; mereka sendiri biasanya tidak menerima pembaruan kode reguler, dan karena itu tidak mendapat banyak manfaat dari menjalankan dalam wadah. Dan, jika Anda hanya memasang drive penyimpanan lokal, mengapa tidak menjalankannya di luar Docker?

Jika Anda ingin membebaskan diri dari kerumitan pengelolaan database, Docker bukanlah alat untuk pekerjaan itu. Ini hanyalah komplikasi yang tidak perlu untuk beban kerja yang dapat dengan mudah dijalankan pada VPS standar. Anda mungkin akan jauh lebih baik menggunakan database-as-a-service yang terkelola sepenuhnya, seperti RDS AWS. Ini membawa banyak otomatisasi yang baik untuk Docker, tanpa perlu pusing melakukannya sendiri.

Tempat utama di mana Docker dapat berguna untuk beban kerja database adalah di lingkungan pengembangan. Docker memudahkan untuk memutar database baru dengan konfigurasi berbeda, yang membuat pengujian cepat. Namun, dalam produksi, aturannya umumnya lebih ketat.


Docker
  1. Bagaimana Cara Menjalankan Program Di Dalam Wadah Docker?

  2. Haruskah Anda Menjalankan Database di Docker?

  3. Cara Menjalankan Perintah di Running Docker Container

  1. Cara Menjalankan Nginx dalam Wadah Docker:Panduan Langkah demi Langkah

  2. Pengantar Kontainer Docker

  3. Jalankan Docker sebagai pengguna non-root

  1. Cara Menjalankan MySQL Dalam Wadah Docker

  2. Database NoSQL Terdistribusi Elasticsearch – Apa Itu dan Haruskah Anda Menggunakannya?

  3. 10 Perintah Mematikan yang Tidak Boleh Anda Jalankan di Linux