Перейти к основному содержимому

Разница между сохранением и экспортом Docker

· 3 мин. чтения

1. Введение

В экосистеме Docker есть множество инструментов и функций, которые иногда могут сбивать с толку. В этой короткой статье мы рассмотрим разницу между командами сохранения и экспорта Docker .

2. Образы Docker против контейнера

Чтобы понять разницу между этими двумя командами, мы должны сначала понять разницу между образами Docker и контейнерами .

Образ Docker — это файл, содержащий все файлы, необходимые для запуска приложения . Сюда входят все файлы операционной системы, а также код приложения и все необходимые вспомогательные библиотеки.

Контейнер Docker — это запущенный образ Docker . Контейнер — это, по сути, работающее приложение. Контейнеры потребляют ресурсы памяти и ЦП, как обычные процессы, а также могут получать доступ к файловым системам и взаимодействовать с другими контейнерами через сетевые протоколы.

Контейнеры и образы Docker аналогичны классам и объектам Java. Класс Java — это план создания объекта, точно так же, как образ Docker — это план создания контейнера . И точно так же, как один класс может быть реализован в нескольких объектах, образ Docker можно использовать для запуска нескольких контейнеров.

Имея это в виду, мы можем более подробно рассмотреть разницу между командами сохранения и экспорта Docker .

3. сохранить докер

Команда Docker save используется для сохранения образа Docker в tar-файл . Эта команда полезна для перемещения образа Docker из одного реестра в другой или просто для проверки содержимого образа с помощью команды Linux tar .

По умолчанию команда выводит содержимое tar-файла в STDOUT, поэтому типичное использование:

docker save IMAGE > /path/to/file.tar

Обратите внимание, что мы также можем указать файл для печати содержимого, чтобы перенаправление не требовалось:

docker save -o /path/to/file.tar IMAGE

Параметр IMAGE в любом случае может принимать одно из двух значений:

  • Полное имя образа, например «ghcr.io/foreach/my-application:1.2.3».
  • Хэш изображения, сгенерированный Docker, например, «c85146bafb83»

4. экспорт докера

Команда экспорта Docker используется для сохранения контейнера Docker в tar-файл . Сюда входят как файлы изображений, так и любые изменения, внесенные во время работы контейнера.

Синтаксис точно такой же, как у команды сохранения . Как и save , команда экспорта отправляет вывод в STDOUT, поэтому нам нужно перенаправить его в файл:

docker export CONTAINER > /path/to/file.tar

Или мы можем указать имя выходного файла:

docker export -o /path/to/file.tar CONTAINER

В обоих случаях параметр CONTAINER может принимать одно из следующих значений:

  • Имя контейнера, сгенерированное автоматически или указанное при запуске контейнера.
  • Уникальный хэш контейнера, назначенный движком Docker.

5. Отличия

Хотя команды похожи по своей природе, есть некоторые различия, о которых следует знать. Обе команды создают tar-файлы, но включаемая информация различается.

Команда сохранения сохраняет информацию о слое изображения, включая всю историю и метаданные . Это позволяет нам полностью импортировать tar-файл в любой реестр Docker и использовать его для запуска новых контейнеров.

И наоборот, команда экспорта не сохраняет эту информацию . Он содержит те же файлы, что и образ, запустивший контейнер, но без истории и метаданных.

Кроме того, команда экспорта включает изменения, сделанные во время работы контейнера, например новый или измененный файл. Это означает , что разные контейнеры из одного и того же образа могут создавать разные файлы tar при их экспорте .

6. Заключение

В этом руководстве мы рассмотрели различия между командами сохранения и экспорта Docker . Хотя они оба имеют схожий синтаксис и создают файлы tar, они служат двум различным целям . Команда сохранения используется для изображений, а команда экспорта — для контейнеров.