PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Volume Docker tidak menyimpan data

Ada sesuatu yang membingungkan saya dan bagi saya tidak begitu jelas dalam dokumentasi resmi.

Sepengetahuan saya, volume persisten dapat dibuat dalam tiga cara.

  • Pada penampung waktu pemanggilan termasuk path lengkap ( -v ~/database:/data ):membuat folder eksternal dari Host tersedia di dalam wadah buruh pelabuhan. Keduanya dapat memodifikasinya.
  • Pada penampung waktu pemanggilan menggunakan nama volume ( -v datamysql:/data ):membuat volume yang persisten tersedia di dalam wadah. Itu dibuat jika tidak ada. Anda dapat mencantumkannya berdasarkan nama dengan docker volume ls . Secara internal, itu akan disimpan di tempat seperti /var/lib/docker/volumes/ae4445f7c9317a22fe84726fb894c47754f38a7fd150c00fd877024889968750/_data .
  • Pada penampung waktu pembuatan ( VOLUME ["/database/data"] di Dockerfile). Setiap pemanggilan docker run akan membuat volume baru yang akan bertahan bahkan jika Anda menghapus wadah. Ini dapat membingungkan karena pemanggilan berikutnya akan menghasilkan berbeda volume sedang dibuat yang tidak akan digunakan kembali.

Anda dapat membuat daftar volume yang diberi nama (huruf kedua) dan tidak bernama (huruf ketiga) dengan

$ docker volume ls                                                             
DRIVER              VOLUME NAME                                                             
local               064593b3e65977097d4d0c8402a6c633f1af69be2937bf118678ab8f97ee9a7e               
local               4753ad0437d13e54c76d9c34a30a1843396a1866a0cf9237d500fdcca0d78c5f           
local               8d7a35354f666b2e8a26866a35bbae36bb9601701d4c6b505ab8ce6629f69415               
local               db48eefe8f189b36107ca9c4eebb792690590ab0ba055e7e4e2c9adfd1765b7e                    
local               datamysql

Anda dapat melihat lokasi yang tepat dari volume kontainer dengan menggunakan docker inspect mycontainer

{
                "Type": "volume",
                "Name": "8d7a35354f666b2e8a26866a35bbae36bb9601701d4c6b505ab8ce6629f69415",
                "Source": "/media/USBdrive/docker/volumes/8d7a35354f666b2e8a26866a35bbae36bb9601701d4c6b505ab8ce6629f69415/_data",
                "Destination": "/var/lib/mysql",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            },

Mungkin berguna untuk menghapus volume yang tidak digunakan (khususnya untuk kasus ketiga).

$ docker volume prune
WARNING! This will remove all volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
4753ad0437d13e54c76d9c34a30a1843396a1866a0cf9237d500fdcca0d78c5f

Total reclaimed space: 205MB

Karena Anda menggunakan VOLUME direktif di Dockerfile Anda, Anda berada dalam kasus ketiga. Periksa penampung Anda untuk mencari file, dan tentukan volume dari baris perintah jika Anda ingin sesi berulang untuk mempertahankan data.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menambahkan komentar ke kolom saat saya membuat tabel di PostgreSQL?

  2. Peringkat berdasarkan urutan tanggal

  3. Temukan sumber kueri melalui pgbouncer

  4. Kesalahan Postgres HStore - Operator Tidak Dikenal

  5. x adalah prosedur, gunakan panggilan ketika saya sudah menggunakan panggilan