docker execするときに「No such file or directory」と言われる
いつも同じとこで詰まっていい加減覚えたいこと。
例えば、dockerで立てたmysqlコンテナのバックアップを実行したい時、
docker exec mysql bash "mysqldump > /var/lib/mysql/mysqldump_database.dump"
を実行すると、
bash: mysqldump > /var/lib/mysql/mysqldump_database.dump: No such file or directory
と怒られます。
解決策
単純に、
docker exec mysql bash -c "mysqldump > /var/lib/mysql/mysqldump_database.dump"
と、-c
オプションをつけることでうまく実行できます。
理由
-c
オプションは引数をstring型と明示して実行させるもので、
どうやら、-c
オプションがないと""で囲まれていてもそれがコマンドだとうまく認識されないようです。