Почему докер сообщает о 100% -ном использовании диска в новом образе Ubuntu?


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, и, кажется, уничтожил все мои изображения (к счастью, я могу восстановить их с моими dockerfiles ). Теперь, когда я запускаю свежий образ 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% потребляется! Ясно, что есть какой-то общий диск между всеми моими изображениями, который я не понимаю ...


Как вы используете контейнеры Docker и как рассредоточены пользователи / группы (больше к ошибкам mysql) Кроме того, для docker они разделяют что-либо на хосте или они являются полностью автономными?
linuxdev2013

Ответы:


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

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

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

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


--storage-optне поддерживается на OSX
Quanlong

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, к которому вы можете затем загрузить и запустить эти инструменты.


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.