cari
RumahOperasi dan penyelenggaraanDockerBagaimanakah saya menggunakan pelbagai peringkat membina di Docker untuk membuat imej yang lebih kecil dan lebih selamat?

Bagaimanakah saya menggunakan pelbagai peringkat membina di Docker untuk membuat imej yang lebih kecil dan lebih selamat?

Multi-stage dibina di Docker adalah ciri yang membolehkan anda menggunakan pelbagai FROM pernyataan di Dockerfile anda. Setiap FROM pernyataan boleh memulakan tahap baru proses membina, dan anda boleh menyalin artifak dari satu tahap ke tahap yang lain. Kaedah ini amat berguna untuk mewujudkan imej Docker yang lebih kecil dan lebih selamat dengan memisahkan persekitaran membina dari persekitaran runtime.

Berikut adalah cara anda boleh menggunakan pelbagai peringkat untuk mencapai matlamat ini:

  1. Tentukan Peringkat Membina : Mulailah dengan menentukan tahap binaan di mana anda menyusun permohonan anda atau sediakan artifak anda. Sebagai contoh, anda mungkin menggunakan imej golang untuk menyusun aplikasi GO.

     <code class="Dockerfile">FROM golang:1.16 as builder WORKDIR /app COPY . . RUN go build -o myapp</code>
  2. Tentukan Peringkat Runtime : Selepas peringkat membina, tentukan peringkat runtime dengan imej asas yang minimum. Salin hanya artifak yang diperlukan dari peringkat binaan ke peringkat runtime ini.

     <code class="Dockerfile">FROM alpine:3.14 COPY --from=builder /app/myapp /myapp CMD ["/myapp"]</code>

Dengan menggunakan membina pelbagai peringkat, anda berakhir dengan imej akhir yang hanya mengandungi apa yang diperlukan untuk menjalankan aplikasi anda, yang jauh lebih kecil dan mempunyai kelemahan yang lebih sedikit berbanding dengan imej yang digunakan untuk membina.

Apakah amalan terbaik untuk menganjurkan kod dalam membina Docker pelbagai peringkat?

