Dockerイメージの中のファイルをローカルにダウンロードする

Dockerイメージの中にあるファイルをローカルに落としたい。今回は一時的にコンテナを立ち上げて、そのコンテナからファイルをコピーすることで対応することにした。下記のコマンドはapplication_imageというDockerイメージをrunして中にある/path/to.jarというファイルをローカルの/path/to.jarに保存するという処理を行う。

docker run --rm -itd --name any_name application_image bash -c "bash --rcfile <(echo \"trap 'exit 0' TERM\")"
docker cp any_name:/path/to.jar /path/to.jar
docker kill any_name

私はDockerイメージでENTRYPOINTではなくCMDコマンドしか使わないため今回はこのような処理で、中のイメージの処理をスキップできたが、もしENTRYPOINTで処理を指定している場合は --entrypoint オプションを使用して上書きましょう。

参考