PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Khối lượng Docker không tồn tại dữ liệu

Có điều gì đó khiến tôi bối rối và tôi không hiểu rõ lắm trong tài liệu chính thức.

Theo hiểu biết của tôi, các tập liên tục có thể được tạo trong ba cách.

  • Tại vùng chứa thời gian gọi bao gồm đường dẫn đầy đủ (-v ~/database:/data ):tạo một thư mục bên ngoài từ máy chủ lưu trữ có sẵn bên trong bộ chứa docker. Cả hai đều có thể sửa đổi nó.
  • Tại vùng chứa thời gian gọi sử dụng tên tập (-v datamysql:/data ):tạo một khối lượng liên tục có sẵn bên trong thùng chứa. Nó được tạo ra nếu nó không tồn tại. Bạn có thể liệt kê chúng theo tên với docker volume ls . Trong nội bộ, nó sẽ được lưu trữ ở một nơi như /var/lib/docker/volumes/ae4445f7c9317a22fe84726fb894c47754f38a7fd150c00fd877024889968750/_data .
  • Tại vùng chứa thời gian xây dựng (VOLUME ["/database/data"] trong Dockerfile). Mọi lệnh gọi của docker run sẽ tạo một ổ mới sẽ tồn tại ngay cả khi bạn xóa vùng chứa. Điều này có thể gây nhầm lẫn vì các lần gọi tiếp theo sẽ dẫn đến khác nhau các tập đang được tạo sẽ không được sử dụng lại.

Bạn có thể liệt kê cả tập đã đặt tên (trường hợp thứ hai) và chưa đặt tên (trường hợp thứ ba) với

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

Bạn có thể xem vị trí chính xác của khối lượng thùng chứa bằng cách sử dụng docker inspect mycontainer

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

Có thể hữu ích khi loại bỏ các khối lượng không sử dụng (đặc biệt đối với trường hợp thứ ba).

$ 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

Vì bạn đã sử dụng VOLUME chỉ thị trong Dockerfile của bạn, bạn đang ở trường hợp thứ ba. Kiểm tra vùng chứa của bạn để tìm tệp và chỉ định dung lượng từ dòng lệnh nếu bạn muốn các phiên lặp lại giữ nguyên dữ liệu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zip tệp thành byte Python 3

  2. pgAdmin 4 phiên bản. 1.5 - không có thông báo lỗi

  3. Lỗi cú pháp trong mã kiểm tra UPSERT

  4. Sao chép một bảng (bao gồm các chỉ mục) trong postgres

  5. GIS:PostGIS / PostgreSQL so với MySql và SQL Server?