Как сохранить и экспортировать завершенные образы Docker

DockerBeginner
Практиковаться сейчас

Введение

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

Введение в образы Docker

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

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

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

graph TD A[Образ Docker] --> B[Контейнер Docker] B --> C[Запущенное приложение]

Для создания образа Docker можно использовать Dockerfile — текстовый скрипт, определяющий шаги для сборки образа. Dockerfile указывает базовый образ, устанавливает необходимое программное обеспечение, копирует код приложения и настраивает среду выполнения.

FROM ubuntu:22.04
RUN apt-get update && apt-get install -y nginx
COPY index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

После создания образа Docker его можно обмениваться и распространять через реестры Docker, такие как Docker Hub или частные реестры. Это позволяет разработчикам и командам сотрудничать и повторно использовать существующие образы, повышая эффективность и согласованность в различных средах.

Определение и перечисление завершенных образов Docker

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

Для определения и перечисления завершенных образов Docker можно использовать следующие команды Docker:

Перечисление завершенных контейнеров Docker

Вы можете использовать команду docker ps -a, чтобы перечислить все контейнеры Docker, включая те, которые завершили работу. Это предоставит вам идентификатор контейнера, имя образа и статус каждого контейнера.

$ docker ps -a
CONTAINER ID   IMAGE         COMMAND                  CREATED         STATUS                     PORTS     NAMES
a1b2c3d4e5f6   nginx:latest  "nginx -g 'daemon off"   10 minutes ago  Exited (0) 5 minutes ago             my-nginx-container

В приведенном выше примере контейнер my-nginx-container завершил работу.

Перечисление завершенных образов Docker

Чтобы перечислить завершенные образы Docker, вы можете использовать команду docker images с опцией --filter:

$ docker images --filter "dangling=true"
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
<none>       <none>    a1b2c3d4e5f6   10 minutes ago 133MB

Это отобразит все завершенные образы Docker, которые больше не связаны с работающим контейнером.

В качестве альтернативы, вы можете использовать команду docker image ls с опцией --filter, чтобы получить тот же результат:

$ docker image ls --filter "dangling=true"
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
<none>       <none>    a1b2c3d4e5f6   10 minutes ago 133MB

Опция --filter "dangling=true" фильтрует вывод, показывая только завершенные образы Docker, которые в настоящее время не связаны ни с одним работающим контейнером.

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

Сохранение завершенных образов Docker в файл

После определения и перечисления завершенных образов Docker вы можете сохранить их в файл для резервного копирования, распространения или дальнейшего использования. Команда docker save позволяет сохранить один или несколько образов Docker в сжатый архивный файл tar.

Сохранение одного завершенного образа Docker

Чтобы сохранить один завершенный образ Docker в файл, используйте следующую команду:

$ docker save -o my-image.tar <image-name>

Замените <image-name> именем или идентификатором завершенного образа Docker, который вы хотите сохранить.

Например, чтобы сохранить образ nginx:latest в файл с именем my-nginx-image.tar:

$ docker save -o my-nginx-image.tar nginx:latest

Сохранение нескольких завершенных образов Docker

Если у вас есть несколько завершенных образов Docker, которые вы хотите сохранить, вы можете указать список имен или идентификаторов образов, разделенных пробелами:

$ docker save -o my-images.tar <image1-name> <image2-name> <image3-name>

Это позволит сохранить все указанные образы в файл my-images.tar.

Проверка сохранённого образа

Вы можете проверить содержимое сохранённого файла образа, перечислив файлы в архиве tar:

$ tar tf my-image.tar

Это отобразит содержимое файла my-image.tar, показывая слои и метаданные сохранённого образа Docker.

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

Экспорт завершенных контейнеров Docker в архив

Помимо сохранения завершенных образов Docker в файл, вы также можете экспортировать их в сжатый архив, используя команду docker export. Этот процесс создаёт один файл, содержащий полную файловую систему завершенного контейнера, что может быть полезно для совместного использования или восстановления состояния контейнера.

Экспорт одного завершенного контейнера Docker

Чтобы экспортировать один завершенный контейнер Docker в архив, используйте следующую команду:

$ docker export -o my-container.tar <container-id>

Замените <container-id> идентификатором или именем завершенного контейнера Docker, который вы хотите экспортировать.

Например, чтобы экспортировать контейнер my-nginx-container в архивный файл с именем my-nginx-container.tar:

$ docker export -o my-nginx-container.tar my-nginx-container

Экспорт нескольких завершенных контейнеров Docker

Если у вас есть несколько завершенных контейнеров Docker, которые вы хотите экспортировать, вы можете использовать цикл для автоматизации процесса:

$ for container in $(docker ps -a -q --filter "status=exited"); do
    docker export -o "${container}.tar" "$container"
  done

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

Проверка экспортированного архива

Вы можете проверить содержимое экспортированного архивного файла, перечислив файлы в архиве tar:

$ tar tf my-container.tar

Это отобразит содержимое файла my-container.tar, показывая структуру файловой системы экспортированного контейнера Docker.

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

Импорт и загрузка сохранённых образов Docker

После сохранения или экспорта завершенных образов Docker, возможно, потребуется импортировать или загрузить их обратно в вашу среду Docker. Это может быть полезно для восстановления образов, совместного использования с другими или перемещения между различными системами.

Импорт сохранённого образа Docker

Для импорта образа Docker, сохранённого в файле, используйте команду docker load:

$ docker load -i my-image.tar

Это загрузит образ Docker из файла my-image.tar и добавит его в локальный репозиторий образов Docker.

Вы можете проверить импортированный образ, перечислив образы Docker на вашей системе:

$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    a1b2c3d4e5f6   10 minutes ago 133MB

Загрузка архива экспортированного контейнера Docker

Если вы экспортировали контейнер Docker в архивный файл, вы можете загрузить его обратно в вашу среду Docker, используя команду docker import:

$ docker import - my-container:latest < my-container.tar

Это создаст новый образ Docker с именем my-container:latest из содержимого архива my-container.tar.

Затем вы можете использовать этот образ для создания нового контейнера или проверки его содержимого:

$ docker run -d my-container:latest
$ docker inspect my-container:latest

Преимущества импорта и загрузки сохранённых образов

Импорт и загрузка сохранённых образов Docker могут быть полезны по нескольким причинам:

  1. Переносимость: Сохранённые образы легко можно обмениваться и передавать между различными средами Docker, обеспечивая согласованное развертывание на системах разработки, тестирования и производства.
  2. Резервное копирование и восстановление: Сохранённые образы могут использоваться как резервные копии, позволяя восстановить вашу среду Docker до известного состояния при необходимости.
  3. Развертывание офлайн: Сохранённые образы могут использоваться для развертывания приложений в средах с ограниченным или отсутствующим доступом к интернету, так как образ содержит все необходимые компоненты.
  4. Сокращение времени сборки: Загрузка сохранённого образа может быть быстрее, чем перестройка образа с нуля, особенно для сложных или больших приложений.

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

Резюме

В этом руководстве вы узнали, как сохранять и экспортировать завершенные образы Docker. Теперь вы можете идентифицировать и перечислять завершенные образы, сохранять их в файл и импортировать/загружать сохранённые образы. Этот процесс позволяет эффективно управлять вашими образами Docker, гарантируя лёгкий доступ и повторное использование завершенных образов при необходимости. Овладев этими техниками, вы сможете оптимизировать управление образами Docker и повысить общую эффективность ваших приложений, основанных на Docker.