Докер машина: нет места на устройстве


Я пытаюсь настроить машину 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 99

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"

на ДОКере osx / я смог нажать кнопку [Переместить Образ Диска] и он успешно переместил Докер.qcow2 (предположительно содержащий контейнеры / изображения)

enter image description here первоначально-когда машины начали - я все еще получал не осталось места на ошибке устройства но вскоре все разрешилось.

я столкнулся с этой проблемой и не смог добавить дополнительное пространство с помощью Docker UI для mac, я установил docker с homebrew и выполнил следующую команду при создании моей машины:

docker-machine create --driver virtualbox --virtualbox-memory "2048" --virtualbox-disk-size "40000" default

это добавляет двойное пространство для памяти и размер диска в virtualbox, который я имел раньше, и вы можете добавить размер настроек здесь, что вам нужно, как вы считаете нужным