AWSのECSで、「コンテナ内の特定ディレクトリをローカルに落としたい!」という機会があったので書いときます。
- sshをして、
- ssh先にコピーをして、
- ローカルに落とす。
そんな手順でやればできますね。
sshログイン
$ ssh -i <キーのある場所>/<キーの名前> <インスタンスのユーザー名(ec2-userとか)>@<ssh先のパブリックIP or DNS>
セキュリティグループでsshの設定をし忘れてると、Connection timed outになりますね。
dockerからssh先にコピー
ssh先で
$ docker ps
$ pwd
$ docker cp <dockerコンテナ名>:<docker内のコピーしたいディレクトリのパス> <ssh先のコピーファイルを仮置きするパス>
docker cpコマンドはファイルでもディレクトリでもオプションなしで問題ないです。
ssh先からローカルに落としてくるコマンド
ローカル環境で
$ scp -i <キーのある場所>/<キーの名前> -r <ssh先のパブリックIP or DNS>:<ssh先のコピーファイルを仮置きするパス> <ローカルのファイルを置きたいパス>
しょうもないのですが、sshしている中からscpコマンドを叩いて少しハマってました。
ssh: connect to host port 22: Connection timed outが出ていたので、「あれ?sshってそこまで遅いんだっけ?」とか思ってました...