docker容器存放目录磁盘空间满了,转移数据修改Docker默认存储位置
原文:docker容器存放目录磁盘空间满了,转移数据修改Docker默认存储位置
今天在Liunx服务器上重启docker的时候,发现容器启动不了了,报的错误是:"ERROR:cannot create temporary directory!"。我的猜测应该就是磁盘空间满了,于是执行命令"df -h",出来的结果是 挂载点/var/lib/docker/overlay/ 已用%为100%,真的是磁盘空间用完了。
docker system prune 可一次性清理多个未使用对象
du -h --max-depth=1 查看内存最大
我不理解的是我的容器有配置数据卷呀,容器里面动态增长的数据例如上传的图片、产生的日志都是放在数据卷里面的,照常来说是不会导致容器满了呀,后面问了公司的美女,美女说让我执行命令:docker ps -s ,看看容器大小是不是太大了,如果是太大了应该就是数据卷没有设置好。按照美女说的执行了,发现容器大小跟我第一次运行容器的大小一样,那就说明数据卷是设置成功了。然后就继续问美女咯,美女问docker是谁装的,我回到说是我自己安装的并且还是采用离线的方式安装的,美女就说那你就是docker默认目录没有改了,docker默认目录空间太小了,用不了多久就会满了。docker中默认存放镜像和容器的目录是:/var/lib/docker/,就是上面我说的挂载已经满了的家伙,那既然找到原因了,那就解决呗。解决办法就是迁移默认目录/var/lib/docker下面的所有文件到新的目录下面,然后将docker存放镜像和容器的目录改为新的目录。
我的系统是Centos7,解决的具体步骤如下:
1、停止docker服务。
systemctl stop docker; //每个liunx版本的命令不一样。
2、创建新的docker目录,执行命令df -h,找一个大的磁盘。
我的是放在/home目录下面,我的/home目录大小有900G。
我在 /home目录下面建了 /home/docker/lib目录,
执行的命令是:mkdir -p /home/docker/lib
3、迁移/var/lib/docker目录下面的文件到 /home/docker/lib下面
cp -R /var/lib/docker/* /home/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=/home/docker/lib
注意:如果/etc/systemd/system/docker.service.d/devicemapper.conf,这个路径找不到的话,就新建,新建之后加入内容,没有私服地址的话就可以去掉”--insecure-registry=私服地址”。
方法一、软链接(推荐)
默认情况下Docker的存放位置为:/var/lib/docker
可以通过下面命令查看具体位置:
sudo docker info | grep "Docker Root Dir"
解决这个问题,最直接的方法当然是挂载分区到这个目录,但是我的数据盘还有其他东西,这肯定不好管理,所以采用修改镜像和容器的存放路径的方式达到目的。
这个方法里将通过软连接来实现。
首先停掉Docker服务:
systemctl restart docker或者service docker stop
然后移动整个/var/lib/docker目录到目的路径:
mv /var/lib/docker /root/data/docker
ln -s /root/data/docker /var/lib/docker
这时候启动Docker时发现存储目录依旧是/var/lib/docker,但是实际上是存储在数据盘的,你可以在数据盘上看到容量变化。
方法三、system下创建配置文件
在/etc/systemd/system/docker.service.d 目录下创建一个Drop-In文件“docker.conf”,默认 docker.service.d 文件夹不存在。所以你必须先创建它。
创建Drop-In 文件的原因,是我们希望Docker 服务,使用docker.conf文件中提到的特定参数,将默认服务所使用的位于/lib/systemd/system/docker.service文件中的参数进行覆盖。如果你想深入了解Drop-In,请阅读system.unit文档
定义新的存储位置现在打开docker.conf增加如下内容:
# sudo vi /etc/systemd/system/docker.service.d/docker.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph="/mnt/new_volume" --storage-driver=devicemapper
保存并退出VI编辑器,/mnt/new_volume 是新的存储位置,而devicemapper是当前docker所使用的存储驱动。如果你的存储驱动有所不同,请输入之前第一步查看并记下的值。Docker官方文档中提供了更多有关各种存储驱动器的信息。现在,你可以重新加载服务守护程序,并启动Docker服务了。这将改变新的镜像和容器的存储位置。
# sudo systemctl daemon-reload
# sudo systemctl start docker
为了确认一切顺利,运行 # docker info 命令检查Docker 的根目录.它将被更改为/mnt/new_volume
5、重载配置,重启docker
systemctl daemon-reload;
systemctl restart docker;
systemctl enable docker;
6、启动成功后,确定容器没问题后删除/var/lib/docker/目录中的文件,然后就OK了。
docker容器存放目录磁盘空间满了,转移数据修改Docker默认存储位置的更多相关文章
- [转帖]Docker 清理占用的磁盘空间
Docker(二十七)-Docker 清理占用的磁盘空间 https://www.cnblogs.com/zhuochong/p/10076599.html docker system docker ...
- Docker(二十七)-Docker 清理占用的磁盘空间
1. docker system命令 docker system df命令,类似于Linux上的df命令,用于查看Docker的磁盘使用情况: docker system dfTYPE TOTAL A ...
- linux磁盘空间满了 但是没有大文件
很常见的一个问题 linux磁盘空间满了 但是没有大文件 解决思路: 1.用df 检查发现/根目录可用空间为0 [root@/]#df -h 2.用du检查发现各目录占用的空间都很少,有约3G的空间莫 ...
- ORA-19502: write error on file "", blockno (blocksize=)/linux下磁盘空间满了解决办法--Virtualbox
今天,在测试环境启动数据库时,报错: SQL> startup; ORACLE instance started. Total System Global Area 285212672 byt ...
- 磁盘空间满了之后MySQL会怎样
大多数用户在对于磁盘进行分区的时候都是习惯性的不给系统盘预留很大空间,其实这并不是一个好习惯.因为系统分区并不像我们想象的那样会仅仅安装一个操作系统,系统分区多数还是会承载操作系统主要应用软件安装任务 ...
- oracle服务器硬盘磁盘空间满了
问题描述:oracle服务器硬盘磁盘空间满了,没有空间写入数据: 解决思路: a.服务器是虚拟机还是实体机? 虚拟机,->物理机上有空间直接给它扩容,再给数据库的相关表空间添加文件就可: 实体机 ...
- docker常用命令,及进入Tomcat的WebApps发布目录(就是进入docker容器后台目录)
docker常用命令,及进入Tomcat的WebApps发布目录(就是进入docker容器后台目录) 一.常用命令 1.显示所有的容器,包括未运行的 docker ps -a 2.启动容器.注 ...
- 安装VM-TOOLS,解压tar包时提示目录磁盘空间不足
在虚拟机里安装了ubuntu-18.04.4-desktop-amd64,安装VM-TOOLS,解压tar包时提示目录磁盘空间不足. 解决方法一: 打开terminal,输入:sudo apt ins ...
- Linux下正确修改Docker镜像和容器的默认存储位置,亲测有效
我们通过 yum 的方式安装完Docker环境后,它默认的存储位置是 /var/lib/docker,默认的 pid 存放位置是 /var/run/docker.pid. 如果仅仅是做测试,我们可能没 ...
随机推荐
- 如何用一个app操作另外一个app.比如微信群控那样的
如何实现一个app.控制另外的app,比如市面上群控微信的,是用测试工具的原理?还是什么模拟点击的原理? 如何用一个app操作另外一个app.比如微信群控那样的 >> android这个答 ...
- ActiveMQ学习笔记(18)----Message高级特性(二)
1. Blob Message 有些时候,我们需要传递Blob(Binary Large Objects)消息,在5.14之前,(5.12和5.13需要在jetty.xml中手动开启)可以按照如下的方 ...
- 页面加载完成触发input[type="file"]控件问题
由于浏览器厂家的限制,不同的浏览器不开放页面加载完成就允许触发input[type="file"]控件 测试 Chrome .火狐 .IE .微信客户端QQ =>桌面端: C ...
- POJ-3436 ACM Computer Factory 最大流 为何拆点
题目链接:https://cn.vjudge.net/problem/POJ-3436 题意 懒得翻,找了个题意. 流水线上有N台机器装电脑,电脑有P个部件,每台机器有三个参数,产量,输入规格,输出规 ...
- BZOJ 2794 [Poi2012]Cloakroom(离线+背包)
2794: [Poi2012]Cloakroom Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 406 Solved: 241[Submit][St ...
- HDFS架构与原理
HDFS HDFS 全称hadoop分布式文件系统,其最主要的作用是作为 Hadoop 生态中各系统的存储服务 特点 优点 • 高容错.高可用.高扩展 -数据冗余多副本,副本丢失后自动恢复 -Name ...
- apache源码编译安装
源码安装apche 下载apache的源码包文件 访问http://mirror.bit.edu.cn/apache/httpd/,复制如下gz文件的链接地址,并使用wget下载到本地 wget -P ...
- linux指令--用户和工作组管理
>>前言 Linux是一个多用户.多任务的操作系统,Linux系统的初衷之一就是满足多用户同时工作的需求,因此,linux需要具备很好的安全性,需要对用户进行管理,用户又分几种,管理 ...
- LaTeX 简介与安装
1 LaTeX 简介 Leslie Lamport 开发的 LaTeX 是当今世界上最流行和使用最为广泛的TeX格式.它构筑在Plain TeX的基础之上,并加进了很多的功能以使得使用者可以更为方便的 ...
- ORACLE数据库字符集处理
简介: ORACLE数据库字符集,即Oracle全球化支持(Globalization Support),或即国家语言支持(NLS)其作用是用本国语言和格式来存储.处理和检索数据.利用全球化支持,OR ...