WSL2でdocker + mongoDBでvolumesでローカルパスを指定するとエラー

# いまのところ

結論から書くと、以下の方の記事のようにWindowsやWSLだと「なにかおかしい」らしい。

- [docker for windowsでのdocker-composeのvolumes](https://qiita.com/tettsu__/items/c50c17b4eef3c960e9b8)

2019/6/22追記：
docker volume create コマンドでデータボリュームを作成し、それをvolumesでマウントすると動作する。
ただしホスト側の自分の好きなパスにデータは格納できない。

# 言い訳

※dockerもmongoDBもWSLもほとんど触ったこと無い人間なので、思いきり間違っているところはあるかもしれません。


# 現象

```yaml:docker-compose.yaml
version: '3'

services:
  mongodb:
    image: mongo
    restart: always
    container_name: mongo
    ports:
      - "27017:27017"
    volumes:
      - ./misc/data:/data/db
```

と相対パスで書いて docker-compose up してもエラーがでて起動しない。
（./misc/data は空の状態）

```
mongo      | 2019-06-17T01:50:18.109+0000 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
mongo      | 2019-06-17T01:50:18.111+0000 I CONTROL  [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=110690427a7a
mongo      | 2019-06-17T01:50:18.111+0000 I CONTROL  [initandlisten] db version v4.0.10
mongo      | 2019-06-17T01:50:18.111+0000 I CONTROL  [initandlisten] git version: c389e7f69f637f7a1ac3cc9fae843b635f20b766
mongo      | 2019-06-17T01:50:18.111+0000 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
mongo      | 2019-06-17T01:50:18.111+0000 I CONTROL  [initandlisten] allocator: tcmalloc
mongo      | 2019-06-17T01:50:18.111+0000 I CONTROL  [initandlisten] modules: none
mongo      | 2019-06-17T01:50:18.111+0000 I CONTROL  [initandlisten] build environment:
mongo      | 2019-06-17T01:50:18.111+0000 I CONTROL  [initandlisten]     distmod: ubuntu1604
mongo      | 2019-06-17T01:50:18.111+0000 I CONTROL  [initandlisten]     distarch: x86_64
mongo      | 2019-06-17T01:50:18.111+0000 I CONTROL  [initandlisten]     target_arch: x86_64
mongo      | 2019-06-17T01:50:18.111+0000 I CONTROL  [initandlisten] options: { net: { bindIpAll: true } }
mongo      | 2019-06-17T01:50:18.124+0000 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=10965M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
mongo      | 2019-06-17T01:50:19.026+0000 E STORAGE  [initandlisten] WiredTiger error (1) [1560736219:26117][1:0x7f8208338a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1560736219:26117][1:0x7f8208338a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
mongo      | 2019-06-17T01:50:19.057+0000 E STORAGE  [initandlisten] WiredTiger error (17) [1560736219:57235][1:0x7f8208338a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: File exists Raw: [1560736219:57235][1:0x7f8208338a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: File exists
mongo      | 2019-06-17T01:50:19.063+0000 I STORAGE  [initandlisten] WiredTiger message unexpected file WiredTiger.wt found, renamed to WiredTiger.wt.1
mongo      | 2019-06-17T01:50:19.068+0000 E STORAGE  [initandlisten] WiredTiger error (1) [1560736219:67999][1:0x7f8208338a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1560736219:67999][1:0x7f8208338a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
mongo      | 2019-06-17T01:50:19.105+0000 E STORAGE  [initandlisten] WiredTiger error (17) [1560736219:105959][1:0x7f8208338a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: File exists Raw: [1560736219:105959][1:0x7f8208338a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: File exists mongo      | 2019-06-17T01:50:19.108+0000 I STORAGE  [initandlisten] WiredTiger message unexpected file WiredTiger.wt found, renamed to WiredTiger.wt.2
mongo      | 2019-06-17T01:50:19.110+0000 E STORAGE  [initandlisten] WiredTiger error (1) [1560736219:110197][1:0x7f8208338a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1560736219:110197][1:0x7f8208338a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
mongo      | 2019-06-17T01:50:19.111+0000 W STORAGE  [initandlisten] Failed to start up WiredTiger under any compatibility version.
mongo      | 2019-06-17T01:50:19.111+0000 F STORAGE  [initandlisten] Reason: 1: Operation not permitted
mongo      | 2019-06-17T01:50:19.111+0000 F -        [initandlisten] Fatal Assertion 28595 at src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 704
mongo      | 2019-06-17T01:50:19.111+0000 F -        [initandlisten]
mongo      |
mongo      | ***aborting after fassert() failure
mongo      |
```

これが

```sh
sudo docker run -p 27017:27017 --name dev-mongo -d mongo
```

のようにvolumes無しで直接mongoイメージから起動するとエラーもなく動作する。

最初はWSL2のせいかと思っていたが、どうも何かWindowsとdocker + mongoDBの相性が悪いのだろう。