现象详情:AGX开机黑屏闪动,无法进入启动界面
原因:AGX中docker产生日志数据过多,导致root下空间被完全占用无法启动
解决思路:
• 使用无线键盘的情况下,使用ctrl+alt+f1-f5均无法进入命令行,后发现是应为内存不足的原因导致无线键盘驱动无法加载,后更换有线键盘后,可以进入命令行界面,但是仍然闪动,输入用户密码后登录删除一些占用内存的文件后,终端不再闪动,可以进行操作。
• 进入命令行界面后,继续定位发现/var/lib/docker/overlay2占用内存空间过多,导致root下内存空间被完全占用。采用将/var/lib/docker/ 同步到挂载的512G的数据盘下,并更改docker的执行路径
4 迁移 /var/lib/docker 目录。
4.1 停止docker服务。
systemctl stop docker
4.2 创建新的docker目录,执行命令df -h,找一个大的磁盘。 我在 /home目录下面建了 /home/docker/lib目录,执行的命令是:
mkdir -p /home/docker/lib
4.3 迁移/var/lib/docker目录下面的文件到 /home/docker/lib:
rsync -avz /var/lib/docker /home/docker/lib/
4.4 配置 /etc/systemd/system/docker.service.d/devicemapper.conf。查看 devicemapper.conf 是否存在。如果不存在,就新建。

  1. sudo mkdir -p /etc/systemd/system/docker.service.d/
  2. sudo vi /etc/systemd/system/docker.service.d/devicemapper.conf
    4.5 然后在 devicemapper.conf 写入:(同步的时候把父文件夹一并同步过来,实际上的目录应在 /home/docker/lib/docker )
    [Service]
  3. ExecStart=
  4. ExecStart=/usr/bin/dockerd --graph=/home/docker/lib/docker
    4.6 重新加载 docker
  5. systemctl daemon-reload
  6. systemctl restart docker
  7. systemctl enable docker
    4.7 为了确认一切顺利,运行

docker info

命令检查Docker 的根目录.它将被更改为 /home/docker/lib/docker

  1. Docker Root Dir: /home/docker/lib/docker
  2. Debug Mode (client): false
  3. Debug Mode (server): false
  4. Registry: https://index.docker.io/v1/

4.8 启动成功后,再确认之前的镜像还在:
linlf@dacent:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
AAA/AAA v2 7331b8651bcc 27 hours ago 3.85GB
BBB/BBB v1 da4a80dd8424 28 hours ago 3.47GB
4.9 确定容器没问题后删除/var/lib/docker/目录中的文件。
• 此种方法并未解决根本问题,根本问题还在于减少docker日志所占的空间
对标准输入日志大小与数量进行限制
方式一:项目中已使用-v的方式挂载项目输出日志文件,因此对容器运行日志没有了需求,减少日志文件对存储空间的占用,以下配置分别为日志文件最大容量、最大日志文件数。
docker run … --log-opt max-size=10m --log-opt max-file=1

方式二:在docker的配置文件中进行 全局修改:新建或修改/etc/docker/daemon.json,添加log-dirver和log-opts参数
{
“log-driver”:“json-file”,
“log-opts”: {“max-size”:“10m”, “max-file”:“1”}
}

重启docker的守护线程
systemctl daemon-reload
systemctl restart docker

注意:设置的日志大小规则,只对新建的容器有效

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