Hóa ra hoạt động mất nhiều thời gian thực sự là một bản sao lưu, hay theo thuật ngữ của họ, một ảnh chụp nhanh. Từ tài liệu:
Ảnh chụp nhanh được tạo thủ công bằng lệnh lưu nhanh và
tự động khi xóa snap (yêu cầu snapd 2.39 trở lên). Một
ảnh chụp nhanh có thể được sử dụng để sao lưu trạng thái ảnh chụp nhanh của bạn, hoàn nguyên ảnh chụp nhanh
về trạng thái trước đó và để khôi phục cài đặt snapd mới về trạng thái
trạng thái đã lưu trước đó.
tôi đã kiểm tra của tôi búng tay
phiên bản:
# snap --version
chụp nhanh 2.52.1
bắt nhanh 2.52.1
sê-ri 16
Ubuntu 21.04
hạt nhân 5.11.0-40-chung
Sau đó, xem những ảnh chụp nhanh nào có sẵn:
# đã lưu ảnh chụp nhanh
Đặt Snap Age Phiên bản Rev Size Ghi chú
1 docker 2h58m 20.10.8 1125 1.39GB tự động
Đã kiểm tra xem ảnh chụp nhanh đó có ổn không:
# kiểm tra nhanh-ảnh chụp nhanh 1
Ảnh chụp nhanh số 1 đã được xác minh thành công.
Cuối cùng, đã khôi phục ảnh chụp nhanh tự động:
# chụp khôi phục 1
Đã khôi phục ảnh chụp #1.
Tại thời điểm này docker ps -a
vẫn hiển thị cho tôi các vùng chứa mà tôi đã tạo sau lần cài đặt mới nhất, thay vì các vùng chứa mà tôi muốn khôi phục. Có lẽ nếu tôi không tạo các thùng chứa mới, nó sẽ hoạt động. Nhưng tôi biết rằng ít nhất các tệp vùng chứa đã được khôi phục, vì tôi có thể tìm thấy chúng bên dưới /var/snap/docker/common/var-lib-docker/overlay2/
. Điều này tốt hơn là không có gì. Cẩn thận với loại bỏ nhanh chóng
!
Khôi phục vùng chứa ban đầu
Hãy để tôi tóm tắt lại cách tôi rơi vào trạng thái này:
- đã chạy
sudo snap loại bỏ docker
đã quét sạch các thùng chứa quan trọng
- đã chạy
sudo snap cài đặt docker
để cài đặt lại docker
- đã chạy
soạn thảo docker
đã mang đến hai container mới
- đã chạy
khôi phục nhanh 1
để khôi phục ảnh chụp nhanh tự động
Tại thời điểm này, tôi đã có thể tìm thấy các tệp vùng chứa đã khôi phục, nhưng docker ps -a
vẫn không hiển thị các thùng chứa thực tế. Tóm lại, đây là những gì tôi đã làm để lấy lại các thùng chứa đầy đủ:
- đã xóa tất cả các vùng chứa và hình ảnh có thể nhìn thấy sau lần cài đặt thứ hai vì tôi không cần chúng
- loại bỏ docker một lần nữa với
sudo loại bỏ docker
và nhận thấy ảnh chụp tự động diễn ra một lần nữa: "Lưu dữ liệu snap "docker" trong bộ snapshot tự động #2".
- đã khôi phục ảnh chụp nhanh đầu tiên một lần nữa:
khôi phục nhanh 1
Bây giờ nếu tôi làm docker ps -a
Tôi có thể thấy lại tất cả các vùng chứa của mình, ở trạng thái dừng! Tuy nhiên, có một vấn đề, một trong số chúng sẽ không bắt đầu với thông báo: Lỗi: phản hồi từ daemon: Tạo thời gian chạy OCI không thành công: vùng chứa có id tồn tại:...
.
Để giải quyết vấn đề này, cách đơn giản nhất tôi tìm thấy là docker cam kết <container-id>
và sử dụng hình ảnh thu được để khởi động nó dưới dạng vùng chứa mới. Sau khi tôi thấy nó ổn, tôi đã loại bỏ cái bị hỏng. Tất cả trở lại bình thường!
Nhân tiện, việc sử dụng ổ đĩa để duy trì dữ liệu trong vùng chứa được coi là một phương pháp hay. Hình ảnh cũng có thể được đã lưu đến một kho lưu trữ.