Я граю з Докером пару днів, і я вже зробив кілька зображень (що було дійсно весело!). Тепер я хочу наполегливо працювати і прийшов до команд save
і export
команд, але я не повністю їх розумію.
Яка різниця між Докером save
та export
в ньому?
Я граю з Докером пару днів, і я вже зробив кілька зображень (що було дійсно весело!). Тепер я хочу наполегливо працювати і прийшов до команд save
і export
команд, але я не повністю їх розумію.
Яка різниця між Докером save
та export
в ньому?
Відповіді:
Коротка відповідь:
save
отримає зображення: для VM або фізичного сервера, це було б встановлення .ISO-зображення або диска. Базова операційна система.
Він упакуватиме шари та метадані всього ланцюга, необхідних для створення зображення. Потім ви можете завантажити цю ланцюжок "збережених" зображень в інший екземпляр докера та створити контейнери з цих зображень.
export
отримає весь контейнер: як знімок звичайної VM. Зберігає ОС звичайно, але також будь-які внесені вами зміни, будь-який файл даних, записаний протягом життя контейнера. Цей скоріше нагадує традиційне резервне копіювання.
Він надасть вам плоский архів .tar, що містить файлову систему вашого контейнера.
Редагувати: оскільки моє пояснення все ще може призвести до плутанини, я думаю, що важливо розуміти, що одна з цих команд працює з контейнерами, а інша працює із зображеннями.
Зображення повинно розглядатися як «мертвий» або незмінні, починаючи 0 або 1000 контейнерів з нього не буде змінювати один байт. Тому я раніше провів порівняння із системою встановлення ISO. Це, можливо, ще ближче до прямого CD.
Контейнер «чоботи» зображення і додає додатковий шар поверх нього. Цей шар зберігає будь-які зміни на контейнері (створені / змінені / видалені файли ...).
docker commit
). Я можу тоді save
зображення. Або я можу export
безпосередньо контейнер. І обидва способи ( save
зображення та export
контейнер) матимуть однаковий результат?
export
Дасть вам квартиру .tar архів , що містить ваш контейнер файлової системи. save
буде пакувати шари та метадані всього ланцюга, необхідних для створення зображення. Потім ви можете завантажити цей saved
ланцюжок зображень " " в інший екземпляр докера та створити контейнери з цих зображень.
export
функції.
export
всі метадані будуть втрачені, тому у випадку, якщо ви спробуєте запустити контейнер із цим зображенням, ви будете перенаправляти CMD та інші метадані. save
добре працював для мене, але експорт болів
Є дві основні відмінності між командами save
та export
командами.
save
команда зберігає ціле зображення з історією та метаданими, але export
команда експортує лише структуру файлів (без історії та метаданих). Таким чином, експортований файл tar буде меншим, ніж збережений.
При використанні експортованої файлової системи для створення нового образу , то цей новий образ не буде містити будь - яких USER
, EXPOSE
, і RUN
т.д. команди з вашого Dockerfile. Передається лише структура файлів. Отже, коли ви використовуєте згадані ключові слова у своєму Dockerfile, тоді ви не можете використовувати команду експорту для передачі зображення на іншу машину - вам завжди потрібно використовувати команду save.
Експортоване зображення не буде збережено жодного шару чи історії історії, тому воно буде меншим, і ви не зможете відкатати.
Збережене зображення матиме інформацію про рівень та історію, настільки масштабну.
Якщо ви віддаєте це замовнику, Q - ви хочете зберегти ці шари чи ні?
Технічно збереження / завантаження працює з сховищами, які можуть бути одним або декількома зображеннями, які також називаються шарами. Зображення - це один шар у межах репо. Нарешті, контейнер - це миттєве зображення (працює чи ні).
Docker save Зберігає файл tar-репо, який містить усі батьківські шари та всі теги + версії або вказаний тег repo: для кожного аргументу, наданого із зображення .
Експорт Docker Випускає вказаний файл (може бути дьоготь або tgz) з плоским вмістом без вмісту вказаних томів з контейнера .
Докер зберегти потрібно використовувати на зображенні докера під час експорту докера потрібно використовувати на контейнері (як і запущене зображення)
Зберегти використання
зберегти докер [OPTIONS] IMAGE [IMAGE ...]
Збережіть зображення (файли) в архіві смоли (передається в STDOUT за замовчуванням)
--help = помилкове використання друку -o, --output = "" Запишіть у файл замість STDOUT
Використання експорту
експорт докера [ВАРІАНТИ] КОНТЕЙНЕР
Експортуйте вміст файлової системи контейнера у вигляді архіву tar
--help = помилкове використання друку -o, --output = "" Запишіть у файл замість STDOUT
export
: container (filesystem)
-> image tar
.
import
: exported image tar
-> image
. Лише один шар.
save
: image
-> image tar
.
load
: saved image tar
-> image
. Усі шари будуть відновлені.
Від Докера в дії, друге видання p190.
Пошарові зображення підтримують історію зображення, метадані створення контейнерів та старі файли, які, можливо, були видалені або переоформлені.
Згладжені зображення містять лише поточний набір файлів у файловій системі.