Artikel ini menerangkan cara melaksanakan imej Docker tersuai menggunakan pelbagai peringkat. Ia memperincikan manfaat pendekatan ini, termasuk saiz imej yang dikurangkan, keselamatan yang lebih baik, dan organisasi membina yang lebih baik. Teknik untuk mengoptimumkan saiz imej dan

Bagaimana untuk melaksanakan imej Docker tersuai dengan membina pelbagai peringkat?
Melaksanakan Docker Multi-Stage Membina
Multi-stage membina keupayaan Leverage Docker untuk menentukan pelbagai peringkat dalam satu Dockerfile
tunggal. Setiap peringkat mewakili persekitaran binaan yang berasingan, yang membolehkan anda memisahkan proses membina dari persekitaran runtime akhir. Ini penting untuk meminimumkan saiz imej terakhir anda.
Berikut adalah contoh asas yang menunjukkan pembentukan pelbagai peringkat untuk aplikasi node.js mudah:
<code class="dockerfile"># Stage 1: Build the application FROM node:16-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build # Stage 2: Create the runtime image FROM nginx:alpine COPY --from=builder /app/dist /usr/share/nginx/html</code>
Salin selepas log masuk
Dalam contoh ini:
- Tahap 1 (
builder
): Tahap ini menggunakan imej Node.js untuk membina aplikasi. Semua kebergantungan membina dipasang dan aplikasi dibina dalam tahap ini.
- Tahap 2: Tahap ini menggunakan imej Nginx ringan. Hanya artifak aplikasi yang dibina (
/app/dist
dari peringkat builder
) disalin ke dalam imej akhir. Ini menghapuskan semua alat binaan dan kebergantungan dari imej akhir, menghasilkan saiz yang lebih kecil.
COPY --from=builder
adalah kunci; Ia menyalin artifak dari peringkat sebelumnya ke peringkat semasa. Anda boleh menamakan peringkat anda menggunakan AS <stage_name></stage_name>
.
Ingatlah untuk menyesuaikan laluan dan arahan untuk memadankan aplikasi khusus anda dan membina proses. Untuk aplikasi yang lebih kompleks, anda mungkin memerlukan lebih banyak peringkat untuk memisahkan bahagian -bahagian yang berlainan daripada binaan (contohnya, menyusun kod C dalam satu peringkat, kemudian membina aplikasi Node.js di yang lain).
Apakah faedah menggunakan pelbagai peringkat untuk imej docker tersuai?
Faedah membina pelbagai peringkat
Binaan pelbagai peringkat menawarkan beberapa kelebihan penting:
- Saiz imej yang dikurangkan: Ini adalah manfaat yang paling menarik. Dengan memisahkan alat binaan dan kebergantungan dari persekitaran runtime, anda secara drastik mengurangkan saiz imej akhir, yang membawa kepada muat turun yang lebih cepat, keperluan penyimpanan yang lebih kecil, dan keselamatan yang lebih baik.
- Keselamatan yang lebih baik: Imej yang lebih kecil sememangnya mempunyai permukaan serangan yang lebih kecil. Mengeluarkan fail dan alat yang tidak perlu meminimumkan kelemahan yang berpotensi.
- Reproducibility membina: Multi-stage membina mempromosikan organisasi dan kejelasan yang lebih baik dalam
Dockerfile
anda. Setiap peringkat mempunyai tujuan khusus, menjadikannya lebih mudah untuk memahami, menyelenggara, dan menyahpepijat proses membina.
- Masa membina lebih cepat: Walaupun pembinaan awal mungkin mengambil masa yang lebih lama kerana pelbagai peringkat, binaan seterusnya sering mendapat manfaat daripada caching, yang membawa kepada masa membina keseluruhan yang lebih cepat. Ini kerana Docker boleh cache lapisan perantaraan dari binaan sebelumnya.
- Organisasi yang lebih baik: Pendekatan berstruktur pelbagai peringkat membina meningkatkan organisasi dan mengekalkan dockerfiles anda, terutama untuk aplikasi yang kompleks.
Bagaimanakah saya boleh mengoptimumkan saiz imej docker saya menggunakan pelbagai peringkat membina?
Mengoptimumkan saiz gambar dengan pelbagai peringkat membina
Di luar pendekatan pelbagai peringkat asas, beberapa teknik dapat mengoptimumkan saiz imej anda lagi:
- Pilih imej asas yang minimum: Gunakan imej asas yang paling kecil untuk setiap peringkat. Varian Linux Alpine sering disukai untuk saiznya yang kecil.
- Gunakan
.dockerignore
: Buat fail .dockerignore
untuk mengecualikan fail dan direktori yang tidak perlu daripada disalin ke dalam imej. Ini menghalang fail dan direktori besar dari saiz imej yang tidak perlu.
- Bersihkan fail pertengahan: Dalam setiap peringkat, gunakan arahan seperti
RUN rm -rf /var/lib/apt/lists/*
(untuk imej berasaskan Debian) atau RUN apk del <package></package>
(untuk imej berasaskan alpine) untuk menghapuskan fail yang tidak perlu selepas ia digunakan.
- Kurangkan kebergantungan: Berhati -hati semak semula kebergantungan aplikasi anda dan keluarkan sebarang pakej atau perpustakaan yang tidak digunakan.
- Peringkat untuk langkah -langkah binaan yang berbeza: Bahagikan proses binaan anda ke peringkat logik, masing -masing memberi tumpuan kepada tugas tertentu. Ini membantu mengasingkan kebergantungan dan hanya termasuk fail yang diperlukan dalam imej akhir.
- Gunakan pelbagai peringkat untuk seni bina yang berbeza: Jika anda membina pelbagai arkitek, gunakan pelbagai peringkat untuk membina aplikasi sekali dan kemudian menyalin output ke imej runtime khusus seni bina. Ini mengelakkan membina semula permohonan untuk setiap seni bina.
Apakah amalan terbaik untuk mendapatkan imej Docker tersuai yang dibina dengan pelbagai peringkat?
Mengamankan gambar Docker Multi-Stage
Mengamankan gambar Docker Multi-Stage anda melibatkan beberapa amalan utama:
- Gunakan imej asas yang minimum: Gunakan imej asas terkecil dan paling selamat yang ada. Secara kerap mengemas kini imej asas anda ke kelemahan patch.
- Secara kerap mengemas kini kebergantungan: Pastikan semua kebergantungan anda terkini untuk mengurangkan kelemahan keselamatan yang diketahui.
- Imej Imej untuk Kerentanan: Secara kerap mengimbas imej anda menggunakan alat seperti Clair atau Trivy untuk mengenal pasti kelemahan yang berpotensi.
- Gunakan pengguna bukan akar: Jalankan aplikasi anda sebagai pengguna bukan akar dalam bekas untuk mengehadkan potensi kerosakan dari kompromi.
- Hadkan keistimewaan: Hanya memberikan keistimewaan yang diperlukan untuk permohonan anda dalam bekas. Elakkan menjalankan bekas dengan keistimewaan yang berlebihan.
- Selamatkan proses binaan: Pastikan persekitaran binaan anda selamat dan dockerfiles anda tidak dikompromi.
- Gunakan imej rasmi jika mungkin: Apabila memilih imej asas, mengutamakan imej rasmi dari sumber yang dipercayai.
- Audit Keselamatan Biasa: Melakukan audit keselamatan tetap imej docker anda dan membina proses untuk mengenal pasti dan menangani kelemahan yang berpotensi.
- Prinsip keistimewaan paling rendah: Memohon prinsip keistimewaan paling sedikit sepanjang proses membina dan persekitaran runtime. Hanya termasuk komponen dan kebergantungan yang diperlukan.
Dengan rajin mengikuti amalan ini, anda dapat meningkatkan keselamatan imej Docker pelbagai peringkat anda. Ingat bahawa keselamatan adalah proses yang berterusan, yang memerlukan pemantauan dan kemas kini yang berterusan.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan imej Docker tersuai dengan membina pelbagai peringkat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!