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

Я пытаюсь настроить Docker Machine с помощью Docker Compose.

Сценарий 1 (без докерной машины)
Если я запускаю docker-compose up -d без Docker Machine, он создает мои 3 связанных контейнера в качестве намеренных (nginx + mongodb + nodejs).

Сценарий 2 (с докерной машиной)
Затем я создаю виртуальную машину с помощью Docker Machine и расскажу Docker о том, чтобы поговорить с этой машиной с помощью eval $(docker-machine env streambacker-dev).

В этот момент, если я ssh для моей докерной машины и запустил df -h, я получаю:

docker machine df -h

Если я запустил docker-compose up -d, я получаю "без пробела на устройстве" ошибка при загрузке последнего контейнера.

"tmpfs" кажется действительно немного полным после этого:

docker machine df -h

Проверка параметра - virtualbox-disk <размер файла показывает, что он по умолчанию имеет значение 20000 МБ, и я думаю, это то, что мы можем видеть как "/dev/sda1" на обеих картинках. Итак, почему контейнеры заполняют "tmpfs" n и что такое "tmpfs" ? Is является временным каталогом загрузки? Как создать больше пространства для контейнеров?

Спасибо!

Для информации, я использую Docker Machine 0.4.0-rc2 и Docker Compose 1.3.2.

Ответ 1

Как сказано выше, tmpfs не имеет ничего общего с --virtualbox-disk-size. Кажется, что boot2docker монтирует tmpfs в память, поэтому вам нужно выделить больше памяти для вашего виртуального бокса vm. Вы можете сделать это, указав параметр --virtualbox-memory.

   --virtualbox-memory "1024"
Size of memory for host in MB [$VIRTUALBOX_MEMORY_SIZE]

по умолчанию:

$ docker-machine create --driver virtualbox testA
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
$ docker-machine ssh testA
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015
Docker version 1.8.1, build d12ea79
[email protected]:~$ df -h /
Filesystem                Size      Used Available Use% Mounted on
tmpfs                   896.6M    112.7M    783.9M  13% /

С --virtualbox-memory установлено значение 8096

$ docker-machine create --driver virtualbox --virtualbox-memory 8096 testB
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
$ docker-machine ssh testB
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015
Docker version 1.8.1, build d12ea79
[email protected]:~$ df -h /
Filesystem                Size      Used Available Use% Mounted on
tmpfs                     6.9G    112.4M      6.8G   2% /

Ответ 2

У меня была такая же ошибка ([ERROR] InnoDB: Error number 28 means 'No space left on device') и решить ее следующим образом:

1. Удалите потерянные тома в Docker, вы можете использовать встроенную команду тонера. Встроенная команда также удаляет любую директорию в/var/lib/docker/томах, которая не является томом, поэтому убедитесь, что вы не поместили ничего там, которое вы хотите сохранить.

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

Очистка:

$ docker volume rm $(docker volume ls -qf dangling=true)

Дополнительные команды:

Список оборванных томов:

$ docker volume ls -qf dangling=true

Список всех томов:

$ docker volume ls

2. Также рассмотрите удаление всех неиспользуемых изображений.

Сначала избавьтесь от изображений <none> (они иногда генерируются при создании изображения, и если по какой-либо причине здание изображения было прервано, они остаются там).

вот хороший script я использую для их удаления

docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

Затем, если вы используете Docker Compose для создания изображений локально для каждого проекта. В итоге вы получите много изображений, которые обычно называются вашей папкой (например, если ваша папка проекта с именем Hello, вы найдете имя изображения Hello_blablabla). поэтому также рассмотрите возможность удаления всех этих изображений

вы можете редактировать приведенные выше script, чтобы удалить их или удалить их вручную с помощью

docker rmi {image-name}

Ответ 3

Если вы используете версию Docker Community Edition:

удаление докерной системы

Если вы используете boot2docker (docker-machine), очищайте те оси, которые потеряны:

объем докеры rm $(объем докера ls -qf dangling = true)

Удалить неиспользуемые изображения:

docker rmi $(изображения докеров -q -f "dangling = true" )

Ответ 4

а. УДАЛИТЬ НЕОБЫЧНЫЕ ИЗОБРАЖЕНИЯ

используя команды docker rm или docker rmi, вы можете удалить изображения, которые вам не нужны. На самом деле существует изображение, которое помогает в этой задаче (мартины/докеры-чипы-томы). Основой является запуск selectig из списка ваших изображений и контейнеров:

docker ps -a -s

В. ИЗМЕНИТЬ ОПИСАНИЕ DOCKER JSON

он упоминается на некоторых форумах. Идея состоит в том, чтобы увеличить дескриптор, расположенный в ~/.docker/machine/machines/default/config.json. Парам кажется DiskSize, но я не знаю, работает ли он в других ОС (не в Windows).

С. LINUX RESIZE:

в ОС Windows, докер-машина или boot2docker на самом деле виртуальный бокс vm, то вы можете выполнить процедуру для изменения размера диска. Позаботьтесь о резервном копировании файлов. Общая процедура состоит в том, чтобы сделать изменение размера в виртуальном боксе, а затем использовать утилиту gpartd для изменения пространства, воспринимаемого linux в его разделах. Есть несколько ссылок для выполнения этой процедуры, приведенной ниже:

Д. RECREATE DOCKER-MACHINE/BOOT2DOCKER

Идея воссоздает стандартную докер-машину. Следующие команды могут вас проиллюстрировать. Обратите внимание, что при повторном создании boot2docker вы потеряете предыдущие загруженные изображения докеров.

docker-machine rm default

docker-machine create --driver virtualbox --virtualbox-disk-size "100100" по умолчанию

docker-machine env default

то вы можете перейти в виртуальную коробку и увидеть пространство boot2docker с помощью команды "df -h"

Ответ 5

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

введите описание изображения здесь сначала - когда машины начали - я все еще получал На ошибке устройства не осталось места но он разрешился вскоре после этого.