首页 > 其他分享 >docker磁盘

docker磁盘

时间:2023-01-24 23:11:06浏览次数:43  
标签:容器 lib server1 镜像 磁盘 docker root

docker容器跑久了,其产生的日志可能会占用比较多的空间
[root@server1 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 14M 473M 3% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 2.3G 15G 14% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
overlay 17G 2.3G 15G 14% /var/lib/docker/overlay2/91ddd61b6d6aa09a8564a17ff71058e69fd13d2fdc4ee4f8f3a5a56852478174/merged

查看docker空间占用
有了docker,多数情况下,我们可以不在需要过于关心环境,但也付出一些代价,占用空间便是其中一点
[root@server1 ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 4 1 409.8MB 348.7MB (85%)
Containers 1 1 3B 0B (0%)
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B

该命令列出了 docker 使用磁盘的 4 种类型:

Images: 所有镜像占用的空间,包括拉取的镜像、本地构建的镜像
Containers: 运行中的容器所占用的空间(没运行就不占空间),其实就是每个容器读写层的空间
Local Volumes: 本地数据卷的空间
Build Cache: 镜像构建过程中,产生的缓存数据

此时可以通过下面命令清理 Docker 占用的空间。

[root@server1 ~]# docker system prune -a

该命令会删除暂停中的容器、没有关联容器的镜像、没有 tag 的镜像、没有被使用的数据卷,简单而言,没有在 run 或被使用的东西都被清理掉,注意,如果你有一些暂时暂停的容器,这个命令也会将其清理掉。

为了深入理解上述命令的作用,先讨论一下在使用 docker 镜像创建容器时,docker会创建哪些目录:

我们使用 docker 镜像创建容器时,docker会创建一些目录,如:

/var/lib/docker/containers/<容器ID> 目录,如果容器使用了默认的日志模式,那么该容器的日志会以 JSON 形式保存在此目录下。
/var/lib/docker/overlay2 目录,该目录包含容器的读写层,如果容器使用自己的文件系统保存了数据,那么这些数据就会写到此目录下。
为了更直观,弄一台干净的 Linux 服务器(刚好去年双 11 买了 Linux 服务器),演示创建容器过程中,docker 占用空间的变化。

一开始,docker 没有占用任何空间:

迁移
停止docker
[root@server1 ~]# systemctl stop docker

创建docker的新目录,地址使用 /data/docker/lib/
[root@server1 ~]# mkdir /data/docker/lib/ -p
迁移
[root@server1 ~]# cp -r /var/lib/docker /data/docker/lib/
指定新的docker目录
[root@server1 ~]# vi /lib/systemd/system/docker.service
在ExecStart加入:

--graph=/data/docker/lib/docker

或者
[root@server1 overlay2]# vi /etc/docker/daemon.json
添加

"graph": "/home/docker-rootdir"

问题二:overlay2占用大量磁盘空间

解决方式:

首先找到overlay2目录

cd /var/lib/docker/overlay2
查看文件的大小

du -h --max-depth=1

查看占用空间的pid,以及对应的容器名称
docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep "ad1c8c23ccf18ff112b179ce1bc694982d7854146fae0f5df408144ca"

解决方法(会删除对应的容器和对应镜像)
[root@server1 overlay2]# docker stop /optimistic_bassi && docker rm /optimistic_bassi && docker rmi /optimistic_bassi

标签:容器,lib,server1,镜像,磁盘,docker,root
From: https://www.cnblogs.com/xiaotao188/p/17066519.html

相关文章

  • Docker 容器添加自定义root ca
    比如如果我们基于了step-ca工具做为我们的ca机制,就会有不可信的问题,业务使用就特别不方便了,以下是一个参考配置实际上很简单就是使用update-ca-certificates更新信息......
  • docker容器日志清理
    最近发现linux(Centos7)虚拟机的空间不够了,想创建新的容器都失败。剩下不到100M。之前还有好几个G。然后每天不定期查看磁盘空间,发现不断被蚕食。今天比昨天就少了100M;然后下......
  • Docker 基础 - 1
    镜像获取镜像dockerpull查看镜像信息dockerimagesdockerinspect<imagesid>#获取镜像的详细信息搜寻镜像dockersearch删除镜像dockerrmi当一个镜像拥......
  • Docker安装PostgreSQL
    镜像地址:https://hub.docker.com/_/postgres1.拉取dockerpullpostgres2.创建dockerrun-d\-p5432:5432\--namepostgres\--restart=always......
  • Docker基础
    背景介绍Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙......
  • 远程连接Docker上的Mysql失败的解决方案
    之前VMWare虚拟机CentOS7使用DHCP,导致只要重启操作系统,网卡IP地址就改变。于是把网卡修改为手工设定IP地址,结果导致远程连接mysql出现如下错误,花了很多时间还没有解决,最终偶......
  • docker运行pm2程序
    DockerfileFROMnode:16.14.2RUNmkdir/data/apps-pv\&&[email protected]\&&npm-gipm2WORKDIR/data/appsCOPY..RUNpnpminstall\&&pnpm......
  • Docker 部署 SpringBoot 项目
    Dockerfilehouse.jar为jar包名称/data为存放路径FROMlpicanco/java11-alpineMAINTAINERchenglong<[email protected]>VOLUME/tmpRUNmkdir/dataEXPOS......
  • 在Docker上拉取一个现成的SystemC环境
    SystemC是在C++通过库拓展的一个可用于硬件电路设计的语言Docker是一种类似虚拟机的技术,但比虚拟机更方便,将一种环境所需的最小配置打包成一个image后,便可以方便地使用WS......
  • Docker部署Redis
    Docker部署Redis更新yum源[#]yumupdate安装Docker[#]yum-yinstalldocker[#]systemctlenabledocker[#]systemctlstartdocker安装Redis创建文件夹[#]mkd......