Docker磁盘空间满的解决办法

今天在服务器上基于docker容器搭建mysql主从时,然后重启docker,发现容器启动不了了,报的错误是:"ERROR:cannot  create temporary directory!"。我的猜测应该就是磁盘空间满了,于是执行命令"df -h",出来的结果是挂载点/var/lib/docker/overlay/ 已用%为100%,真的是磁盘空间用完了。docker system prune

第一种方法:适合刚开始使用docker的用户

解决的思路:

#切换到根目录下
cd /
#查看内存最大
du -h --max-depth=1

由于没有修改docker的默认目录,docker默认目录空间太小了,用不了多久就会满了,docker中默认存放镜像和容器的目录是:/var/lib/docker/,确保自己服务器上没有docker,如果有但是不重要的情况下可以用先卸载重装,并修改默认路径。

一、卸载步骤:

1、首先搜索已经安装的docker 安装包

[root@localhost ~]# yum list installed|grep docker

或者使用该命令

[root@localhost ~]# rpm -qa|grep docker
docker.x86_64 2:1.12.6-16.el7.centos @extras
docker-client.x86_64 2:1.12.6-16.el7.centos @extras
docker-common.x86_64 2:1.12.6-16.el7.centos @extra

2 、分别删除安装包

[root@localhost ~]#yum –y remove docker.x86_64
[root@localhost ~]#yum –y remove docker-client.x86_64
[root@localhost ~]#yum –y remove docker-common.x86_64

3 、删除docker 镜像

[root@localhost ~]# rm -rf /var/lib/docker

4 、再次check docker是否已经卸载成功

[root@localhost ~]#dokcer 

如果没有搜索到,那么表示已经卸载成功。

二、重新安装docker步骤:

1、更新update到最新的版本

yum update //确保yum包最新

2、安装需要的软件包

yum install -y yum-utils  device-mapper-persistent-data lvm2

3、设置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 

4、查看docker版本

yum list docker-ce --showduplicates|sort -r  

5、安装docker

yum  install  docker-ce-18.03.1.ce -y

6、设置docker开机自动启动和启动服务

#加入开机自启
systemctl enable docker  
#启动
systemctl start docker

7、配置国内镜像

 vi /etc/docker/daemon.json 
 { 
 
     "registry-mirrors": ["http://hub-mirror.c.163.com"] 
 }

三、修改docker容器默认存储路径

1)创建docker容器存放的路径

mkdir -p /usr/docker/lib
(2)停止Docker服务并迁移数据到新目录
systemctl stop docker.service
rsync -avz /var/lib/docker/ /usr/docker/lib/
(3)创建Docker配置文件
mkdir -p /etc/systemd/system/docker.service.d/ 
vim /etc/systemd/system/docker.service.d/devicemapper.conf

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd  --graph=/usr/docker/lib/

(4)重启Docker服务

systemctl daemon-reload 
systemctl restart docker
(5)查看现在容器存放的目录
  docker info | grep "Dir"
  Docker Root Dir: /usr/docker/lib

四、安装docker-compose

1、下载

curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2、授权

chmod +x /usr/local/bin/docker-compose

 3、版本信息

docker-compose --version

第二种方法:保守的做法

当然如果是自己线上出现这种情况,还是不要使用第一种方法冲动操作了。具体步骤如下:

 1、停止docker服务。                             

systemctl stop docker; //每个liunx版本的命令不一样。

  2、创建新的docker目录,执行命令df -h,找一个大的磁盘。我的是放在/usr目录下面,我的/usr目录大小最大。 我在 /usr目录下面建了 /usr/docker/lib目录,执行的命令是:

mkdir -p /usr/docker/lib

 3、迁移/var/lib/docker目录下面的文件到 /usr/docker/lib下面                      

cp -R /var/lib/docker/* /usr/docker/lib/

    注意:如果文件内容很多的话,为了确保成功最好是一个文件一个文件的拷贝。如果在拷贝过程中报“设备上没有空间”的错误,就使用mv剪切。

 4、修改docker配置(/etc/systemd/system/docker.service.d/devicemapper.conf),在文件末添加 --graph=/home/docker/lib

devicemapper.conf文件的内容如下:                       

[Service]

    ExecStart=

    ExecStart=/usr/bin/dockerd --insecure-registry=私服地址 --graph=/usr/docker/lib

   注意:如果/etc/systemd/system/docker.service.d/devicemapper.conf,这个路径找不到的话,就新建,新建之后加入内容,没有私服地址的话就可以去掉”--insecure-registry=私服地址”。

5、重载配置,重启docker                        

systemctl daemon-reload;

systemctl restart docker;

systemctl enable docker;

 6、启动成功后,确定容器没问题后删除/var/lib/docker/目录中的文件,然后就OK了。
 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值