Docker - イメージからホストにファイルをコピーするにはどうすればいいですか? 質問する

Docker - イメージからホストにファイルをコピーするにはどうすればいいですか? 質問する

私の質問はこの質問コンテナからホストへのファイルのコピーについて。依存関係を取得し、ソースからビルド成果物をコンパイルし、実行可能ファイルを実行する Dockerfile があります。また、ビルド成果物 (私の場合は'../target/`.zipで生成されたもの) もコピーしたいのですsbt distが、この質問は jar やバイナリなどにも当てはまると思います。

docker cpイメージではなくコンテナで動作します。コンテナからファイルを取得するためだけにコンテナを起動する必要がありますか? スクリプトでは、/bin/bashバックグラウンドでインタラクティブ モードで実行し、ファイルをコピーしてからコンテナを強制終了しようとしましたが、これは場違いなようです。もっと良い方法はありますか?

一方、.tar実行後にdocker save $IMAGENAME1 つのファイルを取り出すためだけにファイルを解凍することは避けたいと思います (ただし、これは現時点では最も遅いオプションではありますが、最も簡単なオプションのようです)。

私はdockerボリュームを使用します。例:

docker run -v hostdir:out $IMAGENAME /bin/cp/../blah.zip /out

しかし、私はboot2dockerOSX で実行しており、Mac ホスト ファイルシステムに直接書き込む方法がわかりません (読み取り/書き込みボリュームは boot2docker VM 内にマウントされているため、blah.zipイメージから抽出するスクリプトを他のユーザーと簡単に共有することはできません)。ご意見をお聞かせください。

ベストアンサー1

イメージからファイルをコピーするには、一時的なコンテナを作成し、そこからファイルをコピーして削除します。

id=$(docker create image-name)
docker cp $id:path - > local-tar-file
docker rm -v $id

おすすめ記事