8 Контейнер Snapshots
У цій главі ви повинні запускати команди як непривілейований користувач ("incusadmin", якщо ви стежите за ними з початку цієї книги).
Знімки контейнера та сервер знімків (докладніше про це пізніше) є, мабуть, найважливішим аспектом роботи робочого сервера Incus. Снепшоти забезпечують швидке відновлення. Використовувати їх як захист від збоїв під час оновлення основного програмного забезпечення, яке працює на конкретному контейнері, є хорошою ідеєю. Якщо під час оновлення щось трапиться, що призведе до поломки програми, ви відновите знімок і повернетесь у роботу лише з кількома секундами простою.
Автор використовував контейнери Incus для публічних серверів PowerDNS, і оновлення цих програм стало менш проблематичним завдяки створенню знімків перед кожним оновленням.
Ви навіть можете зробити снепшот контейнера під час його роботи.
Процес снепшот¶
Ми почнемо з отримання снепшот контейнера ubuntu-test за допомогою цієї команди:
incus snapshot create ubuntu-test ubuntu-test-1
Тут ви називаєте знімок "ubuntu-test-1", але ви можете називати його як завгодно. Щоб переконатися, що у вас є знімок, виконайте incus info
контейнера:
incus info ubuntu-test
Ви вже дивилися на інформаційний екран. Якщо прокрутити вниз, ви побачите:
Snapshots:
ubuntu-test-1 (taken at 2021/04/29 15:57 UTC) (stateless)
Успішно! Наш снепшот на місці.
Тепер перейдіть до контейнера ubuntu-test:
incus shell ubuntu-test
Створіть порожній файл за допомогою команди touch:
touch this_file.txt
Тепер вийдіть з контейнера.
Перш ніж відновити контейнер, яким він був до створення файлу, найбезпечніший спосіб відновити контейнер, головним чином якщо було багато змін, це спочатку зупинити його:
incus stop ubuntu-test
Потім відновіть його:
incus snapshot restore ubuntu-test ubuntu-test-1
Потім знову запустіть контейнер:
incus start ubuntu-test
Якщо ви знову повернетеся до контейнера й подивіться, створений вами файл "this_file.txt" зник.
Якщо знімок більше не потрібен, його можна видалити:
incus snapshot delete ubuntu-test ubuntu-test-1
Важливо
Ви повинні остаточно видалити знімки, коли контейнер працює. Чому? Ну, команда _incus delete_ також працює для видалення всього контейнера. Якщо ми випадково натиснемо Enter після "ubuntu-test" у команді вище, І якщо контейнер буде зупинено, контейнер буде видалено. Попередження не дається. Він просто виконує те, що ви просите.
If the container is running, however, you will get this message:
```
Error: The instance is currently running, stop it first or pass --force
```
Отже, назавжди видаліть знімки, поки контейнер працює.
У наступних розділах ви:
- налаштуєте процес автоматичного створення snapshots
- налаштуєте термін дії знімка, щоб він зникав через певний проміжок часу
- налаштуєте автоматичне оновлення знімків на сервері знімків
Author: Steven Spencer
Contributors: Ezequiel Bruni, Ganna Zhyrnova