Dengan perkembangan pesat pengkomputeran awan dan teknologi kontena, Docker telah menjadi alat penting untuk banyak pembangun dan kakitangan operasi dan penyelenggaraan. Docker mendayakan pembungkusan dan penggunaan aplikasi yang mudah melalui teknologi kontena, sambil juga menyelesaikan kebergantungan persekitaran dan masalah penggunaan.
Dalam Docker, imej boleh dilihat sebagai templat untuk aplikasi dan bekas ialah contoh imej. Seni bina Docker adalah sangat mudah Ia terdiri daripada klien dan proses daemon Proses daemon bertanggungjawab untuk menguruskan kitaran hayat kontena, rangkaian dan storan, dsb.
Apabila menggunakan Docker, kami sering menghadapi pelbagai masalah Artikel ini akan memperkenalkan masalah biasa: ralat dalam bekas Nginx dalam Docker.
Nginx ialah pelayan web berprestasi tinggi dan pelayan proksi terbalik yang digunakan secara meluas. Dalam Docker, kami boleh menggunakan imej Nginx dengan mudah untuk menggunakan aplikasi web. Walau bagaimanapun, dalam beberapa kes, bekas Nginx mungkin menghadapi pelbagai ralat. Seterusnya, kami akan menganalisis dan menyelesaikan masalah ralat kontena Nginx.
Analisis ralat
Apabila menjalankan Nginx dalam bekas Docker, anda mungkin menghadapi ralat berikut:
Apabila Nginx tidak dapat membaca atau menghuraikan fail konfigurasi, bekas gagal dengan mesej ralat. Dalam log kontena, kita dapat melihat mesej berikut:
nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)
Mesej ralat ini menunjukkan bahawa Nginx tidak dapat mencari fail konfigurasi. Ini biasanya disebabkan oleh fail konfigurasi tidak wujud atau mempunyai laluan yang salah. Kita perlu memastikan bahawa laluan fail konfigurasi Nginx di dalam bekas sepadan dengan laluan pada mesin hos.
Secara lalai, Nginx akan mendengar pada port 80, tetapi dalam beberapa kes, port ini mungkin diduduki oleh proses lain. Apabila kita menjalankan bekas Nginx, bekas itu akan gagal dengan mesej ralat. Dalam log kontena, kita boleh melihat mesej berikut:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mesej ralat ini menunjukkan bahawa port 80 sudah diduduki oleh proses lain. Kita perlu memastikan bahawa port 80 tidak diduduki, jika tidak, kita boleh cuba menukar port mendengar Nginx.
Apabila bekas Docker tidak mempunyai kebenaran yang mencukupi, bekas Nginx mungkin gagal dengan mesej ralat. Dalam log bekas, kita boleh melihat mesej berikut:
nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
Mesej ralat ini menunjukkan bahawa bekas Nginx tidak boleh mengakses fail yang diperlukan. Kita perlu memastikan bahawa bekas Docker mempunyai kebenaran yang mencukupi untuk mengakses fail. Kita boleh menukar kebenaran fail menggunakan perintah chmod
.
Penyelesaian
Menurut mesej ralat di atas, kita boleh mendapatkan penyelesaian berikut:
Apabila Nginx Apabila bekas tidak dapat mencari fail konfigurasi, kami perlu memastikan bahawa laluan fail konfigurasi Nginx dalam bekas sepadan dengan laluan pada mesin hos. Kita boleh menggunakan arahan berikut untuk menjalankan bekas Nginx:
docker run -v /path/to/nginx.conf:/etc/nginx/nginx.conf -p 80:80 nginx
Dalam arahan ini, kami melekapkan fail konfigurasi Nginx ke dalam bekas dan memetakan port kontena 80 ke port mesin hos 80. Kami juga boleh menggunakan Docker Compose untuk mengurus berbilang bekas.
Apabila port 80 sudah diduduki oleh proses lain, kita boleh cuba menukar port mendengar Nginx. Kita boleh menjalankan bekas Nginx menggunakan arahan berikut:
docker run -p 8080:80 nginx
Dalam arahan ini, kami memetakan port kontena 80 ke port mesin hos 8080. Lawati http://localhost:8080
dalam penyemak imbas anda untuk mengakses bekas Nginx.
Apabila bekas Docker tidak mempunyai kebenaran yang mencukupi, kami perlu memastikan bahawa bekas Docker mempunyai kebenaran yang mencukupi untuk mengakses fail. Kita boleh menukar kebenaran fail menggunakan perintah chmod
. Sebagai contoh, kita boleh menukar kebenaran fail kepada 777 menggunakan arahan berikut:
chmod 777 /var/run/nginx.pid
Adalah penting untuk ambil perhatian di sini bahawa tidak disyorkan untuk menukar secara langsung kebenaran fail dalam persekitaran pengeluaran . Pendekatan yang lebih baik ialah menukar pemilik fail kepada pengguna di mana proses kontena berada.
Kesimpulan
Dalam Docker, pelaporan ralat kontena Nginx ialah masalah biasa. Kami boleh menyelesaikan isu ini dengan membaca mesej ralat dengan teliti dan mengambil tindakan yang sewajarnya. Apabila menggunakan Docker, kita harus sentiasa berwaspada dan bersedia untuk menyelesaikan masalah.
Atas ialah kandungan terperinci Apa yang perlu dilakukan jika docker nginx melaporkan ralat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!