Как я могу исправить Docker/Mac без пробела на ошибке устройства?

Я построил довольно большой образ (1G), который имеет много "инфраструктуры" в нем для тестирования (Mongo, Kafka и т.д.).

При попытке запустить это я не оставляю места на ошибках устройства. Как я могу это исправить?

Я очистил остановленные изображения и удалил все изображения, которые мне не нужны.

Ответ 1

Если вы получаете ошибку no space left on device с Docker, вы можете легко решить эту проблему с помощью system prune.

Я использую Docker для Mac 17.03.

С докере UP и всеми вашими контейнерами RUNNING, выполните docker system prune -a

Это должно дать следующий диалог:

WARNING! This will remove:
- all stopped containers
- all volumes not used by at least one container
- all networks not used by at least one container
- all images without at least one container associated to them Are you sure you want to continue? [y/N]

Затем нажмите y, чтобы удалить много контейнеров, заключив (в моем случае): Total reclaimed space: 23.26 GB.

Теперь вы можете вернуться к работе, даже не перезагрузив докер!

Ответ 2

Вы можете изменить размер размера виртуального диска в настройках Docker для Mac на вкладке "Диск". Это увеличит пространство без потери данных.

Ответ 3

Проверьте свои каталоги докеров, чтобы найти проблему (на MAC это будет отличаться, но тот же подход может помочь)

du -hs /var/lib/docker

Вы можете видеть, какая папка занимает много места на диске, выполнив ту же команду в подпапках /var/lib/docker:

  • Для /var/lib/docker/volumes: вам нужно удалить тома потерянные. Вы также можете использовать docker volume ls -qf dangling=true для проверки объемы. Чтобы удалить осиные тома: docker volume rm $(docker volume ls -qf dangling=true)

  • Для /var/lib/docker/containers вам нужно проверить, есть ли у вас много остановленных (или запущенных) контейнеров с docker ps= запущенными контейнерами и docker ps -a= все контейнеры (запущены и остановлены). Чтобы удалить остановленные контейнеры: docker rm -v $(docker ps -aq). Флаг -v автоматически удалит объем контейнера

  • Для /var/lib/docker/images вы можете удалить все неиспользуемые изображения, используя docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

Также проверьте GitHub, чтобы найти очень полезные скрипты, которые удаляют неиспользуемые изображения/контейнеры/тома.

Ответ 4

Вы можете обновить размер жесткого диска, доступного для vm в $HOME/.docker/machine/machines/default/config.json

Ответ 5

Вы можете нажать на значок Docker вверху, затем preferences. Перейдите на вкладку reset и нажмите remove all data.

Ответ 6

Вы всегда можете сбросить и воссоздать boot2docker vm заново, чтобы убедиться, что только нужные изображения/контейнеры были построены/импортированы заново. Если вы продолжаете сталкиваться с проблемой пространства, вы можете захотеть дать вашему boot2docker vm бит больше места, см. Docker увеличить объем дискового пространства

Ответ 7

Попробуйте увеличить дисковое пространство. Это то, что сработало для меня. Docker → настройки → диск → размер образа диска (увеличить его) → применить