2014-10-24 6 views
1

Когда я запустил docker build ., идентификатор, который выплевывает изображение, является тем, что, как я думал, было посвящено репозиторию докеров. Но когда я запускаю docker commit <id>, он говорит, что он не является допустимым идентификатором контейнера. Я обычно обойду это, запустив изображение в контейнере, а затем зафиксировав этот идентификатор. Но что делать, если контейнеру нужно запустить связанные контейнеры? Запуск контейнера может занять много времени, особенно когда процесс сборки находится в сценарии запуска. Если это не удается или требуется связанный контейнер для успеха, процесс завершится, и мой контейнер отключится, что не позволит мне создать мое новое изображение. Есть ли способ создать ваш файл докеров и одновременно зафиксировать репо? Альтернативы?Докер фиксируется без запуска

ответ

3

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

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

Для решения вопроса в верхней части сообщения, если вы хотите, чтобы дать имя изображения, создаваемого Dockerfile использовать docker tag image-id name

  • Совершение принимает контейнер и формирует изображение
  • пометка принимает изображение и дает ему имя
  • нажатие принимает изображение с именем и делает его доступным для последующего вытягивания.
Смежные вопросы