結論
二つ解決策がある。
- 以下のコマンドで不要なimage containerを削除してあげる。
以下のコマンドを打つと、まとめて削除してくれます。
$ docker system prune
消す方法は、たくさんあるので以下の記事が参考になると思います。
参考: https://qiita.com/shinespark/items/526b70b5f0b1ac643ba0
- 以下の画像の仮想環境のディスクサイズを上げる。

詳細
エラー内容
docker-composeで、Elasticsearchを立ち上げようとすると、以下のようなエラーが出るので、その対処方法を記載していきます。
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: Unable to access 'path.scripts' (/usr/share/elasticsearch/config/scripts)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.cli.Command.main(Command.java:88) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:89) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:82) ~[elasticsearch-5.2.2.jar:5.2.2]
Caused by: java.lang.IllegalStateException: Unable to access 'path.scripts' (/usr/share/elasticsearch/config/scripts)
at org.elasticsearch.bootstrap.Security.addPath(Security.java:379) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Security.addFilePermissions(Security.java:251) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Security.createPermissions(Security.java:215) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Security.configure(Security.java:121) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:236) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-5.2.2.jar:5.2.2]
... 6 more
Caused by: java.nio.file.FileSystemException: /usr/share/elasticsearch/config/scripts: No space left on device
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:91) ~[?:1.8.0_92-internal]
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) ~[?:1.8.0_92-internal]
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) ~[?:1.8.0_92-internal]
at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:384) ~[?:1.8.0_92-internal]
at java.nio.file.Files.createDirectory(Files.java:674) ~[?:1.8.0_92-internal]
at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781) ~[?:1.8.0_92-internal]
at java.nio.file.Files.createDirectories(Files.java:767) ~[?:1.8.0_92-internal]
at org.elasticsearch.bootstrap.Security.ensureDirectoryExists(Security.java:421) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Security.addPath(Security.java:377) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Security.addFilePermissions(Security.java:251) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Security.createPermissions(Security.java:215) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Security.configure(Security.java:121) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:236) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-5.2.2.jar:5.2.2]
... 6 more
docker-compose.yml
services:
elasticsearch:
build:
context: .
dockerfile: Dockerfile-elasticsearch
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- xpack.security.enabled=false
- transport.host=127.0.0.1
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
mem_limit: 1g
cap_add:
- IPC_LOCK
volumes:
- esdata:/usr/share/elasticsearch/data
ports:
- 9200:9200
volumesのesdataが、ローカルディレクトリを指定していないので、仮想環境内にボリュームファイルを作成します。
しかし、仮想環境内のディスク容量が不足していると、ボリュームファイルを作成できないとエラーが出てしまう。
ちなみに、以下のようにボリューム先をローカルディレクトリにすると、ディスク容量不足のエラーはなくなる。
volumes:
- /esdata:/usr/share/elasticsearch/data
仮想環境内を覗いてみる
仮想環境内では、どのようなディレクト構成になっているのか気になったので、覗いてみました。
まずは、仮想環境に入る。
$ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
- imageの保存場所
docker-desktop:/var/lib/docker/image/overlay2/imagedb/content/sha256
- volumesの保存場所
docker-desktop:docker-desktop:/var/lib/docker/volumes
- containerの保存場所
docker-desktop:docker-desktop:/var/lib/docker/overlay2
ファイル容量などをみてみると、/var/lib/docker/overlay2
が大きくなり、ディスクを圧迫しがちなので、不要なcontainerは削除することを、怠らない方が良い。
docker-desktop:/var/lib/docker/overlay2# df -h
....
overlay 62.7G 26.9G 32.6G 45% /var/lib/docker/overlay2/a540053f9f860ce79c702f59fa76c5b525754a32e1a3d52437f4762d6ec84b5a/merged
overlay 62.7G 26.9G 32.6G 45% /var/lib/docker/overlay2/a61ed0f1b94cad22f8d02b78d29828a6dfcadf3f95496b03d40ef86d26043aaf/merged
overlay 62.7G 26.9G 32.6G 45% /var/lib/docker/overlay2/0a5984751197f434f6d5b33d78e0fea769ee36487e9fdc24d0d49097afab30bc/merged
overlay 62.7G 26.9G 32.6G 45% /var/lib/docker/overlay2/aa82dc3d35db78d3898a280b2b86a
....