Score:0

วิธีคืนค่าคอนเทนเนอร์นักเทียบท่าหลังจาก snap ลบนักเทียบท่า

ธง pt

ฉันลบนักเทียบท่าด้วย sudo snap ลบนักเทียบท่า. ฉันไม่ต้องการลบมันจริง ๆ แค่ตรวจสอบว่าฉันได้ติดตั้งด้วยหรือไม่ ตะครุบเชื่อมั่นว่าสิ่งนั้นจะเตือนใจฉัน (y/n) ชอบ ฉลาด ทำ. แต่มันก็ไปข้างหน้าและลบนักเทียบท่า ละเอียด.มันรวดเร็วในการติดตั้งใหม่อีกครั้ง

แต่ภาชนะของฉันอยู่ที่ไหน! รูปภาพและคอนเทนเนอร์ทั้งหมด (นักเทียบท่า ps -a) หายไป! ใช้เวลานานในการถอนการติดตั้ง ดังนั้นฉันจึงสงสัยว่ามีการสำรองข้อมูลบางส่วนหรือไฟล์ยังคงถูกเก็บไว้และคอนเทนเนอร์สามารถกู้คืนได้หรือไม่ อย่าไปสนใจแค่รูปภาพ คอนเทนเนอร์ ขอบคุณ.

ตรวจสอบแล้ว /var/snap/docker/common/var-lib-docker/containers แต่ภาชนะเดิมไม่มี

Score:1
ธง pt

กลายเป็นว่าการดำเนินการที่ใช้เวลานานนั้นเป็นการสำรองข้อมูลหรือในคำศัพท์ของพวกเขาคือสแน็ปช็อต จาก เอกสาร:

สแน็ปช็อตถูกสร้างขึ้นด้วยตนเองด้วยคำสั่งบันทึกสแนปและ โดยอัตโนมัติเมื่อถอด 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> และใช้ภาพที่ได้เพื่อเริ่มต้นเป็นคอนเทนเนอร์ใหม่ หลังจากที่ฉันเห็นว่าไม่เป็นไรฉันก็กำจัดอันที่พัง ทุกอย่างกลับสู่ปกติ!

ยังไงก็ตาม ถือว่าเป็นแนวปฏิบัติที่ดีในการใช้ไดรฟ์ข้อมูลเพื่อคงข้อมูลไว้ในคอนเทนเนอร์ รูปภาพได้อีกด้วย บันทึกไว้ ไปยังไฟล์เก็บถาวร

user535733 avatar
cn flag
คำตอบที่ดีฉันได้เรียนรู้บางอย่าง! ขอบคุณที่ทำให้เราผ่านมันไปได้
Nagev avatar
pt flag
ขอบคุณ ตอนนี้จัดการเพื่อให้มองเห็นคอนเทนเนอร์ได้ด้วยการล้างข้อมูลและติดตั้งนักเทียบท่าใหม่ พวกเขาแสดงด้วย `docker ps -a` แต่ไม่สามารถเริ่มต้นได้: `การตอบกลับข้อผิดพลาดจาก daemon: OCI รันไทม์สร้างล้มเหลว: มีคอนเทนเนอร์ที่มี id อยู่:...` จะดูว่าฉันสามารถแก้ไขข้อขัดแย้งและทำให้พวกเขาทำงานได้หรือไม่ ตามปกติอีกครั้ง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา