กลายเป็นว่าการดำเนินการที่ใช้เวลานานนั้นเป็นการสำรองข้อมูลหรือในคำศัพท์ของพวกเขาคือสแน็ปช็อต จาก เอกสาร:
สแน็ปช็อตถูกสร้างขึ้นด้วยตนเองด้วยคำสั่งบันทึกสแนปและ
โดยอัตโนมัติเมื่อถอด snap ออก (ต้องใช้ snapd 2.39+) ก
สแนปชอตสามารถใช้เพื่อสำรองสถานะของสแน็ปของคุณ ย้อนกลับสแน็ป
ไปยังสถานะก่อนหน้าและเพื่อคืนค่าการติดตั้ง snapd ใหม่เป็น
สถานะที่บันทึกไว้ก่อนหน้านี้
ฉันตรวจสอบของฉัน งับ
รุ่น:
# snap --version
สแน็ป 2.52.1
สแน็ป 2.52.1
ชุดที่ 16
อูบุนตู 21.04
เคอร์เนล 5.11.0-40-ทั่วไป
จากนั้นดูว่ามีภาพรวมอะไรบ้าง:
# บันทึกสแนปแล้ว
ตั้งค่าหมายเหตุขนาด Rev รุ่นอายุ Snap
1 นักเทียบท่า 2h58m 20.10.8 1125 1.39GB อัตโนมัติ
ตรวจสอบว่าสแนปชอตตกลง:
# snap ตรวจสอบภาพรวม 1
Snapshot #1 ได้รับการยืนยันเรียบร้อยแล้ว
สุดท้าย กู้คืนสแนปชอตอัตโนมัติ:
#สแนปคืนค่า1
คืนค่าภาพรวม #1
ณ จุดนี้ นักเทียบท่า ps -a
ยังคงแสดงให้ฉันเห็นคอนเทนเนอร์ที่ฉันสร้างขึ้นหลังจากการติดตั้งครั้งล่าสุด แทนที่จะเป็นคอนเทนเนอร์ที่ฉันต้องการกู้คืน บางทีถ้าฉันไม่ได้สร้างคอนเทนเนอร์ใหม่ มันก็ใช้ได้ แต่ฉันรู้ว่าอย่างน้อยไฟล์คอนเทนเนอร์ก็ได้รับการกู้คืนแล้ว เพราะฉันสามารถค้นหาได้ภายใต้ /var/snap/docker/common/var-lib-docker/overlay2/
. นี้ดีกว่าไม่มีอะไร ระวังกันด้วย สแนปลบ
!
การกู้คืนคอนเทนเนอร์ดั้งเดิม
ให้ฉันสรุปว่าฉันเข้าสู่สถานะนี้ได้อย่างไร:
- วิ่ง
sudo snap ลบนักเทียบท่า
ซึ่งทำให้ภาชนะสำคัญหมดไป
- วิ่ง
sudo snap ติดตั้งนักเทียบท่า
เพื่อติดตั้งนักเทียบท่าอีกครั้ง
- วิ่ง
นักเทียบท่า-เขียนขึ้น
ที่นำตู้คอนเทนเนอร์ใหม่ขึ้นมาสองตู้
- วิ่ง
สแนปคืนค่า 1
เพื่อกู้คืนสแนปชอตอัตโนมัติ
ณ จุดนี้ฉันสามารถค้นหาไฟล์คอนเทนเนอร์ที่กู้คืนได้ แต่ นักเทียบท่า ps -a
ยังไม่แสดงคอนเทนเนอร์จริง โดยสรุป นี่คือสิ่งที่ฉันทำเพื่อให้ได้คอนเทนเนอร์ทั้งหมดกลับมา:
- ลบคอนเทนเนอร์และอิมเมจที่มองเห็นได้ทั้งหมดหลังจากการติดตั้งครั้งที่สอง เนื่องจากฉันไม่ต้องการมัน
- ลบนักเทียบท่าอีกครั้งด้วย
sudo ลบนักเทียบท่า
และสังเกตว่าสแนปชอตอัตโนมัติเกิดขึ้นอีกครั้ง: "บันทึกข้อมูลของ snap "docker" ในชุด snapshot อัตโนมัติ #2".
- คืนค่าสแนปชอตแรกอีกครั้ง:
สแนปคืนค่า 1
ตอนนี้ถ้าฉันทำ นักเทียบท่า ps -a
ฉันสามารถดูคอนเทนเนอร์ทั้งหมดของฉันอีกครั้งในสถานะหยุดทำงาน! มีปัญหาอย่างหนึ่ง อย่างหนึ่งจะไม่เริ่มทำงาน โดยมีข้อความ: ข้อผิดพลาด: การตอบกลับจาก daemon: การสร้างรันไทม์ OCI ล้มเหลว: มีคอนเทนเนอร์ที่มี id:...
.
เพื่อแก้ไขปัญหานี้ วิธีที่ง่ายที่สุดที่ฉันพบคือ นักเทียบท่ายอมรับ <container-id>
และใช้ภาพที่ได้เพื่อเริ่มต้นเป็นคอนเทนเนอร์ใหม่ หลังจากที่ฉันเห็นว่าไม่เป็นไรฉันก็กำจัดอันที่พัง ทุกอย่างกลับสู่ปกติ!
ยังไงก็ตาม ถือว่าเป็นแนวปฏิบัติที่ดีในการใช้ไดรฟ์ข้อมูลเพื่อคงข้อมูลไว้ในคอนเทนเนอร์ รูปภาพได้อีกด้วย บันทึกไว้ ไปยังไฟล์เก็บถาวร