「Docker Desktop for Windows」でdocker-compose up中に「user declined directory sharing」のエラーが出た時の対処法
-
カテゴリ:
- サーバ
「Docker Desktop for Windows」でdocker-compose upコマンドを実行した時に、「user declined directory sharing」のエラーが発生して少し手間取ったので、その対処法をメモ。
設定していないだけのことになのに、結構時間をかけてしまったのでもうこんなところで躓かないようにしたい。
事象
Windows版のdockerである「Docker Desktop for Windows」でLAMP環境を構築しようと思い、docker-compose.ymlとDockerfileを用意。
docker-compose buildでビルドをした後、docker-compose upでコンテナを起動した直後にエラーが発生しました。
PS D:\docker\dockertest> docker-compose up -d
Creating network "dockertest_default" with the default driver
Creating volume "dockertest_db_data" with default driver
Pulling mysql (mysql:5.7)...
5.7: Pulling from library/mysql
////省略////
Status: Downloaded newer image for phpmyadmin/phpmyadmin:latest
Creating web-dev ... error
Creating dockertest_mysql_1 ...
Creating dockertest_mysql_1 ... error
ERROR: for dockertest_mysql_1 Cannot create container for service mysql: user declined directory sharing D:\docker\dockertest\mysql
ERROR: for web Cannot create container for service web: user declined directory sharing D:\docker\dockertest\web\
ERROR: for mysql Cannot create container for service mysql: user declined directory sharing D:\docker\dockertest\mysql
ERROR: Encountered errors while bringing up the project.
PS D:\docker\dockertest>
centOSとapacheが入ったwebとmyqlの2つで、イメージからコンテナを作成時にエラーが発生しています。
原因と解決策
WindowsのフォルダとDockerのディレクトリ間でファイル共有をする際、Docker Desktopに対してファイル共有の設定をしておかないといけないらしいです。
たしかに、docker-compose.ymlで「volumes:」としている箇所でエラーが発生している模様。
web:
container_name: web-dev
build: ./web
ports:
- "81:80"
volumes:
- ./web:/var/web
mysql:
image: mysql:5.7
volumes:
- ./mysql:/var/lib/mysql
ports:
- 3306:3306
上記の7行目と11行目でWindowsのフォルダとDockerのディレクトリを紐づけている部分で注意が必要です。
対処法として以下の設定を行います。
「Docker Desktop for Windows」の左上にある歯車マーク(⚙)をクリックしてみてください。
「Settings > Resources > FILE SHARING >」を遷移して、上図のように+マークをクリックしてください。
Dockerと共有するWindowsのフォルダを選択してください。上図のように、対象のフォルダが表示されていればOKです。
最後に「Apply & Restart」をクリックしてから閉じるボタンを押下すれば設定完了です。
もう一度、docker-compose upコマンドを実行しています。
PS D:\docker\dockertest> docker-compose up -d
Creating dockertest_mysql_1 ... done
Creating web-dev ... done
Creating dockertest_phpmyadmin_1 ... done
PS D:\docker\dockertest>
問題なくコンテナを起動させることができました!!!
以上です。