Jadual Kandungan
Mengapa memilih Jilid Docker?
Contoh Praktikal 1: Bind Mount untuk Muat Naik Fail
Pemuat Naik Imej
Fail Docker
Mencipta dan Menjalankan Bekas dengan Bind Mount
Jilid Dinamakan
Keselamatan: Menyulitkan Jilid
Contoh dengan Docker Compose
Berjalan dengan Docker Compose
Kesimpulan

Jilid Docker

Jan 21, 2025 pm 10:03 PM

Jumlah Docker: Penyelesaian Terbaik untuk Kegigihan Data dalam Bekas

Dalam aplikasi kontena, ketekalan data adalah penting. Bekas Docker, secara lalai, kehilangan semua data apabila dialih keluar. Penyelesaian yang ideal? Jumlah Docker. Ia memastikan kelangsungan data walaupun selepas mengalih keluar atau memulakan semula bekas, menawarkan pengasingan dan kebolehskalaan.


Mengapa memilih Jilid Docker?

  1. Kegigihan: Apabila memautkan volum ke bekas, data berterusan walaupun selepas bekas itu dimusnahkan atau dicipta semula.
  2. Pengasingan: Mengasingkan storan data daripada logik kontena memudahkan penyusunan, penggantian dan kemas kini.
  3. Skalabiliti: Dalam persekitaran berbilang bekas, volum memudahkan perkongsian data.
  4. Pembangunan Dipercepatkan: Bind mounts, khususnya, mereka membenarkan pengeditan fail secara setempat dengan pantulan segera dalam bekas.

Bayangkan bekas itu sebagai kereta sewa – apabila anda menukar kereta, anda kehilangan segala-galanya di dalamnya. Kelantangan ialah beg pakaian peribadi anda, yang menemani anda dalam mana-mana kenderaan (bekas).

Docker Volumes


Contoh Praktikal 1: Bind Mount untuk Muat Naik Fail

Pertimbangkan aplikasi Go yang menerima muat naik fail. Contoh ini menunjukkan cara untuk memastikan muat naik ini berterusan pada komputer setempat, mengelakkan kerugian apabila mengalih keluar bekas.

Pemuat Naik Imej

Contoh ringkas ini mencipta pelayan HTTP untuk memuat naik dan menyimpan fail dalam folder uploads/. Kod lengkap tersedia di GitHub saya. Berikut adalah petikan daripada handler:

func UploadHandler(w http.ResponseWriter, r *http.Request) {
    if r.Method != http.MethodPost {
        writeJSONError(w, http.StatusMethodNotAllowed, "Método não permitido")
        return
    }

    file, header, err := r.FormFile("file")
    if err != nil {
        writeJSONError(w, http.StatusBadRequest, "Erro ao ler arquivo do formulário")
        return
    }
    defer file.Close()

    err = services.SaveUploadedFile(file, header.Filename)
    if err != nil {
        writeJSONError(w, http.StatusInternalServerError, fmt.Sprintf("Erro ao gravar arquivo: %v", err))
        return
    }

    writeJSONSuccess(w, http.StatusOK, "Upload realizado com sucesso!", header.Filename)
}
Salin selepas log masuk
Salin selepas log masuk

Fail Docker

Fail Docker ini menyusun binari dan mengkonfigurasi persekitaran pelaksanaan:

# syntax=docker/dockerfile:1
FROM golang:1.23-alpine AS builder
WORKDIR /app

COPY go.mod ./
RUN go mod download

COPY . .
RUN go build -o server ./cmd/image-uploader

FROM alpine:3.21
WORKDIR /app

COPY --from=builder /app/server /app/server
RUN mkdir -p /app/uploads

EXPOSE 8080
CMD ["/app/server"]
Salin selepas log masuk
Salin selepas log masuk

Mencipta dan Menjalankan Bekas dengan Bind Mount

  1. Bina imej:
docker build -t go-upload-app:latest .
Salin selepas log masuk
  1. Jalankan bekas, memetakan folder uploads/ hos ke bekas:
docker run -d \
  --name meu_container_go \
  -p 8080:8080 \
  -v /caminho/no/host/uploads:/app/uploads \
  go-upload-app:latest
