如何给容器服务的Docker增加数据盘

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 我们知道Docker的数据是通过联合文件系统的方式存储到磁盘上,当需要在机器上运行的容器或者镜像的数量不断增加时,有可能磁盘的大小不再满足需求,这个时候就需要给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的数据目录增加块数据盘吧。

购买ECS数据盘,并挂载到需要扩容的机器上:

1. 通过ECS控制台购买需要的配置的云盘
2. 在ECS实例详情页->本实例磁盘->挂载磁盘中,选择刚才购买的磁盘,并记录挂载点/dev/xvd*或者/dev/vd*

登录到机器上,对刚才挂载的磁盘进行格式化:

1. 首先在机器上执行ls -l /dev/xvd*或者ls -l /dev/vd*看到和刚才记录的一致的磁盘id
2. 通过fdisk命令对磁盘进行分区,然后使用mkfs.ext4格式化磁盘,例如:

screenshot
screenshot

移动Docker的数据到新的磁盘:

0. 如果节点上有正在运行的应用不希望中断,需要首先对应用做迁移

swarm集群:https://help.aliyun.com/document_detail/48933.html
kubernetes集群: https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/

1. 首先先停止Docker daemon和kubelet(kubernetes集群),保证移动的时候数据完整,可以使用service kubelet stop(kubernetes集群)和service docker stop 命令停止
2. 先移动Docker的目录到一个备份的目录,例如:mv /var/lib/docker /var/lib/docker_data
3. 然后把新的格式化好的磁盘挂载到/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
4. 把之前备份的docker数据移动到新的磁盘上,例如:mv /var/lib/docker_data/* /var/lib/docker/

启动Docker daemon和kubelet(kubernetes集群),并检查数据位置:

1. 启动kubelet(kubernetes集群)和Docker daemon,命令分别是service kubelet start(kubernetes集群)和service docker start
2. 执行df看到/var/lib/docker挂载到了新的磁盘上

screenshot

(kubernetes集群不需要)3. docker ps看到容器没有丢失,根据需要再启动需要启动的没有restart:always标签的容器

screenshot

4. 前面迁移走的容器可以同样适用调度的方式让他们回归到这个节点上面

想了解更多容器服务的内容,请点击https://www.aliyun.com/product/containerservice

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
21天前
|
Docker 容器
进入Docker容器中
进入Docker容器中
34 2
|
1天前
|
存储 运维 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第18天】 在现代微服务架构中,Docker容器已成为部署和运行应用的标准环境。随之而来的挑战是如何有效监控这些容器的性能与健康状况,确保系统的稳定性和可靠性。本文将探讨构建一个高效稳定的Docker容器监控体系的关键技术和方法,包括日志管理、性能指标收集以及异常检测机制,旨在为运维人员提供实用的指导和建议。
6 0
|
10天前
|
Linux Docker 容器
docker 容器常用命令
docker 容器常用命令
12 0
|
10天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
14 0
|
10天前
|
存储 Linux Shell
centos 部署docker容器 安装 、基本使用方法(一)
centos 部署docker容器 安装 、基本使用方法(一)
18 0
|
13天前
|
关系型数据库 MySQL 数据安全/隐私保护
使用docker快速搭建wordpress服务,并指定域名访问
通过以上步骤,你可以使用Docker快速搭建WordPress服务,并通过指定的域名进行访问。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
19 1
|
13天前
|
Ubuntu 网络安全 数据安全/隐私保护
ubuntu篇-配置FTP服务,本机和docker安装
通过以上步骤,你可以在Ubuntu上配置FTP服务,无论是本机安装还是Docker内安装,都可以提供FTP文件传输服务。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
20 1
|
18天前
|
Kubernetes 网络协议 Docker
Docker 容器的DNS
Docker 容器的DNS
23 1
|
21天前
|
关系型数据库 MySQL Nacos
【深入浅出Nacos原理及调优】「实战开发专题」采用Docker容器进行部署和搭建Nacos服务以及“坑点”
【深入浅出Nacos原理及调优】「实战开发专题」采用Docker容器进行部署和搭建Nacos服务以及“坑点”
45 1
|
22天前
|
NoSQL 关系型数据库 MySQL
安装Docker&镜像容器操作&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio
安装Docker&镜像容器操作&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio
99 1

相关产品

  • 容器计算服务