"tiada fail atau direktori sedemikian" dengan Imej Gores Docker
Apabila cuba mencipta bekas Docker menggunakan imej gores dan binari tersuai , pengguna mungkin menghadapi ralat berikut: "standard_init_linux.go:207: proses pengguna exec menyebabkan "tiada fail atau direktori sedemikian"". Ralat ini menunjukkan bahawa fail binari tidak boleh ditemui atau dilaksanakan dalam bekas.
Isu ini berpunca daripada penggunaan arahan "FROM scratch" dalam Dockerfile. Imej calar ialah imej minimum yang mengandungi hanya alatan penting, menghasilkan bekas yang ringan dan cekap. Walau bagaimanapun, ini juga bermakna bekas tersebut tidak mempunyai perpustakaan dan kebergantungan tertentu yang mungkin diperlukan untuk perduaan itu dijalankan.
Untuk menyelesaikan isu ini, pengguna boleh memilih salah satu daripada dua pendekatan:
Lumpuhkan CGO: CGO membenarkan program Go antara muka dengan kod C, tetapi ia boleh membawa kepada pemautan dinamik binari dengan perpustakaan sistem. Dengan melumpuhkan CGO, pengguna boleh memastikan binari dipautkan secara statik, menghapuskan pergantungan pada perpustakaan tertentu.
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \ -ldflags="-w -s" -o $PROJ_BIN_PATH ./cmd/...
Salin Perpustakaan: Jika CGO penting untuk binari, pengguna boleh menyalin perpustakaan yang diperlukan secara manual ke dalam imej awal menggunakan arahan "COPY --from". Ini memastikan binari mempunyai akses kepada kebergantungan yang diperlukan pada masa jalan.
COPY --from=build-image /usr/lib/libc.so.6 /usr/lib/libc.so.6
Pendekatan khusus yang dipilih bergantung pada keperluan binari dan tahap pengasingan kontena yang dikehendaki. Dengan menangani isu dengan pemautan dinamik atau ketersediaan pergantungan, pengguna boleh berjaya mencipta dan menjalankan bekas berdasarkan imej awal dengan perduaan tersuai.
Atas ialah kandungan terperinci Mengapa Imej Gores Docker Saya Mengembalikan 'tiada fail atau direktori sedemikian' Apabila Menjalankan Binari Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!