注意:以下文档只适用于TOP接口,请谨慎使用!

文档中心 > 聚石塔

节点Docker目录存储于数据盘

更新时间:2023/05/04 访问次数:4831

一、Docker数据目录


1)运行的容器数据(包括容器内应用的日志);

2)镜像数据。


Docker的数据通过联合文件系统的方式存储到磁盘上。Docker默认的容器和镜像数据存储在/var/lib/docker目录下。您可以通过du命令查看这个目录目前占用的磁盘大小。


# du -h --max-depth=0 /var/lib/docker
7.9G    /var/lib/docker


默认的,docker数据目录存放于系统盘。当您的应用不断写日志,或者容器和镜像数量不断增加时,系统盘使用量会不断增加,当docker目录所在磁盘使用超过一定阈值时会出现Pod驱逐等异常现在,导致应用不可用,所以需要通过增加数据盘的方式对Docker的数据目录进行扩容。


二、挂载数据盘方案


根据ECS是否已经添加到集群中,可以采取不同的方案使用数据盘。


1. ECS还未添加至集群(或重新添加到集群)


添加该节点到集群,添加节点时勾选“使用数据盘”选项,集群会自动将最后一块数据盘进行格式化和分区,用于存放docker目录。


image.png


注意,如果是想重新添加到集群,操作时,请先排空节点再从集群移除节点。

排空节点请参考:点击查看


2. ECS已经添加到集群-更换docker数据盘


不需要重新添加该节点,可以将ECS上已经存在的docker目录迁移至新的数据盘。

1)创建新数据盘并挂载到ECS;

2)磁盘格式化和分区;

3)移动docker目录到新的磁盘。

① 先排空节点,点击查看

② 停止Docker Daemon和kubelet,保证迁移时的数据完整。

③ 移动Docker的目录到一个备份的目录。例如:mv /var/lib/docker /var/lib/docker_data

④ 然后把新的格式化好的磁盘挂载到/var/lib/docker/var/lib/kubelet目录。例如:


echo "/dev/xvdb1    /var/lib/container/     ext4    defaults        0 0" >>/etc/fstab
echo "/var/lib/container/kubelet /var/lib/kubelet none defaults,bind 0 0" >>/etc/fstab
echo "/var/lib/container/docker /var/lib/docker none defaults,bind 0 0" >>/etc/fstab
mkdir /var/lib/docker
mount -a


⑤ 把之前备份的Docker数据移动到新的磁盘上。例如:mv /var/lib/docker_data/* /var/lib/docker/

4)启动Docker Daemon和kubelet,命令分别是service docker startservice kubelet start

5)执行?docker ps 命令,查看容器是否丢失。

6)第2步如果排空了节点,请设置节点为“可调度”,之后才会有新的容器调度上来。


三、验证


您可以在ECS节点上执行df命令,通过查看命令执行结果中/var/lib/docker是否成功挂载到/dev/vd*1来判断数据盘是否成功挂载。若挂载成功,则无需处理。若未成功挂载,您需要按照以下步骤完成挂载。


image.png


注意,此处/dev/vd*1可以是b,c,d,e等,取决于ECS上挂载了几块数据盘,比如ECS上只挂了一个数据盘,那么docker数据目录处于/dev/vdb1

FAQ

关于此文档暂时还没有FAQ
返回
顶部