今天碰到了一个问题,访问数据库的时候,发现访问不了,爆存储空间不够的错误,随后输入命令:
df -h
发现/dev/vda1,也就是系统盘被占满了。通过命令可以观察到/var/lib/docker目录很大,一开始的思路是把我需要的镜像和容器导出来,但更悲剧的是,提示空间不足,无法导出……
因为镜像是弄了很久的,所以不想轻易舍弃。就想了很久,终于想出了一个主意。先把/var/lib/docker文件夹移出去,然后重新设置docker的数据存储位置。
下面是解决路径:
#查看当下允许的容器/镜像,进行关闭。
[root@git ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
af320c3683a2 redis-dockerfile "/usr/bin/redis-serve" 22 hours ago Up 22 hours 6377/tcp, 0.0.0.0:6377->6379/tcp redis
441356d6c863 e18d2140c488 "docker-entrypoint.sh" 24 hours ago Up 24 hours 0.0.0.0:6379->6379/tcp redis-a
0072125aef9c nginx_web/hello:v1 "/bin/bash" 28 hours ago Up 28 hours 80/tcp
....
逐步进行关闭:
[root@git ~]# docker stop redis
redis
[root@git ~]# docker stop redis-a
redis-a
[root@git ~]# docker stop prickly_goldstine
prickly_goldstine
[root@git ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@git ~]# service docker stop
停止 docker: [确定]
迁出docker的数据(home目录没有挂载在系统盘),至此,系统盘的问题解决
[root@git ~]# mv /var/lib/docker /home/docker
mv: 无法删除"/var/lib/docker/devicemapper": 设备或资源忙
解决办法:
cat /proc/mounts | grep “docker”
umount /var/lib/docker/devicemapper
mv /var/lib/docker /home/docker
然后是设置docker是数据存储位置,编辑 /etc/sysconfig/docker 文件, 添加 -g 参数的设置, 如下:
other_args="-g /home/docker"
启动docker
[root@git home]# service docker start
Starting docker: [确定]
[root@git home]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
af320c3683a2 redis-dockerfile "/usr/bin/redis-serve" 22 hours ago Exited (0) 7 minutes ago redis
441356d6c863 e18d2140c488 "docker-entrypoint.sh" 24 hours ago Up 2 seconds 0.0.0.0:6379->6379/tcp redis-a
0072125aef9c nginx_web/hello:v1 "/bin/bash" 28 hours ago Exited (0) 7 minutes ago prickly_goldstine
da3a52e8fb7b nginx "nginx -g 'daemon off" 45 hours ago Exited (0) 28 hours ago nginx_web
....
[root@git home]# docker start redis-a
redis-a
[root@git ~]# du -sh /var/lib/docker
8.0K /var/lib/docker
至此,问题解决。