状況
Dockerでファイル共有にVirtioFSを使用してコンテナ内でsed -i
を実行したところ以下のようなエラーが出ました。
$ sed -i 's/example/EXAMPLE/' sample.txt
sed: couldn't open temporary file ./sedxxx: Permission denied
対処法
次のようにバインドマウントをしていないディレクトリにファイルをコピーします。
その後そのファイルに対してsed -i
を実行しオリジナルのファイルにその内容をコピーして戻します。
$ cp ./sample.txt /tmp/sample.txt
$ sed -i 's/example/EXAMPLE/' /tmp/sample.txt
$ cp -f /tmp/sample.txt ./sample.txt
または次のように-i
オプションを使用しないようにします。
$ sed 's/example/EXAMPLE/' ./sample.txt > ./sample.txt.tmp
$ mv -f ./sample.txt.tmp ./sample.txt
参考