GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Apa Itu Volume Docker, dan Bagaimana Anda Menggunakannya?

Secara default, wadah Docker sepenuhnya tanpa kewarganegaraan. Data yang disimpan di penampung bersifat sementara, dan akan dihapus saat penampung dimatikan. Ini jelas tidak ideal untuk banyak aplikasi, jadi Docker menyediakan beberapa cara untuk menangani keadaan.

Apa Itu Volume?

Cara paling sederhana untuk membuat data Docker persisten adalah bind mount , yang secara harfiah mengikat lokasi di disk host ke lokasi di disk container. Ini mudah dibuat dan digunakan, tetapi sedikit tersendat karena Anda perlu menyiapkan direktori dan mengelolanya sendiri.

Volume seperti hard drive virtual yang dikelola oleh Docker. Docker menangani penyimpanannya di disk (biasanya di /var/lib/docker/volumes/ ), dan memberi mereka nama tunggal yang mudah diingat daripada jalur direktori. Sangat mudah untuk membuat dan menghapusnya menggunakan CLI Docker.

Ini memiliki beberapa manfaat lain selain dikelola oleh Docker. Mereka bekerja pada penampung Linux dan Windows, mereka dapat dibagikan dengan lebih aman di antara beberapa penampung, dan driver volume memungkinkan penyedia cloud menyediakan hosting jarak jauh untuk data pokok. Secara keseluruhan, volume lebih mudah digunakan daripada bind mount, dan direkomendasikan oleh Docker untuk mengelola status.

Tentu saja, Anda harus mempertimbangkan apakah Anda benar-benar membutuhkan data Docker untuk disimpan di server. Untuk banyak aplikasi, menggunakan penyimpanan data jarak jauh eksternal seperti Amazon S3 atau database eksternal sudah cukup untuk menyimpan data yang mereka gunakan tanpa mengikatnya di server frontend.

Bagaimana Anda Menggunakannya?

Anda dapat membuat volume baru dari baris perintah dengan perintah berikut:

docker volume create nginx-config

Dan kemudian, ketika Anda menjalankan wadah Docker Anda, tautkan ke target dalam wadah dengan --mount bendera:

docker run -d 
--name devtest 
--mount source=nginx-config,target=/etc/nginx 
nginx:latest

Jika Anda menjalankan docker inspect <name> , Anda akan melihat volume tercantum di bawah Mounts bagian.

Jika Anda menggunakan Docker Compose, penyiapannya juga mudah. Cukup tambahkan volumes entri untuk setiap layanan kontainer yang Anda miliki, lalu petakan nama volume ke lokasi di tamu. Anda juga harus memberikan daftar volume di volumes tingkat atas kunci Compose untuk penyediaan.

version: "3.0"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - nginx-config:/etc/nginx/
volumes:
  nginx-config:

Ini akan membuat volume secara otomatis untuk Compose ini. Jika Anda ingin menggunakan volume premade dari luar Compose, tentukan external: true dalam konfigurasi volume:

volumes:
  cms-content:
    external: true

Jika Anda hanya ingin melakukan pengikatan dan tidak repot dengan volume, cukup masukkan nama jalur sebagai ganti nama volume, dan jangan tentukan nama volume.

version: "3.0"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - /docker/nginx-config/:/etc/nginx/

Anda dapat membaca dokumentasi lengkap Docker tentang penggunaan volume dengan Compose jika kasus penggunaan Anda memerlukan sesuatu yang lebih spesifik dari ini.

Mentransfer Volume Docker

Volume Docker hanyalah folder yang dibuat secara otomatis dan disimpan di /var/lib/docker/volumes/ , dengan setiap volume disimpan di bawah ./volumename/_data/ . Untuk mencadangkan dan memulihkan, Anda cukup mencadangkan volume ini secara langsung.

Jika Anda lebih suka menggunakan Docker CLI, sayangnya mereka tidak menyediakan cara mudah untuk melakukan ini. Untuk mencadangkan volume penampung, Anda memerlukan nama penampung, serta lokasi pemasangan tempat data disimpan.

Cara melakukannya adalah sedikit peretasan—Anda harus menjalankan perintah di wadah Docker baru, mengikat mount direktori Shell saat ini, memasang volume ke wadah itu, lalu tar direktori menjadi cadangan. Anda akan mendapatkan backup.tar dari volume:

docker run --rm --volumes-from containername -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /mountlocation

Kemudian, dengan cara yang sama, Anda dapat mengekstrak arsip di direktori target:

docker run --rm --volumes-from containername -v $(pwd):/backup ubuntu bash -c "cd /mountlocation && tar xvf /backup/backup.tar --strip 1"

Ini masih lebih baik daripada harus mengetahui lokasi host, jadi Anda dapat mengotomatiskannya jika mau.


Docker
  1. Cara Menginstal dan Menggunakan Docker di Ubuntu 20.04

  2. Cara Menginstal dan Menggunakan Docker Compose di CentOS

  3. Apa itu Mode SELinux dan cara mengaturnya

  1. Log Docker:Apa Itu dan Bagaimana Menggunakannya (dengan Contoh)

  2. Thumbnailer Tambahan Apa Yang Tersedia Dan Bagaimana Cara Memasangnya?

  3. Bagaimana dan Mengapa Menggunakan Host Docker Jarak Jauh

  1. Cara Mengatur dan Menggunakan Registri Docker Pribadi

  2. Apa itu Umask dan Bagaimana Cara Menggunakannya

  3. Volume Docker NFS:Cara Membuat dan Menggunakan