Докер машина: нет места на устройстве
Я пытаюсь настроить машину Docker с помощью Docker Compose.
Сценарий 1 (Без Докера машины)
Если я бегу docker-compose up -d
без Docker Machine он создает мои 3 связанных контейнера как intented (nginx+mongodb+nodejs).
Сценарий 2 (с Docker машина)
Затем я создаю виртуальную машину с помощью Docker Machine и говорю Docker поговорить с этой машиной с eval $(docker-machine env streambacker-dev)
.
на данный момент, если я ssh к моей машине Докера и запустить df -h
, Я:
если я запускаю docker-compose up -d
, Я " на устройстве не осталось места " ошибка при загрузке последнего контейнера.
"tmpfs" кажется действительно немного полным после этого:
проверка --virtualbox-disk-size опция показывает, что по умолчанию она составляет 20000 МБ, что я думаю, что мы можем видеть как "/dev/sda1" на обоих изображениях. Итак, почему контейнеры заполняют "tmpfs" n и что именно это "файловая система tmpfs"? Является ли это временным каталогом загрузки? как я могу создать больше места для моих контейнеров?
спасибо!
для информации, я использую Докер машина 0.4.0-rc2 и Docker Compose 1.3.2.
6 ответов:
как сказано выше,
tmpfs
не имеет ничего общего с--virtualbox-disk-size
. Похоже, что boot2docker монтируетсяtmpfs
в память, поэтому вам нужно выделить больше памяти для вашей виртуальной машины virtualbox. Вы можете сделать это, указав
у меня была такая же ошибка (
[ERROR] InnoDB: Error number 28 means 'No space left on device'
) и решить таким образом:1 . Удалить потерянные Тома в Docker можно с помощью встроенной команды docker volume. Встроенная команда также удаляет любой каталог в /var/lib/docker / volumes, который не является Томом, поэтому убедитесь, что вы не поместили туда ничего, что хотите сохранить.
предупреждение будьте очень осторожны с этим, если у вас есть некоторые данные, которые вы хотите держите
лечение:
$ docker volume rm $(docker volume ls -qf dangling=true)
дополнительные команды:
список висячих томов:
$ docker volume ls -qf dangling=true
Список всех томов:
$ docker volume ls
2 . Также рассмотрите возможность удаления всех неиспользуемых изображений.
сначала избавьтесь от
<none>
изображения (они иногда генерируются при создании изображения, и если по какой-либо причине создание изображения было прервано, они остаются там).вот хороший скрипт, который я использую чтобы удалить их
docker rmi $(docker images | grep "^<none>" | awk '{print }')
затем, если вы используете Docker Compose для локального создания изображений для каждого проекта. Вы получите много изображений, обычно называемых как ваша папка (например, если ваша папка проекта с именем Hello, вы найдете имя изображения
Hello_blablabla
). поэтому также рассмотрите возможность удаления всех этих изображенийвы можете отредактировать приведенный выше скрипт, чтобы удалить их или удалить их вручную с помощью
docker rmi {image-name}
Если вы используете Docker Community Edition:
настройки системы чернослива
при использовании boot2docker (docker-machine) очистите потерянные Тома:
docker volume rm $(docker volume LS-qf dangling=true)
очистить неиспользуемые изображения:
docker rmi $(docker images-q-f "dangling=true")
A. удалить неиспользуемые изображения
с помощью команд docker rm или docker rmi вы можете удалить ненужные изображения. На самом деле существует образ, который помогает в этой задаче (martin/docker-cleanup-volumes). Основой является запуск selectig из списка ваших изображений и контейнеров:
докер ps-a-s
B. измените дескриптор JSON DOCKER
об этом упоминается в некоторых форумах. Идея состоит в том, чтобы увеличить дескриптор, расположенный в ~/.docker/machine/machines/default / config.формат JSON. Param кажется дисковым, но я не знаю, работает ли он в других ОС (не в windows).
C. Linux RESIZE:
в ОС Windows docker machine или boot2docker на самом деле является виртуальной машиной virtualbox, затем вы можете выполнить процедуру изменения размера диска. Позаботьтесь о резервном копировании файлов. Общая процедура заключается в том, чтобы изменить размер в virtualbox, а затем использовать утилиты под названием gpartd для изменения пространства, воспринимаемого linux в его перекрытия. Есть несколько ссылок, чтобы сделать эту процедуру, на которую ссылаются ниже:
D. воссоздать DOCKER-MACHINE / BOOT2DOCKER
идея состоит в том, чтобы воссоздать докер-машину по умолчанию. Следующие команды могут проиллюстрировать вас. Обратите внимание, что при повторном создании boot2docker вы потеряете предыдущую загруженную версию докер изображения.
docker-machine rm default
докер-машина создать --драйвер --в VirtualBox в VirtualBox-диск-размер "100100" по умолчанию
docker-machine env default
затем вы можете перейти в virtual box и увидеть пространство boot2docker с командой "df-h"
я столкнулся с этой проблемой и не смог добавить дополнительное пространство с помощью Docker UI для mac, я установил docker с homebrew и выполнил следующую команду при создании моей машины:
docker-machine create --driver virtualbox --virtualbox-memory "2048" --virtualbox-disk-size "40000" default
это добавляет двойное пространство для памяти и размер диска в virtualbox, который я имел раньше, и вы можете добавить размер настроек здесь, что вам нужно, как вы считаете нужным