解决办法"/>
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 .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": [""] }
三、修改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 .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了。
更多推荐
Docker磁盘空间满的解决办法
发布评论