これはDockerとはあまり関係がなく、基本的なUnixファイルのアクセス許可とは関係がありません。ドッカーのコンテナはroot
として実行されています。つまり、コンテナによって作成されたファイルは、ホスト上のroot
が所有しています。これは、(a)ファイル/ディレクトリがユーザーIDで作成されていることを確認するか、(b)許可されていない場合でもファイルを削除できるようにすることによって、他のファイルアクセス許可の問題を修正する方法で修正します(c)昇格された特権(例えば、sudo rm ...
)を使用してファイルを削除してください。
何をしているかによって、オプション(a)が簡単になることがあります。 root以外のユーザー、例えばとしてcontanierを実行することができた場合:
docker run -u $UID -v $HOME/output:/some/container/path ...
...そしてすべてがちょうどファイルがあなたのユーザーIDを使用して作成されますので、動作します。
コンテナが最初にroot
として実行する必要がある場合、あなたはENTRYPOINT
やCMD
スクリプト内root
アクションの世話をして、メインアプリケーションを実行するために、別のuidに切り替えることができるかもしれません。これを行うには、(環境変数として、例えば)を容器の中に自分のユーザーIDを渡す必要があるでしょうし、後で新しいユーザーIDに切り替えることrunuser
ようなものを使用する:上記のどちらも場合
exec runuser -u $TARGE_UID /some/command
オプションである場合、sudo rm -rf mydirectory
は、インタラクティブコンテナを回転させるだけでなく、同様に機能するはずです。
'-e LOCAL_USER_ID = 'id -u $ USER''が動作するコンテナを実行しますか? – SomethingSomething