LoginSignup
9
3

More than 1 year has passed since last update.

AWS EC2内のDockerコンテナからローカルにファイルを持ってくる方法

Posted at

今回はAWS上で展開しているDockerコンテナの中からファイルをローカルに持ってくる方法を説明します。

今回やりたいこと

  • seleniumをheadlessモードで起動しているが、予期せぬエラーに見舞われてしまい現在どのページにいるのか判別できなくなってしまったので、スクリーンショットを撮り開いているページを確認したい。

大まかな手順

① Dockerコンテナ→EC2のディレクトリ
② EC2のディレクトリ→ローカルのディレクトリ

手順の説明

  • まずEC2内のDockerコンテナからEC2にスクリーンショットを持ってきます。
    • スクリーンショットを保存する場所はコンテナ内のvolumesでマウントされているファイルを指定しておきましょう。(docker-compose downしてもスクショが消えないようにするためです。)
    • 次に以下のコマンドでコンテナID を調べます。
    docker container ls -a
    
    • ここで目的のコンテナIDを取得し以下のコマンドでEC2内にコピーします。
    docker cp containerID:/コピー元のファイルパス コピー先のファイルパス
    例:docker cp e471545d21ad:/myapp/tmp/sample.jpg . 
    
  • ここまででEC2内にスクリーンショットを持ってくることができました。
  • 次にEC2からローカルにファイルをコピーします。
    • EC2にアクセスするためのkeyが置いてあるディレクトリに移動し、以下のコマンドを実行します。
    scp -i "example.pem" ec2user@IPaddress:/home/ec2user/sample.jpg ./
    
    • ここでこのコマンドを解説します。
    • scpはssh + cpの略です。
    • ec2user@IPaddress:/home/ec2user/sample.jpgはEC2内のファイルパスです。
    • ./はローカルのコピー先です。
  • 上記のコマンドを実行し、EC2からローカルにファイルをコピーしてくることができました。

まとめ

  • プログラムによってはDockerコンテナ内にファイルが生成されてしまうこともあるかと思うので内容を確認したい際にはぜひ使ってもらえればと思います。
9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3