Импорт образа из локальной директории с новыми конфигурациями
В предыдущих шагах вы импортировали образы из 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
применена корректно.