如何在GCP Container Optimized OS中提升Docker容器磁盘空间限制
GCP Container Optimized OS Docker容器磁盘空间扩容方案
前提说明
你当前使用的是4.19内核版本的GCP Container Optimized OS(COS),该系统默认将Docker数据目录/var/lib/docker挂载在容量有限的系统状态分区,默认普通用户无root权限时无法修改系统级Docker配置、调整系统分区大小。以下方案优先适配低权限场景:
无需root权限的可行方案
- 路径直接绑定挂载
COS默认开放/mnt/disks目录的普通用户读写权限,你可以先为GCP虚拟机挂载一块独立的大容量永久磁盘,格式化后挂载到/mnt/disks下的自定义目录,启动容器时直接将容器内需写入大量数据的业务目录绑定到该路径即可,示例命令:
该方式不会修改Docker全局配置,写入容器对应目录的数据直接落到额外磁盘,完全不受Docker默认存储分区的容量限制。docker run -v /mnt/disks/your_disk_name/container_data:/path/inside/container your_image_name - 自定义Docker卷挂载
若需要多容器共享大容量存储,可以先基于额外磁盘路径创建自定义Docker卷,示例命令:
启动容器时挂载该卷即可:docker volume create --opt device=/mnt/disks/your_disk_name/shared_volume --opt o=bind shared_data_voldocker run -v shared_data_vol:/path/inside/container your_image_name
可申请到有限root权限时的方案
- 迁移Docker全局数据目录
停止Docker服务后将原有Docker数据目录整体迁移到额外磁盘,修改Docker配置指定新的数据根目录即可,操作命令如下:
配置生效后,所有镜像、容器、默认卷都会存储在额外磁盘,无需再单独为每个容器配置挂载。sudo systemctl stop docker sudo cp -a /var/lib/docker /mnt/disks/your_disk_name/docker_root sudo echo '{"data-root": "/mnt/disks/your_disk_name/docker_root"}' > /etc/docker/daemon.json sudo systemctl start docker - 扩容系统状态分区
若你的虚拟机系统盘仍有剩余未分配空间,可以直接扩容系统状态分区,命令如下:
该方式扩容上限受系统盘总容量限制,灵活度低于挂载额外独立磁盘。sudo resize2fs /dev/root
注意:COS系统默认开启系统分区只读保护,无root权限时所有涉及修改系统文件、全局服务配置的操作均无法执行,优先推荐使用绑定挂载或自定义卷的方式规避权限限制。
内容的提问来源于stack exchange,提问作者nCoder
相关产品推荐
相关产品推荐

