开发者社区 > 云原生 > 容器服务 > 正文

节点管理如何为容器服务的Docker增加数据盘?

节点管理如何为容器服务的Docker增加数据盘?

展开
收起
小天使爱美 2020-03-31 15:01:22 819 0
1 条回答
写回答
取消 提交回答
  • 本文介绍如何为Docker 数据目录挂载数据盘。挂载数据盘可以扩容Docker数据目录,从而当在机器上运行的容器或者镜像数量不断增加时,保证有足够的磁盘空间可以满足使用需求。

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

    du -h --max-depth=0 /var/lib/docker

    7.9G /var/lib/docker 更换Docker的数据盘 很多Docker镜像较大,因此可能几个镜像就会占用大量磁盘空间。较大的镜像或较多的容器,都会导致磁盘空间的不足。为了满足您增加镜像或容器的需求,您需要为Docker的数据目录增加数据盘。

    增加数据盘 完成以下步骤,为Docker的数据目录增加数据盘:

    创建ECS数据盘,并挂载到需要扩容的机器上。请参见创建按量付费云盘。 通过云服务器 ECS 控制台创建需要配置的云盘。 单击左侧导航栏中的实例。 单击目标ECS实例ID,进入实例详情页。 单击左侧导航栏中的本实例磁盘。 单击右上角的挂载云盘。 在弹出的对话框中,选择创建的磁盘作为目标磁盘。单击确定。 单击执行挂载,挂载新磁盘到目标ECS实例,并记录挂载点/dev/xvd或者/dev/vd。 登录ECS实例,对刚才挂载的磁盘进行格式化。 执行ls -l /dev/xvd或者ls -l /dev/vd命令,验证是否和上述步骤中记录的挂载点一致。 通过fdisk命令对磁盘进行分区,然后使用mkfs.ext4命令格式化磁盘。 格式化磁盘 移动Docker数据到新的磁盘。 如果不希望中断节点上正在运行的应用,您需要对应用进行迁移。迁移swarm集群,请参见指定多节点调度。迁移Kubernetes集群,请参见Safely Drain a Node while Respecting Application SLOs。 停止Docker Daemon和kubelet,保证迁移时的数据完整。可以使用service kubelet stop和service docker stop 命令进行停止。 移动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/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/。 启动Docker Daemon和kubelet,并检查数据位置。 启动Docker Daemon和kubelet,命令分别是service docker start和service kubelet start。 执行df命令,可看到/var/lib/docker挂载到了新的磁盘上。如果需要启动Kubernetes集群,请跳过此步骤。 启动集群 执行 docker ps命令,查看容器是否丢失。根据需要,重启相关容器。如没有设置restart:always标签的容器。 设置标签 您可以通过调度的方式使被迁移走的容器回归到这个节点上来。 更多容器服务的相关内容,请参见容器服务。

    2020-03-31 15:46:41
    赞同 展开评论 打赏

国内唯一 Forrester 公共云容器平台领导者象限。

相关产品

  • 容器计算服务
  • 相关电子书

    更多
    聚石塔电商云容器服务应用和实践 立即下载
    基于阿里云容器服务 实现Serverless服务 立即下载
    容器加速企业创新阿里云容器服务 立即下载