[docker]docker execでコンテナ内のファイルにリダイレクトで入力する方法

docker execでコンテナ上のファイルに入力させてみようと思ってサクっとできなかったのでメモ。

結論

以下のようにすれば良い
 ・/bin/sh -c  で「-c」オプションをつける
 ・-c以降のコマンドはダブルクォーテーション(")で閉じる

 docker container exec -it bct /bin/sh -c "echo hoge > /hoge.txt"

dockerのリファレンスサイトにも記載あり。

COMMAND must be an executable. A chained or a quoted command does not work. For example, docker exec -it my_container sh -c "echo a && echo b" does work, but docker exec -it my_container "echo a && echo b" does not.

https://docs.docker.com/engine/reference/commandline/exec/

経緯

下記でいけるかなー、と思ってうまくいかなかったので・・・。
PCのCドライブ配下としてはんていされちゃってますね。
※Docker Desktop使ってます。

docker container exec -it bct echo hoge > /hoge.txt

out-file : パス 'C:\hoge.txt' へのアクセスが拒否されました。
発生場所 行:1 文字:1
+ docker container exec bct echo hoge > /hoge.txt
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (:) [Out-File], UnauthorizedAccessException
    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand


この記事が気に入ったらサポートをしてみませんか?