Я использую последнюю версию Docker (1.8.2) на Mac OS X 10.10.5 (Yosemite) с последней docker-machine
(0.4.1). У меня есть только два контейнера vanilla CentOS 6, запущенных на стандартном docker-machine
хосте. Никакой специальной конфигурации нет, контейнеры на самом деле вообще ничего не запускают… просто оболочки bash.
Со временем я вижу, что использование диска увеличивается df -h
до 100% как на контейнерах, так и на хост-машине (т. е. docker-machine
). Я также слышу, как вентилятор на моем Mac включается и ускоряется, пока я не выключу контейнеры.
Я думал, что, возможно, какой-то вредоносный процесс приводит к увеличению размера локальной файловой системы внутри контейнеров, но du -hs /
в отчете указано всего несколько сотен МБ.
Я относительно новичок в Docker и не могу отследить источник этой проблемы. Есть идеи, что может привести к тому, что использование диска выйдет из-под контроля?
Редактировать 1: добавить выходы df -h
иdf -i
Использование диска из контейнера
[root@99e23f7c4ae6 /]# df -h
Filesystem Size Used Avail Use% Mounted on
none 19G 18G 0 100% /
tmpfs 499M 0 499M 0% /dev
shm 64M 0 64M 0% /dev/shm
tmpfs 499M 0 499M 0% /sys/fs/cgroup
/dev/sda1 19G 18G 0 100% /etc/hosts
tmpfs 499M 0 499M 0% /proc/kcore
tmpfs 499M 0 499M 0% /proc/timer_stats
[root@99e23f7c4ae6 /]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
none 1218224 28199 1190025 3% /
tmpfs 127518 17 127501 1% /dev
shm 127518 1 127517 1% /dev/shm
tmpfs 127518 11 127507 1% /sys/fs/cgroup
/dev/sda1 1218224 28199 1190025 3% /etc/hosts
tmpfs 127518 17 127501 1% /proc/kcore
tmpfs 127518 17 127501 1% /proc/timer_stats
[root@99e23f7c4ae6 /]# du -hs /
du: cannot access '/proc/348/task/348/fd/3': No such file or directory
du: cannot access '/proc/348/task/348/fdinfo/3': No such file or directory
du: cannot access '/proc/348/fd/4': No such file or directory
du: cannot access '/proc/348/fdinfo/4': No such file or directory
610M /
Использование диска хостом
docker@default:~$ df -h
Filesystem Size Used Available Use% Mounted on
tmpfs 896.6M 115.3M 781.3M 13% /
tmpfs 498.1M 72.0K 498.0M 0% /dev/shm
/dev/sda1 18.2G 18.2G 0 100% /mnt/sda1
cgroup 498.1M 0 498.1M 0% /sys/fs/cgroup
none 464.8G 224.6G 240.2G 48% /Users
/dev/sda1 18.2G 18.2G 0 100% /mnt/sda1/var/lib/docker/aufs
none 18.2G 18.2G 0 100% /mnt/sda1/var/lib/docker/aufs/mnt/99e23f7c4ae608b2354c9375a0e3a7513692b44297c24d143a6b92dd73dae611
df: /var/run/docker/netns/99e23f7c4ae6: Permission denied
docker@default:~$ df -i
Filesystem Inodes Used Available Use% Mounted on
tmpfs 124.5K 4.4K 120.2K 3% /
tmpfs 124.5K 3 124.5K 0% /dev/shm
/dev/sda1 1.2M 27.5K 1.1M 2% /mnt/sda1
cgroup 124.5K 11 124.5K 0% /sys/fs/cgroup
none 1000 0 1000 0% /Users
/dev/sda1 1.2M 27.5K 1.1M 2% /mnt/sda1/var/lib/docker/aufs
none 1.2M 27.5K 1.1M 2% /mnt/sda1/var/lib/docker/aufs/mnt/99e23f7c4ae608b2354c9375a0e3a7513692b44297c24d143a6b92dd73dae611
df: /var/run/docker/netns/99e23f7c4ae6: Permission denied
решение1
Каждый раз, когда вы начинаете новый контейнер с помощью docker run
, вы по сути ответвляетесь от того исходного образа, с которого вы начали, поэтому в зависимости от того, что вы делаете, у вас может быть куча очень похожих образов, которые занимают место без причины. Вам также следует помнить, что на Mac Docker размещается на виртуальной машине на базе VirtualBox, поэтому все образы Docker делят общее дисковое пространство.
Я только начал работать с Docker, поэтому должен быть способ получше справиться с этой проблемой, но вот как я ее решил ниже. Возможно, вам не обязательно удалять все ваши контейнеры, но это даст вам некоторое представление о состоянии вашего docker:
- Проверьте инициализированные контейнеры:
docker ps -a
(-a
потому что некоторые из них не запущены) Остановить все существующие контейнеры:
docker stop `docker ps -a|cut -f 1 -d ' '|xargs`
Убрать всесуществующие контейнеры:
docker rm `docker ps -a|cut -f 1 -d ' '|xargs`
Убрать все"неназванные" (
<none>
) изображения. Я экспериментировал с созданием собственных изображений, и большинство из них были неиспользованными:docker rmi `docker images|grep -i none|sed -e 's/ \{1,\}/ /g'| cut -d ' ' -f 3|xargs`
После этого я вернул себе свое пространство.