0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rancher Desktop(Windows)でVolumeマウントできないときの対処法 〜COMPOSE_CONVERT_WINDOWS_PATHSが原因だった〜

Posted at

結論

OSの環境変数からCOMPOSE_CONVERT_WINDOWS_PATHSを削除することで、Volumeマウントが正常に機能するようになります。

発生した問題

これまで Docker Desktop を利用してコンテナ開発を行っていましたが、Rancher Desktop への切り替えを実施しました。Docker Desktop のアンインストールと Rancher Desktop のインストールは問題なく完了しましたが、フロントエンド開発用コンテナを起動した際、ホスト側ディレクトリがコンテナにマウントされないという事象が発生しました。

docker-compose.yml は以下の通りです。

services:
  app:
    build:
      context: ./build/frontend
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    tty: true
    volumes:
      - ./app:/usr/src/app
    command: ["sh"]

Docker Desktop 使用時は /usr/src/app に ./app が正しくマウントされていましたが、Rancher Desktop では /usr/src/app が空ディレクトリになっていました。

調査

docker inspect でコンテナ設定を確認すると、HostConfig.Binds が次のようになっていました。

"Binds": [
    "/c/sample/app:/usr/src/app:rw"
]

Rancher Desktop は WSL2 上で動作しており、WSL2 では Windows の Cドライブは /mnt/c にマウントされます。したがって、期待する設定は以下のようになるはずです。

"Binds": [
    "/mnt/c/sample/app:/usr/src/app:rw"
]

実際に rdctl shell で Rancher Desktop の仮想マシンに接続して確認すると、/c/sample/app という空ディレクトリが作られており、想定と異なるパスが設定されていることがわかりました。

原因

調査の結果、以下の GitHub Issue に辿り着きました。
https://github.com/rancher-sandbox/rancher-desktop/issues/8775

ここで指摘されていたのは、COMPOSE_CONVERT_WINDOWS_PATHS という環境変数の存在です。この変数は Docker Toolbox 時代のパス変換用に使われていたもので、Rancher Desktop では不要どころか誤ったパス変換を引き起こします。(思い返すと、過去にDocker Toolboxをインストールしたことがあり、その時の設定が残っていたようです。)

解決方法

Windows の環境変数から COMPOSE_CONVERT_WINDOWS_PATHS を削除すると、パス変換が正しく行われるようになり、Volumeマウントが正常に機能しました。

まとめ

  • 症状: Rancher Desktop(Windows, WSL2)でVolumeマウントが空ディレクトリになる
  • 原因: COMPOSE_CONVERT_WINDOWS_PATHS が古い仕様のパス変換を行っていた
  • 対処: 環境変数から COMPOSE_CONVERT_WINDOWS_PATHS を削除する
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?