15

Я больше не могу использовать докер или эффективно запускать новые образы - он сообщает, что я использую диск на 100%. Здесь вы можете видеть, что я запускаю нетронутую копию Ubuntu, и все же он говорит мне, что у меня нет свободного места на диске:

$ docker run -t -i ubuntu /bin/bash
root@3838b70bd76e:/# df -h 
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G   18G     0 100% /
none             19G   18G     0 100% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G   18G     0 100% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

Отдельно я пытаюсь запустить экземпляр mysql, и он выдает мне сообщения об ошибках, которые, по моему мнению, связаны с тем, что у меня нет свободного диска. Когда я пытаюсь запустить orchardup/mysql, я получаю:

ERROR: 1030  Got error 28 from storage engine

Это означает, что у него закончилось место для хранения.

Учитывая это, как мне следует интерпретировать приведенный выше отчет df -h и как определить, что потребляет 100% моего диска? Я использую Docker 1.3, работающий на OSX 10.9.4, использующий boot2docker.

Благодарю.


Редактировать: В качестве обходного пути я запустил boot2docker delete , а затем boot2docker init , и он, похоже, уничтожил все мои образы (к счастью, я могу восстановить их с помощью своих файлов docker). Теперь, когда я запускаю свежий образ Ubuntu:

root@f53d637e3d33:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G  373M   17G   3% /
none             19G  373M   17G   3% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G  373M   17G   3% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

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


Редактировать 2: Я только что загрузил кучу изображений, и теперь вот что я вижу, когда запускаю образ Ubuntu и проверяю свободное место на диске:

root@f53d637e3d33:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G  2.7G   15G  16% /
none             19G  2.7G   15G  16% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G  2.7G   15G  16% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

От 3% до 16% потребляется! Ясно, что есть какой-то общий диск между всеми моими изображениями, который я не понимаю ...

4 ответа4

1

На хостах Windows boot2docker работает, создавая виртуальную машину, используя виртуальный ящик. когда вы запускаете boot2docker init, он создает виртуальную машину и по умолчанию назначает 20G корневому диску. эта виртуальная машина работает под минимальной ОС Linux, которая, в свою очередь, запускает самого демона docker (демон docker не запускается в Windows - пока).

диск, подключенный к виртуальной машине, обеспечивает хранение образов докера. так что вы можете посмотреть дополнительные параметры команды init boot2docker, чтобы увеличить начальный размер диска. это увеличит размер диска, доступного для использования на виртуальной машине, но, как указал Queasy, вам нужно добавить дополнительные опции в демон docker, чтобы увеличить доступное хранилище для образов.

когда вы запускаете "df -h" в контейнере, общий размер диска соответствует размеру дискового пространства, выделенного демону docker с использованием параметра "dm.basesize".

примечание: boot2docker больше не поддерживается в пользу Docker Toolbox. Возможно, вы захотите перейти на эту версию, и в этом случае вы будете использовать «docker-machine create» вместо "boot2docker init". я переключился на docker-toolbox, поэтому не могу проверить параметры команды, необходимые для init boot2docker

0

Измените конфигурацию docker в /etc /sysconfig /docker-storage и добавьте строку:

DOCKER_STORAGE_OPTIONS= --storage-opt dm.basesize=30G

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

0

Devicemapper является механизмом хранения докера по умолчанию. Он пытается предварительно выделить 100 ГБ по умолчанию в /var /lib /docker. Хотя не все это пространство действительно используется, и вы можете настроить его в настройках. Докер документы

0

Учтите, что диск может быть плохим. Hitachi (Drive Fitness Test), Seagate (Seatools) и Western Digital (Western Digital Data Lifeguard) предлагают бесплатное диагностическое программное обеспечение, которое поможет вам определить это.

В качестве примера того, как плохой диск может испортить дисковое пространство, я сделал резервную копию дисков емкостью 1 ТБ, которые сообщают Windows, что у них все еще есть ПЕТАБАЙТЫ данных, оставленных для передачи.

Если с вашим диском все в порядке, используйте du (Использование диска), чтобы увидеть, какая папка большая. du -h /usr/bin , du -h /var или du -h /home/[username]/Downloads чтобы помочь точно определить это.

Редактировать: я видел, что вы используете OS X: вам нужно будет использовать инструменты HDD, упомянутые выше, в качестве параметров загрузки или что-то вроде бесплатного Windows PE, к которому вы можете загружаться и запускать эти инструменты.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .