Penimbalan Stdout dalam Bekas Docker: Kes Debian lwn. Ubuntu
Apabila melaksanakan kod dalam bekas Docker, penimbalan stdout boleh berlaku dalam sesetengah keadaan tetapi tidak pada yang lain. Isu ini diperhatikan dalam senario di mana stdout dihalakan ke kedua-dua konsol dan fail log menggunakan io.MultiWriter.
Punca Punca: Perbezaan Platform
Akar punca tingkah laku ini terletak pada perbezaan platform antara imej berasaskan Debian dan imej berasaskan Ubuntu. Debian nampaknya menampan stdout secara lalai, manakala Ubuntu mengendalikan stdout secara serentak.
Demonstrasi dengan Dockerfiles
Ini boleh digambarkan menggunakan dua Dockerfiles, satu berdasarkan Debian:wheezy dan yang satu lagi pada Ubuntu:trusty:
# TRUSTY Dockerfile FROM ubuntu:trusty # ... (rest of the Dockerfile as provided in the problem description) # WHEEZY Dockerfile FROM debian:wheezy # ... (rest of the Dockerfile as provided in the problem description)
Menjalankan procwrap dalam bekas berdasarkan imej wheeze menghasilkan stdout buffer, sambil menjalankannya dalam bekas berdasarkan imej yang dipercayai menghasilkan stdout segerak. Walau bagaimanapun, menjalankan procwrap pada VM Debian tanpa Docker tidak mempamerkan penimbalan stdout.
Pilihan Resolusi
Untuk menyelesaikan isu ini, beberapa pendekatan boleh dipertimbangkan:
Akhirnya , penyelesaian terbaik bergantung pada aplikasi tertentu dan persekitaran operasi.
Atas ialah kandungan terperinci Mengapa Stdout Buffering Berbeza Antara Debian dan Ubuntu Docker Containers?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!