Docker &引用;设备上没有剩余空间”;即使在移除所有容器之后
在试验Docker和Docker Compose时,我突然遇到了“设备上没有空间”错误。我尝试过用类似问题中建议的方法删除所有内容,但没有效果 我跑的东西:Docker &引用;设备上没有剩余空间”;即使在移除所有容器之后,docker,docker-compose,Docker,Docker Compose,在试验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
$ 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 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
以及:
如前所述,我仍在试验,所以我不确定我是否发布了所有相关信息-如果您需要更多信息,请告诉我
有人知道还有什么问题吗?问题是
/var/lib/docker
位于/
文件系统上,该文件系统的inode已用完。您可以通过运行df-i/var/lib/docker
因为/home
的文件系统有足够的索引节点和磁盘空间,所以将Docker的工作目录移到那里应该可以让它重新运行
(请注意,这假定当前Docker安装中没有任何有价值的内容。)
首先停止Docker守护进程。在Ubuntu上,运行
sudo service docker stop
然后将旧的/var/lib/docker
移开:
sudo mv /var/lib/docker /var/lib/docker~
现在在/home
上创建一个目录:
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
然后它会再次工作。为了将来的参考,如果您已经删除了所有容器,您也可以尝试
docker system prune
,它将删除悬挂的图像,容器和其他任何内容。这可能无法直接回答问题,但如果用于创建图像的Dockerfile可用,则通常会很有用
尤其要确保限制将生成的层的数量,因此,在编写Dockerfile时,避免这样做:
RUN apt-get update && sudo apt-get install -y package1
RUN apt-get update && sudo apt-get install -y package2
RUN apt-get update && sudo apt-get install -y package3
而是这样做:
RUN apt-get update && sudo apt-get install -y \
package1 \
package2 \
package3
这样做大大减少了图像的大小以及inode的使用,因为生成的层更少。这有助于解决我的案例中的问题(inode将全部用完)
确保删除由失败的生成生成的潜在中间映像以释放空间docker rmi
有关更多提示,您可以查看此网站。将
df-h
的输出发布到您的question@TarunLalwani完成!你是在哪个操作系统的虚拟机上运行的吗?@TarunLalwani没有虚拟机,直接在我的Ubuntu 16.04.3 LTS安装上运行。你能粘贴df-h/var/lib/docker
的输出吗!这对我不起作用。我不知怎的没有/var/lib/docker目录。。。尝试创建它并设置上面列出的权限。。。还是不走运。
RUN apt-get update && sudo apt-get install -y package1
RUN apt-get update && sudo apt-get install -y package2
RUN apt-get update && sudo apt-get install -y package3
RUN apt-get update && sudo apt-get install -y \
package1 \
package2 \
package3