MacでDocker上の共有フォルダが開けない
Failed to open directory "share"
MacでDocker上のUbuntu(Lin4Neuro-jammy)から共有フォルダを開こうとしたら、下のような警告が出て開けませんでした。
結論から言うと、これは共有フォルダ内のファイルの拡張属性によるエラーです。
以下の方法で拡張属性を確認することができます。
1.Macのターミナル上で共有フォルダに移動
2. ls -l@
拡張属性がついている場合には、例えば以下のような表示になります。
ポイントは「-rwxrwxrwx@」の部分です。これはファイルのパーミッションを表しているのですが、最後の@は拡張属性といってOSごとに決められている属性を表しています。具体的な内容はその下のcom.appleから始まるメッセージにあります。これは場合によって異なりますが、上記のメッセージに関するChatGPTの解説の要約は以下の通りでした。
このメッセージは、macOSでファイルに付与されるメタデータに関するものです。
com.apple.quarantine
これはmacOSの「隔離属性」を示しています。インターネットからダウンロードされたファイルや、初めて実行されるアプリケーションに対して、macOSがセキュリティチェックを行うために使用します。
値「23」は、隔離されている理由やステータスに関する情報です。
com.apple.TextEncoding
この属性はファイルのテキストエンコーディング(文字コード)を示しています。たとえば、UTF-8やISO-8859-1などのエンコーディング情報が格納されています。
値「15」は、エンコーディングに関する内部的な参照を表しています。
com.apple.lastuseddate#PS
この属性はファイルが最後に使用された日時を示します。
値「16」は、タイムスタンプや日付に関連する情報です。
要するにこの拡張属性が付いていると、Ubuntu側からは「よくわからないパーミッションがついている! ⇨ 開けない」となってしまうわけです。
拡張属性をまとめて消すにはMacのターミナルから共有フォルダ内で以下のコマンドを実行します。
実行後、再度 ls -l@ で確認してみると
これでDocker上のUbuntuから共有フォルダを開くことができるようになりました。
わかってみると単純なことなのですが、頼みの綱のChat GPT先輩もGoogle先輩も答えをくれず、docker自体のpermission関係のエラーかと思い散々遠回りしてしまいました。
蛇足ですが、テキストファイルに関してはMacのGUIで開くことで拡張属性が付けられます。ターミナルから
でファイルを作成した場合には拡張属性は付きませんでした。
この記事が気に入ったらサポートをしてみませんか?