


Bagaimana untuk menyelesaikan masalah bahawa aliran fail muat naik docker tidak boleh dibaca
Dengan populariti teknologi kontena, Docker telah menjadi platform pilihan untuk pembangunan dan penggunaan banyak aplikasi asli awan. Salah satu senario aplikasi biasa ialah interaksi antara bekas dan sumber luaran, seperti memuat naik dan memuat turun fail, dsb. Tetapi kadangkala apabila menggunakan bekas Docker untuk memuat naik fail, anda mungkin mendapati bahawa aliran fail tidak boleh dibaca. Artikel ini akan meneroka sebab ini berlaku dan cara membetulkannya.
1. Penerangan Masalah
Apabila saya menggunakan bekas Docker untuk memuat naik fail, saya mendapati muat naik berjaya, tetapi terdapat masalah semasa membaca strim fail dan aliran fail adalah kosong. Saya telah mencuba pelbagai kaedah, termasuk menggunakan pembacaan fail tempatan dan pembacaan fail jauh, tetapi tidak dapat menyelesaikannya. Berikut ialah contoh kod saya:
import io from datetime import datetime from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/upload', methods=['POST']) def upload_file(): f = request.files['file'] stream = io.StringIO() stream.write(f.stream.read()) stream.seek(0) print(stream.read()) return jsonify({'success': True}) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000, debug=True)
Apabila menggunakan perintah curl
untuk memuat naik fail, anda boleh melihat bahawa muat naik berjaya, tetapi apabila membaca aliran fail ia kosong:
$ curl -X POST -F "file=@test.txt" http://localhost:5000/upload {"success": true} $ python app.py 2019-12-26 16:10:10,990 - INFO - * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 2019-12-26 16:10:16,930 - INFO -
2. Analisis Masalah
Di dalam bekas, anda boleh menggunakan perintah docker cp
untuk menyalin fail ke bahagian dalam bekas untuk ujian dengan bacaan aliran fail. Jadi masalahnya jelas bukan dengan kod yang membaca aliran fail.
Saya menyemak beberapa maklumat dan mendapati Docker akan menggunakan TempFS sebagai direktori storan sementara untuk fail yang dimuat naik semasa memproses fail yang dimuat naik. Sebab yang mungkin ialah pengasingan sistem fail di dalam bekas menghalang fail yang dimuat naik daripada dibaca.
3. Penyelesaian
Untuk menyelesaikan masalah ini, anda perlu menggunakan mana-mana daripada tiga kaedah:
- Gunakan
--privileged
untuk menjalankan bekas
Dayakan mod istimewa, iaitu gunakan --privileged
untuk menjalankan bekas. Pilihan ini akan memberikan akses akar kontena kepada hos.
$ docker run --privileged -d -p 5000:5000 my-image
- Gunakan pilihan
--tmpfs /path/to/tmpfs:rw
Gunakan --tmpfs
untuk memasang sistem fail sementara bagi memastikan fail yang dimuat naik boleh dibaca dengan betul.
$ docker run -d -p 5000:5000 --tmpfs /tmp:rw my-image
- Lekapkan direktori tempatan secara langsung pada bekas
Lekapkan direktori secara terus dalam sistem fail hos ke laluan tertentu bekas, yang boleh membuat dalam dan luar bekas Semua fail yang dimuat naik boleh dibaca dengan betul.
$ docker run -d -p 5000:5000 -v /path/to/host/drive:/path/to/container/drive my-image
Gunakan mana-mana kaedah di atas dan muat naik ujian sekali lagi Anda boleh melihat bahawa kedua-dua muat naik dan membaca strim fail berjaya:
$ curl -X POST -F "file=@test.txt" http://localhost:5000/upload {"success": true} $ python app.py 2019-12-26 16:55:01,697 - INFO - * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 2019-12-26 16:55:03,428 - INFO - This is a test file.
Ringkasnya, sistem fail Docker. mekanisme pengasingan kadangkala Ini akan menyebabkan fail yang dimuat naik tidak dibaca dengan betul, tetapi terdapat tiga penyelesaian di atas. Saya harap artikel ini dapat membantu anda dengan masalah yang anda hadapi semasa menggunakan aplikasi Docker.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah bahawa aliran fail muat naik docker tidak boleh dibaca. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Perbezaan utama antara Docker dan Kubernet adalah bahawa Docker digunakan untuk kontena, manakala kubernet digunakan untuk orkestra kontena. 1.Docker menyediakan persekitaran yang konsisten untuk membangun, menguji dan menggunakan aplikasi, dan melaksanakan pengasingan dan batasan sumber melalui bekas. 2. Kubernetes menguruskan aplikasi kontena, menyediakan fungsi penempatan, pengembangan dan pengurusan automatik, dan menyokong pengimbangan beban dan penskalaan automatik. Gabungan kedua -duanya dapat meningkatkan penggunaan aplikasi dan kecekapan pengurusan.

