LoginSignup
31
14

More than 3 years have passed since last update.

docker for macで No space left on device

Last updated at Posted at 2020-03-16

結論

二つ解決策がある。

  1. 以下のコマンドで不要なimage containerを削除してあげる。

以下のコマンドを打つと、まとめて削除してくれます。


$ docker system prune

消す方法は、たくさんあるので以下の記事が参考になると思います。

参考: https://qiita.com/shinespark/items/526b70b5f0b1ac643ba0

  1. 以下の画像の仮想環境のディスクサイズを上げる。

Settings.png

詳細

エラー内容

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
....
31
14
1

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
31
14