Как использовать команду docker container export для экспорта файловой системы контейнера

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этой лабораторной работе вы научитесь использовать команду docker container export для экспорта файловой системы Docker-контейнера. Мы начнём с создания и запуска простого контейнера.

После создания контейнера вы изучите различные методы экспорта его файловой системы. Это включает экспорт файловой системы напрямую в стандартный вывод (STDOUT), экспорт в файл с использованием перенаправления вывода в shell и, наконец, экспорт в файл с использованием опции --output команды docker container export.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ImageOperationsGroup -.-> docker/save("Save Image") subgraph Lab Skills docker/run -.-> lab-555109{{"Как использовать команду docker container export для экспорта файловой системы контейнера"}} docker/ls -.-> lab-555109{{"Как использовать команду docker container export для экспорта файловой системы контейнера"}} docker/ps -.-> lab-555109{{"Как использовать команду docker container export для экспорта файловой системы контейнера"}} docker/save -.-> lab-555109{{"Как использовать команду docker container export для экспорта файловой системы контейнера"}} end

Создание и запуск простого контейнера

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

Мы будем использовать команду docker run для создания и запуска контейнера. Основной синтаксис команды: docker run [OPTIONS] IMAGE [COMMAND] [ARG...].

Давайте запустим простой контейнер, используя образ ubuntu и команду echo. Образ ubuntu представляет собой минимальную версию операционной системы Ubuntu.

docker run ubuntu echo "Hello from Docker!"

При первом запуске этой команды Docker сначала проверит наличие образа ubuntu локально. Если образ отсутствует, он будет загружен из Docker Hub (стандартного реестра). Затем будет создан новый контейнер из этого образа, и внутри него выполнится команда echo "Hello from Docker!". После завершения команды контейнер остановится.

В терминале вы должны увидеть вывод Hello from Docker!.

Теперь попробуем запустить контейнер, который продолжит работать. Мы можем использовать опцию -d для запуска контейнера в фоновом режиме (detached mode) и команду tail -f /dev/null, чтобы контейнер оставался активным без значительного потребления ресурсов. Также мы зададим имя контейнера с помощью опции --name, чтобы в дальнейшем можно было легко на него ссылаться.

docker run -d --name my-ubuntu-container ubuntu tail -f /dev/null

Эта команда загрузит образ ubuntu (если он ещё не присутствует локально), создаст контейнер с именем my-ubuntu-container и запустит команду tail -f /dev/null в фоновом режиме. Команда выведет идентификатор контейнера.

Чтобы убедиться, что контейнер работает, можно использовать команду docker ps, которая выводит список запущенных контейнеров.

docker ps

В списке запущенных контейнеров вы должны увидеть my-ubuntu-container.

Экспорт файловой системы контейнера в STDOUT

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

Мы будем использовать команду docker export для экспорта файловой системы. Базовый синтаксис команды: docker export [OPTIONS] CONTAINER.

Давайте экспортируем файловую систему контейнера my-ubuntu-container, созданного на предыдущем шаге. По умолчанию docker export выводит tar-архив в стандартный вывод (STDOUT).

docker export my-ubuntu-container

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

Для лучшего понимания экспортируемых данных мы можем перенаправить вывод в команду, обрабатывающую tar-архивы, например tar. Однако в рамках этого шага мы сосредоточимся только на экспорте в STDOUT.

Команда docker export экспортирует всю файловую систему контейнера, включая все изменения, сделанные после его создания.

Экспорт файловой системы контейнера в файл с использованием перенаправления

На предыдущем шаге мы экспортировали файловую систему контейнера в STDOUT. Хотя это полезно для передачи вывода другим командам, чаще практичнее сохранять экспортированную файловую систему в файл.

Этого можно достичь с помощью перенаправления в shell. Оператор > перенаправляет стандартный вывод команды в файл.

Давайте экспортируем файловую систему контейнера my-ubuntu-container в файл ubuntu-filesystem.tar в текущей директории (~/project).

docker export my-ubuntu-container > ubuntu-filesystem.tar

Эта команда выполнит docker export my-ubuntu-container и перенаправит бинарный вывод (tar-архив) в файл ubuntu-filesystem.tar. В этот раз вы не увидите бинарные данные в терминале.

После завершения команды вы можете проверить создание файла и его размер с помощью команды ls -lh.

ls -lh ubuntu-filesystem.tar

Вы должны увидеть файл ubuntu-filesystem.tar с указанием его размера. Размер будет зависеть от содержимого образа ubuntu.

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

file ubuntu-filesystem.tar

Вывод должен указывать, что файл является tar-архивом, например: ubuntu-filesystem.tar: POSIX tar archive.

Экспорт файловой системы контейнера в файл с использованием опции --output

На предыдущем шаге мы использовали перенаправление в shell (>) для сохранения экспортированной файловой системы контейнера в файл. Docker также предоставляет специальную опцию --output (или -o), которая позволяет напрямую указать выходной файл в команде docker export. Иногда это может быть удобнее, чем использование перенаправления в shell.

Давайте снова экспортируем файловую систему контейнера my-ubuntu-container, на этот раз используя опцию --output, и сохраним её в файл ubuntu-filesystem-output.tar в текущей директории (~/project).

docker export --output ubuntu-filesystem-output.tar my-ubuntu-container

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

После выполнения команды вы можете проверить создание файла и его размер с помощью ls -lh.

ls -lh ubuntu-filesystem-output.tar

Вы должны увидеть файл ubuntu-filesystem-output.tar в списке. Его размер должен быть аналогичен файлу ubuntu-filesystem.tar, созданному на предыдущем шаге.

Также можно использовать команду file для подтверждения, что ubuntu-filesystem-output.tar является tar-архивом.

file ubuntu-filesystem-output.tar

Вывод должен подтвердить, что это действительно tar-архив.

Использование опции --output — это чистый способ указать целевой файл для экспортированной файловой системы.

Итоги

В этой лабораторной работе мы научились создавать и запускать простые Docker-контейнеры. Мы использовали команду docker run для выполнения команд внутри контейнера и для запуска контейнеров в фоновом режиме с указанием имени. Также мы применяли команду docker ps для проверки работы контейнеров.

Затем мы изучили, как экспортировать файловую систему контейнера с помощью команды docker export. Мы узнали, как экспортировать файловую систему в стандартный вывод (STDOUT) и как перенаправить вывод в файл. В завершение мы познакомились с использованием опции --output в команде docker export для прямого указания выходного файла.