Memasang dan mengkonfigurasi Docker pada Linux memerlukan memastikan bahawa sistem adalah versi 64-bit dan kernel 3.10 dan ke atas, gunakan perintah "sudoapt-getupdate" dan pasangkannya dengan perintah "sudoapt-getupdate" dan sahkan dengan "sudoapt-getdate" dan. Docker menggunakan ruang nama dan kumpulan kawalan kernel Linux untuk mencapai pengasingan kontena dan batasan sumber. Imej adalah templat baca sahaja, dan bekas boleh diubahsuai. Contoh penggunaan termasuk menjalankan pelayan Nginx dan membuat imej dengan dockerfiles tersuai. biasa

Alasan untuk menggunakan Docker adalah bahawa ia menyediakan persekitaran yang cekap, mudah alih dan konsisten untuk membungkus, mengedarkan, dan menjalankan aplikasi. 1) Docker adalah platform kontena yang membolehkan pemaju untuk membungkus aplikasi dan kebergantungan mereka ke dalam bekas ringan, mudah alih. 2) Ia berdasarkan teknologi kontena Linux dan sistem fail bersama untuk memastikan permulaan yang cepat dan operasi yang cekap. 3) Docker menyokong pembinaan pelbagai peringkat, mengoptimumkan saiz imej dan kelajuan penempatan. 4) Menggunakan Docker dapat memudahkan proses pembangunan dan penempatan, meningkatkan kecekapan dan memastikan konsistensi di seluruh persekitaran.

Senario aplikasi Docker dalam projek sebenar termasuk memudahkan penggunaan, menguruskan aplikasi multi-kontainer dan pengoptimuman prestasi. 1.Docker memudahkan penggunaan aplikasi, seperti menggunakan DockerFile untuk menggunakan aplikasi Node.js. 2. DockerCompose menguruskan aplikasi multi-kontainer, seperti perkhidmatan web dan pangkalan data dalam seni bina microservice. 3. Pengoptimuman Prestasi menggunakan pembinaan pelbagai peringkat untuk mengurangkan saiz imej dan memantau status kontena melalui pemeriksaan kesihatan.

Pilih Docker dalam persekitaran kecil atau persekitaran pembangunan, dan Kubernet dalam persekitaran projek atau pengeluaran yang besar. 1.Docker sesuai untuk lelaran dan ujian pesat, 2. Kubernetes menyediakan keupayaan orkestra kontena yang kuat, sesuai untuk mengurus dan memperluaskan aplikasi besar.

Docker adalah penting pada Linux kerana Linux adalah platform asalnya yang menyediakan alat yang kaya dan sokongan masyarakat. 1. Pasang Docker: Gunakan sudoapt-getupdate dan sudoapt-getinstalldocker-cedocker-ce-clicotainerd.io. 2. Buat dan Menguruskan Bekas: Gunakan arahan Dockerrun, seperti Dockerrun-D-Namemynginx-P80: 80nginx. 3. Tulis Dockerfile: Mengoptimumkan saiz imej dan gunakan pembinaan pelbagai peringkat. 4. Pengoptimuman dan penyahpepijatan: Gunakan dockerlog dan dockerex

Docker adalah alat kontena, dan Kubernetes adalah alat orkestrasi kontena. 1. Aplikasi pakej Docker dan kebergantungan mereka ke dalam bekas yang boleh dijalankan di mana-mana persekitaran yang dibolehkan Docker. 2. Kubernetes menguruskan bekas ini, melaksanakan penggunaan automatik, skala dan pengurusan, dan membuat aplikasi berjalan dengan cekap.

Tujuan Docker adalah untuk memudahkan penggunaan aplikasi dan memastikan aplikasi berjalan secara konsisten dalam persekitaran yang berbeza melalui teknologi kontena. 1) Docker menyelesaikan masalah perbezaan alam sekitar dengan aplikasi pembungkusan dan kebergantungan ke dalam bekas. 2) Buat imej menggunakan Dockerfile untuk memastikan aplikasi berjalan secara konsisten di mana -mana sahaja. 3) Prinsip kerja Docker adalah berdasarkan imej dan bekas, dan menggunakan ruang nama dan kumpulan kawalan kernel Linux untuk mencapai pengasingan dan pengurusan sumber. 4) Penggunaan asas termasuk menarik dan menjalankan imej dari DockerHub, dan penggunaan lanjutan melibatkan menguruskan aplikasi multi-kontainer menggunakan dockercompose. 5) Kesalahan biasa seperti kegagalan bangunan imej dan kegagalan kontena untuk memulakan, anda boleh debug melalui log dan konfigurasi rangkaian. 6) Pembinaan Pengoptimuman Prestasi


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).
