Moje pytanie dotyczy tego pytania o kopiowanie plików z kontenerów na hosty; Mam plik Dockerfile, który pobiera zależności, kompiluje artefakt kompilacji ze źródła i uruchamia plik wykonywalny. Chcę również skopiować artefakt kompilacji (w moim przypadku jest to .zip
wyprodukowany przez sbt dist
'../ target / `, ale myślę, że to pytanie dotyczy również słoików, plików binarnych itp.
docker cp
działa na kontenerach, a nie na obrazach; czy muszę uruchomić kontener tylko po to, aby pobrać z niego plik? W skrypcie próbowałem uruchomić /bin/bash
w tle w trybie interaktywnym, kopiując plik, a następnie zabijając kontener, ale wydaje się to niezdarne. Czy jest lepszy sposób?
Z drugiej strony chciałbym uniknąć rozpakowywania .tar
pliku po uruchomieniu docker save $IMAGENAME
tylko po to, aby wyjąć jeden plik (ale wydaje się to obecnie najprostszą, jeśli najwolniejszą opcją).
Użyłbym woluminów dockera, np .:
docker run -v hostdir:out $IMAGENAME /bin/cp/../blah.zip /out
ale pracuję boot2docker
w systemie OSX i nie wiem, jak bezpośrednio pisać do systemu plików hosta Mac (woluminy do odczytu i zapisu są montowane w mojej maszynie wirtualnej boot2docker, co oznacza, że nie mogę łatwo udostępnić skryptu do wyodrębnienia blah.zip
z obrazu inni.
create
dodano / usunięto z polecenia (nie ma go w wersji 1.01)