Salin selepas log masuk

Sila ambil perhatian -v /caminho/no/host/uploads:/app/uploads:

  • Kiri: laluan pada hos.
  • Kanan: laluan dalam bekas (/app/uploads).

Fail yang dihantar melalui /upload akan disimpan dalam bekas dan pada hos. Mengalih keluar bekas akan mengekalkan fail pada hos.


Jilid Dinamakan

Untuk meminta Docker mengurus data dalam volum bernama (tanpa bergantung pada folder setempat), berikut ialah contoh dengan PostgreSQL:

docker volume create pg_dados

docker run -d \
  --name meu_postgres \
  -e POSTGRES_PASSWORD=123456 \
  -v pg_dados:/var/lib/postgresql/data \
  postgres:latest
Salin selepas log masuk

pg_dados berterusan tanpa mengira bekas yang menggunakannya.


Keselamatan: Menyulitkan Jilid

Untuk data sensitif, pertimbangkan untuk menyulitkan sistem fail atau menggunakan pemacu volum dengan penyulitan:

  • Simpanan dalam partition yang disulitkan.
  • Penyelesaian storan awan dengan penyulitan dalam keadaan rehat.
  • Pemacu khusus (rexray, portworx) dengan penyulitan terbina dalam.

Data anda adalah dokumen sulit; melindungi mereka dengan penyulitan.


Contoh dengan Docker Compose

Docker Compose memudahkan untuk mengatur pelbagai perkhidmatan. Contoh ini menunjukkan kegigihan data dengan pangkalan data:

func UploadHandler(w http.ResponseWriter, r *http.Request) {
    if r.Method != http.MethodPost {
        writeJSONError(w, http.StatusMethodNotAllowed, "Método não permitido")
        return
    }

    file, header, err := r.FormFile("file")
    if err != nil {
        writeJSONError(w, http.StatusBadRequest, "Erro ao ler arquivo do formulário")
        return
    }
    defer file.Close()

    err = services.SaveUploadedFile(file, header.Filename)
    if err != nil {
        writeJSONError(w, http.StatusInternalServerError, fmt.Sprintf("Erro ao gravar arquivo: %v", err))
        return
    }

    writeJSONSuccess(w, http.StatusOK, "Upload realizado com sucesso!", header.Filename)
}
Salin selepas log masuk
Salin selepas log masuk

Berjalan dengan Docker Compose

Mulakan perkhidmatan: docker compose up -d. Semak status: docker compose ps. Uji muat naik:

# syntax=docker/dockerfile:1
FROM golang:1.23-alpine AS builder
WORKDIR /app

COPY go.mod ./
RUN go mod download

COPY . .
RUN go build -o server ./cmd/image-uploader

FROM alpine:3.21
WORKDIR /app

COPY --from=builder /app/server /app/server
RUN mkdir -p /app/uploads

EXPOSE 8080
CMD ["/app/server"]
Salin selepas log masuk
Salin selepas log masuk

Berhenti dan alih keluar: docker compose down. db_data berterusan.


Kesimpulan

Jumlah docker adalah penting untuk kegigihan data dalam bekas. Bind mounts sesuai untuk pembangunan, manakala volum yang dinamakan disyorkan untuk pengeluaran. Penggunaan yang betul menjamin ketahanan dan organisasi. Cubalah dan kongsi pengalaman anda!

Atas ialah kandungan terperinci Jilid Docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1665
14
Tutorial PHP
1269
29
Tutorial C#
1249
24
Golang vs Python: Prestasi dan Skala Golang vs Python: Prestasi dan Skala Apr 19, 2025 am 12:18 AM

Golang lebih baik daripada Python dari segi prestasi dan skalabiliti. 1) Ciri-ciri jenis kompilasi Golang dan model konkurensi yang cekap menjadikannya berfungsi dengan baik dalam senario konvensional yang tinggi. 2) Python, sebagai bahasa yang ditafsirkan, melaksanakan perlahan -lahan, tetapi dapat mengoptimumkan prestasi melalui alat seperti Cython.

