[WSL2] Docker Desktopでコンテナ起動時にbut it is not a shared mount.とエラーが出る場合の対処

2021/06/25

今まで問題なく使えてたのに、Docker Desktopをアップデートしたら「Error response from daemon: path /develop/www is mounted on / but it is not a shared mount.」とエラーが発生するようになってしまいました。

スポンサーリンク

環境

  • Windows 10 Home
  • WSL2(Distribution: Ubuntu20.04LTS)
  • Docker Desktop 3.5.1

対応方法

/develop/www is mounted on / but it is not a shared mount.

/develop/wwwディレクトリをルートディレクトリにマウントしようとしてエラーになってるようです。Docker DesktopはWSL2で利用しているので、Windows側のマウント共有設定は関係ないはず。(WSL2にするとそもそも設定できなくなってる)
wwwのマウント設定をしているdocker-compose.ymlはこちら

version: '3'

services:
  apache24:
    build: ./services/apache24
    container_name: apache24
    volumes:
      - ./www:/usr/local/apache2/htdocs/

/(ロートディレクトリ)へのマウントではないけど。。
~/htdocs/ の末尾スラッシュが怪しい。

# - ./www:/usr/local/apache2/htdocs/
  ↓
- ./www:/usr/local/apache2/htdocs

ということで末尾スラッシュを消して実行してみると無事に起動しました。

誤った記述でたまたま動いてたのが、DockerのバージョンUPでNGになっちゃったのでしょうか。ちょっと調べてみたら2019年に問題があるこが報告され、そのまま放置されてるかのよう?です。

https://github.com/docker/compose/issues/7004

マウント先指定は末尾スラッシュは気を付けるのが無難です。