Введение
В этой лабораторной работе (Lab) вы научитесь использовать команду docker image import для создания образов Docker из различных источников. Вы изучите импорт образов напрямую с удаленного URL, импорт из локального tarball-архива с использованием стандартного ввода, импорт из локального tarball-архива с сообщением о коммите (commit message), а также импорт из локальной директории с новыми конфигурациями.
Благодаря практическим упражнениям вы получите опыт работы с различными опциями команды docker image import и научитесь проверять импортированные образы. Эта лабораторная работа даст вам навыки эффективного создания образов Docker из существующих tarball-архивов или директорий, обеспечивая гибкость в вашем рабочем процессе с Docker.
Импорт образа из удаленного URL
На этом шаге вы узнаете, как импортировать образ Docker напрямую из удаленного URL. Это полезно, когда у вас есть tarball-архив образа, размещенный на веб-сервере, и вы хотите загрузить его в вашу среду Docker без предварительного ручного скачивания.
Сначала воспользуемся командой curl для загрузки тестового tarball-архива образа из удаленного URL. Для демонстрации мы будем использовать общедоступный tarball-архив образа.
curl -o ~/project/alpine.tar https://labex.io/images/alpine.tar
Эта команда загружает tarball-архив образа с указанного URL и сохраняет его как alpine.tar в вашей директории ~/project. Флаг -o указывает имя и расположение выходного файла.
Далее мы используем команду docker image import для импорта этого tarball-архива в вашу среду Docker. Команда import может принимать в качестве ввода URL или путь к файлу. При использовании URL Docker загружает содержимое напрямую и импортирует его.
docker image import https://labex.io/images/alpine.tar
Эта команда импортирует образ из удаленного URL. Docker загрузит tarball-архив и создаст новый образ из его содержимого. По умолчанию импортированный образ не будет иметь репозитория или тега.
Чтобы проверить, что образ был импортирован, вы можете вывести список доступных образов с помощью команды docker images.
docker images
Вы должны увидеть образ с <none> в полях REPOSITORY и TAG, а также недавнее время CREATED. Это только что импортированный образ.
Вы также можете импортировать образ и присвоить ему репозиторий и тег в процессе импорта. Для этого добавьте желаемый репозиторий и тег после URL.
docker image import https://labex.io/images/alpine.tar alpine:latest
Эта команда импортирует тот же образ, но помечает его как alpine:latest.
Теперь снова выведите список образов, чтобы увидеть новый образ с тегом.
docker images
Теперь вы должны увидеть образ с репозиторием alpine и тегом latest.
Импорт образа из локального tarball-архива с использованием STDIN
На предыдущем шаге вы узнали, как импортировать образ Docker из удаленного URL. В этом шаге вы научитесь импортировать образ Docker из локального tarball-файла с использованием стандартного ввода (STDIN). Этот метод полезен, когда у вас есть локальный tarball-архив образа и вы хотите передать его содержимое напрямую в команду docker image import.
Сначала убедитесь, что у вас есть файл alpine.tar в директории ~/project из предыдущего шага. Если его нет, вы можете загрузить его снова с помощью curl:
curl -o ~/project/alpine.tar https://labex.io/images/alpine.tar
Теперь мы используем команду cat для чтения содержимого файла alpine.tar и передадим его в команду docker image import. Аргумент - для docker image import указывает на чтение из STDIN.
cat ~/project/alpine.tar | docker image import -
Эта команда читает файл alpine.tar и передает его содержимое как входные данные команде docker image import. Docker затем импортирует образ из полученных данных. Как и при импорте из URL без указания тега, импортированный образ по умолчанию не будет иметь репозитория или тега.
Чтобы проверить, что образ был импортирован, выведите список доступных образов:
docker images
Вы должны увидеть еще один образ с <none> в полях REPOSITORY и TAG.
Вы также можете указать репозиторий и тег при импорте из STDIN. Синтаксис аналогичен импорту из URL.
cat ~/project/alpine.tar | docker image import - alpine:stdin
Эта команда импортирует образ из STDIN и помечает его как alpine:stdin.
Снова выведите список образов для подтверждения нового тега:
docker images
Теперь вы должны увидеть образ с репозиторием alpine и тегом stdin.
Использование STDIN — это гибкий способ импорта образов, особенно при объединении команд или работе со сжатыми tarball-архивами, когда вы можете распаковать и импортировать образ за один шаг.
Импорт образа из локального tarball-архива с сообщением о коммите
В предыдущих шагах вы импортировали образы из URL и STDIN. В этом шаге вы узнаете, как импортировать образ из локального tarball-файла и добавить сообщение о коммите в процессе импорта. Добавление сообщения о коммите поможет вам документировать происхождение или назначение импортированного образа.
Сначала убедитесь, что у вас есть файл alpine.tar в директории ~/project. Если его нет, загрузите его:
curl -o ~/project/alpine.tar https://labex.io/images/alpine.tar
Теперь мы используем команду docker image import с флагом -m для добавления сообщения о коммите. Мы также укажем путь к локальному файлу в качестве источника.
docker image import -m "Imported alpine base image" ~/project/alpine.tar alpine:commit
В этой команде:
-m "Imported alpine base image"добавляет указанное сообщение о коммите в историю образа~/project/alpine.tar— путь к локальному tarball-файлуalpine:commit— желаемые репозиторий и тег для импортированного образа
После выполнения этой команды Docker импортирует образ из локального tarball-архива и применит сообщение о коммите.
Чтобы проверить импорт и сообщение о коммите, вы можете изучить образ с помощью команды docker image history.
docker image history alpine:commit
Эта команда показывает историю образа alpine:commit. В колонке COMMENT вы должны увидеть запись с сообщением "Imported alpine base image".
Вы также можете вывести список образов для подтверждения нового тега:
docker images
Вы должны увидеть образ с репозиторием alpine и тегом commit.
Добавление сообщений о коммитах — это хорошая практика для отслеживания изменений и происхождения ваших Docker-образов, особенно при импорте из внешних источников.
Импорт образа из локальной директории с новыми конфигурациями
В предыдущих шагах вы импортировали образы из tarball-файлов. В этом шаге вы узнаете, как импортировать образ из локальной директории и применить новые конфигурации в процессе импорта. Это полезно, когда у вас есть снимок файловой системы в директории и вы хотите преобразовать его в Docker-образ с определенными настройками, такими как команда для запуска.
Сначала создадим простую структуру директорий и файл, который будет включен в наш образ.
mkdir ~/project/myimage
echo "Hello, Docker!" > ~/project/myimage/hello.txt
Эта команда создает директорию myimage внутри вашей директории ~/project и файл hello.txt с текстом "Hello, Docker!".
Теперь мы используем команду docker image import для импорта содержимого директории ~/project/myimage. Мы также используем флаг -c для указания изменений конфигурации образа. В данном случае мы установим инструкцию CMD, которая определяет команду по умолчанию для выполнения при запуске контейнера из этого образа.
docker image import -c 'CMD ["/bin/cat", "/hello.txt"]' ~/project/myimage myimage:latest
В этой команде:
-c 'CMD ["/bin/cat", "/hello.txt"]'устанавливает команду по умолчанию для образа как/bin/cat /hello.txt. Флаг-cпозволяет применять инструкции Dockerfile, такие какCMD,ENTRYPOINT,ENV,EXPOSE,LABEL,ONBUILD,STOPSIGNAL,USERиWORKDIR.~/project/myimage— путь к локальной директории с содержимым файловой системыmyimage:latest— желаемые репозиторий и тег для импортированного образа
После выполнения этой команды Docker создаст новый образ на основе содержимого директории ~/project/myimage и применит указанную конфигурацию CMD.
Для проверки импорта и конфигурации выведите список образов:
docker images
Вы должны увидеть образ с репозиторием myimage и тегом latest.
Теперь запустим контейнер из этого образа, чтобы проверить, правильно ли применена инструкция CMD.
docker run myimage:latest
Эта команда запускает контейнер из образа myimage:latest. Поскольку мы установили CMD как /bin/cat /hello.txt, контейнер должен выполнить эту команду и вывести содержимое файла hello.txt, то есть "Hello, Docker!".
Вы должны увидеть "Hello, Docker!" в вашем терминале. Это подтверждает, что содержимое директории было успешно импортировано, а конфигурация CMD применена корректно.
Резюме
В этой лабораторной работе мы изучили, как использовать команду docker image import для создания Docker-образов из различных источников. Мы начали с импорта образа напрямую из удаленного URL, продемонстрировав, как загрузить tarball-архив образа, размещенный в интернете, без ручной загрузки. Для этого мы использовали curl для скачивания тестового tarball-архива, а затем команду docker image import с URL в качестве входа, показав, как выполнить импорт с указанием и без указания репозитория и тега.
Последующие шаги, хотя и не полностью детализированные в предоставленном материале, вероятно, охватывали бы импорт образов из локальных tarball-файлов с использованием STDIN, импорт с сообщением о коммите для лучшего отслеживания, а также импорт из локальной директории с применением новых конфигураций. Эти шаги дополнительно продемонстрировали бы гибкость и различные варианты использования команды docker image import для создания и управления Docker-образами.



