即使卸下所有容器后,“设备上仍然没有空间”
在试验Docker和Docker Compose时,我突然遇到“设备上没有空间”的错误。 我试图删除一切使用类似的问题中提出的方法,但无济于事。
我跑的东西:
$ docker-compose rm -v $ docker volume rm $(docker volume ls -qf dangling=true) $ docker rmi $(docker images | grep "^<none>" | awk "{print $3}") $ docker system prune $ docker container prune $ docker rm $(docker stop -t=1 $(docker ps -q)) $ docker rmi -f $(docker images -q)
据我所知,现在真的不应该有任何东西了。 看起来这样:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE
相同的卷:
$ docker volume ls DRIVER VOLUME NAME
而对于容器:
$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
不幸的是,我仍然得到这样的错误:
$ docker-compose up Pulling adminer (adminer:latest)... latest: Pulling from library/adminer 90f4dba627d6: Pulling fs layer 19ae35d04742: Pulling fs layer 6d34c9ec1436: Download complete 729ea35b870d: Waiting bb4802913059: Waiting 51f40f34172f: Waiting 8c152ed10b66: Waiting 8578cddcaa07: Waiting e68a921e4706: Waiting c88c5cb37765: Waiting 7e3078f18512: Waiting 42c465c756f0: Waiting 0236c7f70fcb: Waiting 6c063322fbb8: Waiting ERROR: open /var/lib/docker/tmp/GetImageBlob865563210: no space left on device
有关我的Docker安装的一些数据:
$ docker info Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 1 Server Version: 17.06.1-ce Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 15 Dirperm1 Supported: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170 runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2 init version: 949e6fa Security Options: apparmor seccomp Profile: default Kernel Version: 4.10.0-32-generic Operating System: Ubuntu 16.04.3 LTS OSType: linux Architecture: x86_64 CPUs: 4 Total Memory: 7.685GiB Name: engelbert ID: UO4E:FFNC:2V25:PNAA:S23T:7WBT:XLY7:O3KU:VBNV:WBSB:G4RS:SNBH Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false WARNING: No swap limit support
和我的磁盘信息:
$ df -h Filesystem Size Used Avail Use% Mounted on udev 3,9G 0 3,9G 0% /dev tmpfs 787M 10M 778M 2% /run /dev/nvme0n1p3 33G 25G 6,3G 80% / tmpfs 3,9G 46M 3,8G 2% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup /dev/loop0 81M 81M 0 100% /snap/core/2462 /dev/loop1 80M 80M 0 100% /snap/core/2312 /dev/nvme0n1p1 596M 51M 546M 9% /boot/efi /dev/nvme0n1p5 184G 52G 123G 30% /home tmpfs 787M 12K 787M 1% /run/user/121 tmpfs 787M 24K 787M 1% /run/user/1000
和:
$ df -hi /var/lib/docker Filesystem Inodes IUsed IFree IUse% Mounted on /dev/nvme0n1p3 2,1M 2,0M 68K 97% /
如上所述,我仍在试验,所以我不确定是否发布了所有相关信息 – 如果您需要更多信息,请告知我们。
任何人有任何想法更多可能是这个问题?
问题在于/var/lib/docker
位于inodes文件系统中。 你可以通过运行df -i /var/lib/docker
因为/home
的文件系统有足够的inode和磁盘空间,所以在那里移动Docker的工作目录应该重新开始。
(请注意,这个假设在当前的Docker安装中没有任何价值。)
首先停止Docker守护进程。 在Ubuntu上运行
sudo service docker stop
然后移走旧的/var/lib/docker
:
sudo mv /var/lib/docker /var/lib/docker~
现在在/home
上创build一个目录:
sudo mkdir /home/docker
并设置所需的权限:
sudo chmod 0711 /home/docker
将/var/lib/docker
目录链接到新的工作目录:
sudo ln -s /home/docker /var/lib/docker
然后重新启动Docker守护进程:
sudo service docker start
然后它应该再次工作。