Docker コンテナ内からホスト側とマウントしたディレクトリ内に書込みができない問題の解決

に公開

問題が起きた時

以下コマンドでコンテナを立ち上げた時に

docker run -it --rm -v "$(pwd)/hoge:/tmp/hoge" sample-image /bin/bash

以下のようにコンテナ内の /tmp/hoge 下にファイルまたはディレクトリを作成しようとすると

touch /tmp/hoge hoge.txt

以下エラーが出る。

touch: cannot touch '/tmp/hoge/hoge.txt': Read-only file system

ls で権限を見る限りはホスト側もコンテナ内も書き込めそうである。

環境について

docker のインストールは Docker Desctop を使用せずに docker cli と lima をインストールした。

インストールの手順については以下を参照。

https://zenn.dev/comapi/scraps/32ec4a38d8171c

解決策

lima のデフォルト設定を変更して解決した。

まず稼働中の lima を止める。

limactl stop default

続いて以下でデフォルトを書き換える。

limactl edit default

書き換える内容は以下。

mounts:
-   - location: "~"
+   - location: "/Users"
+     writable: true
    - location: "/tmp/lima"
      writable: true

そしてリスタート。

limactl start default

Discussion