Menguruskan kod dengan berkesan dalam pembentukan Docker pelbagai peringkat dapat meningkatkan kecekapan dan kejelasan fail docker anda. Berikut adalah beberapa amalan terbaik:

  1. Kebimbangan berasingan : Gunakan peringkat yang berbeza untuk tujuan yang berbeza (contohnya, bangunan, ujian, dan penyebaran). Pemisahan kebimbangan ini menjadikan fail docker anda lebih mudah difahami dan dikekalkan.

     <code class="Dockerfile"># Build stage FROM node:14 as builder WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build # Test stage FROM node:14 as tester WORKDIR /app COPY --from=builder /app . RUN npm run test # Runtime stage FROM node:14-alpine WORKDIR /app COPY --from=builder /app/build /app/build CMD ["node", "app/build/index.js"]</code>
  2. Kurangkan bilangan lapisan : Campurkan arahan lari jika mungkin untuk mengurangkan bilangan lapisan dalam imej anda. Amalan ini bukan sahaja mempercepatkan proses membina tetapi juga menjadikan imej yang dihasilkan lebih kecil.

     <code class="Dockerfile">RUN apt-get update && \ apt-get install -y some-package && \ rm -rf /var/lib/apt/lists/*</code>
  3. Gunakan .dockerignore : Buat fail .dockerignore untuk mengecualikan fail yang tidak perlu daripada disalin ke dalam konteks membina Docker. Ini mempercepat proses membina dan mengurangkan saiz imej.
  4. Mengoptimumkan operasi salinan : Hanya salin fail yang diperlukan untuk setiap peringkat. Sebagai contoh, dalam peringkat binaan untuk aplikasi Node.js, anda mungkin menyalin package.json terlebih dahulu, jalankan npm install , dan kemudian menyalin permohonan yang lain.
  5. Gunakan peringkat bernama : Berikan nama yang bermakna ke peringkat anda untuk menjadikan Dockerfile lebih mudah dibaca dan diselenggara.

Bagaimanakah saya dapat mengoptimumkan caching di Docker pelbagai peringkat membina untuk meningkatkan masa binaan?

Mengoptimumkan caching dalam pembentukan Docker pelbagai peringkat boleh mengurangkan masa membina. Berikut adalah beberapa strategi untuk mencapai ini:

  1. Perintah Operasi : Letakkan perintah yang kerap berubah ke arah akhir Dockerfile anda. Docker akan cache lapisan dari permulaan fail Docker, mempercepatkan binaan berikutnya.

     <code class="Dockerfile">FROM node:14 as builder WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build</code>

    Dalam contoh ini, npm install kurang berkemungkinan berubah daripada kod aplikasi, jadi ia diletakkan sebelum COPY . . perintah.

  2. Gunakan Multi-Stage Builds : Setiap peringkat boleh di-cache secara bebas. Ini bermakna anda boleh memanfaatkan cache membina untuk setiap peringkat, berpotensi menjimatkan masa pada binaan berikutnya.
  3. Leverage Buildkit : Docker Buildkit menawarkan mekanisme caching membina yang lebih baik. Dayakan BuildKit dengan menetapkan pembolehubah persekitaran DOCKER_BUILDKIT=1 dan gunakan perintah RUN --mount baru untuk melancarkan direktori cache.

     <code class="Dockerfile"># syntax=docker/dockerfile:experimental FROM golang:1.16 as builder RUN --mount=type=cache,target=/root/.cache/go-build \ go build -o myapp</code>
  4. Kurangkan konteks membina Docker : Gunakan fail .dockerignore untuk mengecualikan fail yang tidak perlu dari konteks binaan. Konteks yang lebih kecil bermakna kurang data untuk memindahkan dan membina lebih cepat.
  5. Gunakan imej asas tertentu : Gunakan imej asas ringan dan stabil untuk mengurangkan masa yang diperlukan untuk menarik lapisan asas semasa membina.

Apakah faedah keselamatan yang dibina oleh Docker Multi-Stage berbanding dengan binaan satu peringkat?

Docker Multi-Stage Membina menyediakan beberapa manfaat keselamatan berbanding dengan satu peringkat membina:

  1. Saiz imej yang lebih kecil : Dengan menyalin hanya artifak yang diperlukan dari peringkat binaan ke peringkat runtime, pelbagai peringkat membina menghasilkan imej akhir yang lebih kecil. Imej yang lebih kecil mempunyai permukaan serangan yang dikurangkan kerana ia mengandungi komponen yang lebih sedikit yang boleh terdedah.
  2. Kerentanan yang dikurangkan : Oleh kerana imej akhir tidak termasuk alat binaan atau kebergantungan yang diperlukan hanya semasa proses membina, terdapat lebih sedikit peluang untuk penyerang untuk mengeksploitasi kelemahan dalam alat tersebut.
  3. Pengasingan Persekitaran Membina dan Runtime : Pembentukan pelbagai peringkat membolehkan anda menggunakan imej asas yang berbeza untuk membina dan menjalankan aplikasi anda. Persekitaran membina boleh menjadi lebih permisif dan termasuk alat yang diperlukan untuk menyusun atau membungkus, sementara persekitaran runtime boleh lebih terhad dan dioptimumkan untuk keselamatan.
  4. Pematuhan yang lebih mudah : Imej yang lebih kecil dan lebih fokus lebih mudah untuk mengimbas kelemahan dan memastikan pematuhan terhadap dasar keselamatan, menjadikannya lebih mudah untuk mengekalkan persekitaran yang selamat.
  5. Mengehadkan Pendedahan Rahsia : Oleh kerana data sensitif (seperti kekunci API yang digunakan semasa binaan) tidak perlu dimasukkan ke dalam imej akhir, membina pelbagai peringkat dapat membantu mencegah rahsia daripada terdedah dalam persekitaran runtime.

Dengan memanfaatkan pelbagai peringkat membina, anda dapat meningkatkan sikap keselamatan imej docker anda sambil juga mengoptimumkan saiz dan prestasi mereka.

Atas ialah kandungan terperinci Bagaimanakah saya menggunakan pelbagai peringkat membina di Docker untuk membuat imej yang lebih kecil dan lebih selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Apa yang dilakukan oleh DockerApa yang dilakukan oleh DockerApr 15, 2025 am 07:00 AM

Docker adalah enjin kontena sumber terbuka untuk membina, menggunakan, dan menjalankan aplikasi. Keupayaannya termasuk: kontena: Aplikasi yang dibungkus dan pengasingan ketergantungan: Aplikasi yang dijalankan di dalam bekas terpencil dari satu sama lain Portabiliti: Bekas boleh dipindahkan pada platform dan persekitaran awan yang berbeza

Docker menggunakan MacvlanDocker menggunakan MacvlanApr 15, 2025 am 06:57 AM

Macvlan di Docker adalah modul kernel Linux yang membolehkan bekas mempunyai alamat MAC mereka sendiri, membolehkan pengasingan rangkaian, peningkatan prestasi dan interaksi langsung dengan rangkaian fizikal. Menggunakan Macvlan memerlukan: 1. Pasang modul kernel; 2. Buat rangkaian macvlan; 3. Menetapkan segmen alamat IP; 4. Tentukan rangkaian macvlan apabila penciptaan kontena; 5. Sahkan sambungan.

Apakah senario aplikasi dockerApakah senario aplikasi dockerApr 15, 2025 am 06:54 AM

Docker sesuai untuk pelbagai senario aplikasi, termasuk: seni bina microservice, CI/CD, pengasingan, pengkomputeran awan, orkestrasi kontena, pengurusan pangkalan data, dan DevOps dan kerjasama pasukan.

Cara Mengkonfigurasi Akses Nama Domain untuk Aplikasi DockerCara Mengkonfigurasi Akses Nama Domain untuk Aplikasi DockerApr 15, 2025 am 06:51 AM

Mengkonfigurasi aplikasi untuk mengakses nama domain tertentu dalam persekitaran Docker memerlukan langkah-langkah berikut: Buat rangkaian yang ditentukan pengguna dan tentukan rangkaian menggunakan pilihan-network. Apabila menjalankan bekas, gunakan pilihan -tambah untuk memetakan pelabuhan bekas permohonan ke port hos. Tambah rekod DNS dalam fail sistem /etc /host sistem tuan rumah untuk menyelesaikan nama domain tersuai ke alamat IP bekas. Anda boleh mengakses aplikasi menggunakan nama domain tersuai.

Docker dimulakan semula menggunakan pelayan GPUDocker dimulakan semula menggunakan pelayan GPUApr 15, 2025 am 06:48 AM

Server mulakan semula semasa menggunakan Docker pada pelayan GPU disebabkan oleh sebab -sebab berikut: Versi Versi Konflik Pemacu Pemacu Peruntukan Memori Penyelesaian: Pastikan versi CUDA sepadan

Lokasi Penyimpanan Log Aplikasi DockerLokasi Penyimpanan Log Aplikasi DockerApr 15, 2025 am 06:45 AM

Log docker biasanya disimpan dalam direktori /var /log bekas. Untuk mengakses fail log secara langsung, anda mesti menggunakan perintah pemeriksaan Docker untuk mendapatkan laluan fail log, dan kemudian gunakan arahan CAT untuk melihatnya. Anda juga boleh menggunakan arahan Log Docker untuk melihat log dan menambah bendera -f untuk terus menerima log. Apabila membuat bekas, anda boleh menggunakan bendera--log-opt untuk menentukan laluan log tersuai. Di samping itu, pembalakan boleh direkodkan menggunakan pemacu log, logagent, atau stdout/stderr.

Apakah perintah permulaan dockerApakah perintah permulaan dockerApr 15, 2025 am 06:42 AM

Perintah untuk memulakan bekas Docker adalah "Docker Start & lt; Nama Container atau ID & Gt;". Perintah ini menentukan nama atau ID bekas yang akan dimulakan dan memulakan bekas yang berada dalam keadaan berhenti.

Apa sebenarnya Docker? Apa itu Docker? Penerangan ringkasApa sebenarnya Docker? Apa itu Docker? Penerangan ringkasApr 15, 2025 am 06:33 AM

Docker adalah mesin maya ringan yang mensimulasikan persekitaran yang diperlukan untuk aplikasi untuk dijalankan, memudahkan proses menjalankan dan menggunakan aplikasi dalam persekitaran yang berbeza. Ia mencapai konsistensi alam sekitar melalui pengasingan sumber dan pengurusan ruang nama, serta pembungkusan aplikasi bebas. Di samping itu, Docker menyediakan fungsi kemas kini imej kontena untuk mencapai peningkatan lancar. Walaupun terdapat batasan, Docker masih memainkan peranan penting dalam seni bina mikroservis, integrasi berterusan dan aplikasi awan-asli melalui pengoptimuman (seperti pembinaan pelbagai peringkat dan pelarasan dasar rangkaian).

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Pelayar Peperiksaan Selamat

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.

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.