Golang dan C: Konvensyen vs kelajuan mentah Golang dan C: Konvensyen vs kelajuan mentah Apr 21, 2025 am 12:16 AM

Golang lebih baik daripada C dalam kesesuaian, manakala C lebih baik daripada Golang dalam kelajuan mentah. 1) Golang mencapai kesesuaian yang cekap melalui goroutine dan saluran, yang sesuai untuk mengendalikan sejumlah besar tugas serentak. 2) C Melalui pengoptimuman pengkompil dan perpustakaan standard, ia menyediakan prestasi tinggi yang dekat dengan perkakasan, sesuai untuk aplikasi yang memerlukan pengoptimuman yang melampau.

Impak Golang: Kelajuan, Kecekapan, dan Kesederhanaan Impak Golang: Kelajuan, Kecekapan, dan Kesederhanaan Apr 14, 2025 am 12:11 AM

Goimpactsdevelopmentpositivielythroughspeed, efficiency, andsimplicity.1) Speed: goCompilesquicklyandrunsefficiently, idealforlargeproject.2) Kecekapan: ITSComprehensivestandardlibraryraryrarexternaldependencies, enhingdevelyficiency.

Bermula dengan Go: Panduan Pemula Bermula dengan Go: Panduan Pemula Apr 26, 2025 am 12:21 AM

GoisidealforbeginnersandSuekableforcloudandnetworkservicesduetoitssimplicity, kecekapan, danconcurrencyfeatures.1) installgofromtheofficialwebsiteandverifywith'goversion'.2)

Golang vs C: Perbandingan Prestasi dan Kelajuan Golang vs C: Perbandingan Prestasi dan Kelajuan Apr 21, 2025 am 12:13 AM

Golang sesuai untuk pembangunan pesat dan senario serentak, dan C sesuai untuk senario di mana prestasi ekstrem dan kawalan peringkat rendah diperlukan. 1) Golang meningkatkan prestasi melalui pengumpulan sampah dan mekanisme konvensional, dan sesuai untuk pembangunan perkhidmatan web yang tinggi. 2) C mencapai prestasi muktamad melalui pengurusan memori manual dan pengoptimuman pengkompil, dan sesuai untuk pembangunan sistem tertanam.

Golang vs Python: Perbezaan dan Persamaan Utama Golang vs Python: Perbezaan dan Persamaan Utama Apr 17, 2025 am 12:15 AM

Golang dan Python masing -masing mempunyai kelebihan mereka sendiri: Golang sesuai untuk prestasi tinggi dan pengaturcaraan serentak, sementara Python sesuai untuk sains data dan pembangunan web. Golang terkenal dengan model keserasiannya dan prestasi yang cekap, sementara Python terkenal dengan sintaks ringkas dan ekosistem perpustakaan yang kaya.

Golang dan C: Perdagangan dalam prestasi Golang dan C: Perdagangan dalam prestasi Apr 17, 2025 am 12:18 AM

Perbezaan prestasi antara Golang dan C terutamanya ditunjukkan dalam pengurusan ingatan, pengoptimuman kompilasi dan kecekapan runtime. 1) Mekanisme pengumpulan sampah Golang adalah mudah tetapi boleh menjejaskan prestasi, 2) Pengurusan memori manual C dan pengoptimuman pengkompil lebih cekap dalam pengkomputeran rekursif.

C dan Golang: Apabila prestasi sangat penting C dan Golang: Apabila prestasi sangat penting Apr 13, 2025 am 12:11 AM

C lebih sesuai untuk senario di mana kawalan langsung sumber perkakasan dan pengoptimuman prestasi tinggi diperlukan, sementara Golang lebih sesuai untuk senario di mana pembangunan pesat dan pemprosesan konkurensi tinggi diperlukan. Kelebihan 1.C terletak pada ciri-ciri perkakasan dan keupayaan pengoptimuman yang tinggi, yang sesuai untuk keperluan berprestasi tinggi seperti pembangunan permainan. 2. Kelebihan Golang terletak pada sintaks ringkas dan sokongan konvensional semulajadi, yang sesuai untuk pembangunan perkhidmatan konvensional yang tinggi.

See all articles