我在 Mac OS X 10.10.5 (Yosemite) 上运行最新版本的 Docker (1.8.2),最新版本为docker-machine
(0.4.1)。我在普通主机上运行了两个普通 CentOS 6 容器docker-machine
。没有特殊配置,容器实际上没有运行任何东西……只是 bash shell。
df -h
随着时间的推移,我发现容器和主机(即)上的磁盘利用率都上升到了 100% docker-machine
。我还可以听到 Mac 上的风扇转动并加速,直到我关闭容器。
我认为可能是某些恶意进程导致本地文件系统在容器内增大,但du -hs /
报告显示只有几百 MB。
我对 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 的 VM 托管,因此所有 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`
此后,我重新获得了自己的空间。