Dengan pembangunan berterusan teknologi awan, orang ramai semakin menggunakan teknologi kontena untuk menggunakan dan menjalankan aplikasi. Sebagai wakil teknologi kontena, Docker telah menjadi salah satu platform kontena paling popular dalam industri. Walau bagaimanapun, apabila menggunakan bekas docker, sesetengah pengguna mungkin menghadapi masalah, iaitu imej tidak boleh disimpan dalam bekas. Artikel ini akan menganalisis punca masalah ini dan memberikan penyelesaian.
1. Analisis Masalah
Apabila menggunakan bekas docker, kita biasanya menghadapi situasi di mana kita perlu menyimpan beberapa fail atau gambar. Jika kita menyimpan maklumat seperti fail, teks atau log, kita boleh menggunakan volum data (Volume) untuk menyimpannya, tetapi untuk fail binari seperti imej, ia mungkin tidak disimpan.
Manifestasi khusus ialah apabila kita menggunakan kod di dalam bekas untuk menyimpan imej, atur cara akan berjalan seperti biasa, tetapi imej tidak disimpan. Apabila kami keluar dari bekas dan kemudian memasuki bekas untuk melihat fail, kami mendapati bahawa gambar yang disimpan telah hilang.
2. Punca masalah
Untuk lebih memahami masalah ini, kita perlu terlebih dahulu memahami sifat bekas docker. Setiap bekas docker adalah persekitaran terpencil dan mempunyai sistem fail bebas. Semua operasi dalam bekas dilakukan pada sistem fail ini, yang bermaksud sistem fail pada hos tidak boleh diakses dari dalam bekas.
Jadi, jika kita menyimpan fail di dalam bekas, fail tersebut akan disimpan ke sistem fail bebas kontena. Walau bagaimanapun, apabila bekas dipadamkan, sistem fail bekas itu juga dipadamkan dan semua data hilang. Ini membawa kepada masalah bahawa fail yang disimpan dalam bekas tidak dapat diteruskan.
3. Penyelesaian
Selepas analisis, kami boleh menghasilkan dua penyelesaian untuk menyelesaikan masalah ini:
Volume data ialah mekanisme yang disediakan oleh docker, yang boleh melekapkan direktori pada hos ke direktori di dalam bekas, dengan itu mencapai tujuan kegigihan data dalam bekas. Kami boleh melekapkan direktori pada hos ke direktori dalam bekas dan menggunakan direktori ini untuk menyimpan imej dalam program. Kaedah ini memastikan bahawa apabila bekas keluar atau dipadamkan, data masih boleh disimpan pada hos.
Berikut ialah contoh:
docker run -d -p 8080:80 --name mywebapp -v /host/path/to/images:/app/images mywebapp:latest
Dalam contoh ini, kami melekapkan direktori /host/path/to/images
pada hos ke direktori /app/images
dalam bekas.
Jika anda tidak mahu menggunakan volum data, atau mesin hos tidak mempunyai ruang yang mencukupi untuk menyimpan semua imej, anda boleh pertimbangkan untuk menggunakan perkhidmatan penyimpanan objek. Perkhidmatan ini membolehkan kami menyimpan sejumlah besar data dalam awan pada harga yang agak rendah. Dalam program ini, kami boleh memuat naik gambar ke storan objek melalui API, dan pada kali seterusnya kami perlu mengaksesnya, kami boleh mendapatkan gambar melalui API. Walaupun kaedah ini agak menyusahkan, ia tidak perlu mempertimbangkan isu seperti had ruang storan hos dan sandaran data.
4. Ringkasan
Apabila menggunakan bekas docker, kami mungkin menghadapi beberapa masalah kegigihan fail. Artikel ini menganalisis sebab menyimpan imej dalam bekas tidak berfungsi dan menyediakan dua penyelesaian. Jumlah data membolehkan kami melekapkan direktori pada hos ke dalam bekas, dengan itu mencapai ketekalan data dalam bekas manakala storan objek membolehkan kami menyimpan data dalam awan, mengelakkan pengehadan ruang storan setempat. Kedua-dua pilihan boleh dilaksanakan, anda hanya perlu memilih mengikut situasi sebenar.
Atas ialah kandungan terperinci Perkara yang perlu dilakukan jika imej tidak boleh disimpan dalam bekas docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!