Мой вопрос связан с этим вопросом о копировании файлов из контейнеров в хосты; У меня есть Dockerfile, который извлекает зависимости, компилирует артефакт сборки из исходного кода и запускает исполняемый файл. Я также хочу скопировать артефакт сборки (в моем случае это .zip
, созданный sbt dist
в '../target/`, но я думаю, что этот вопрос также относится к баночкам, двоичным файлам и т.д.
docker cp
работает с контейнерами, а не с изображениями; мне нужно запустить контейнер, чтобы извлечь из него файл? В script я попытался запустить /bin/bash
в интерактивном режиме в фоновом режиме, скопировав файл, а затем убив контейнер, но это похоже на kludgey. Есть ли лучший способ?
С другой стороны, я хотел бы избежать распаковки файла .tar
после запуска docker save $IMAGENAME
только для того, чтобы получить один файл (но это похоже на самый простой, хотя и самый медленный вариант).
Я бы использовал объемы докеров, например:
docker run -v hostdir:out $IMAGENAME /bin/cp/../blah.zip /out
но я запускаю boot2docker
в OSX, и я не знаю, как напрямую писать в мою файловую систему mac host (объемы чтения и записи монтируются внутри моей загрузочной VMWocker, что означает, что я не могу легко поделиться script извлечь blah.zip
из изображения с другими. Мысли?