前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker修改空间大小 原

Docker修改空间大小 原

作者头像
拓荒者
发布2019-03-11 11:09:21
3.3K0
发布2019-03-11 11:09:21
举报
文章被收录于专栏:运维经验分享运维经验分享

Docker默认空间大小分为两个,一个是池空间大小,另一个是容器空间大小。

池空间大小默认为:100G

容器空间大小默认为是:10G

所以修改空间大小也分为两个:

这里使用centos下的yum进行安装的Docker。

首先,修改空间大小,必需使Docker运行在daemon环境下,即先停止正在运行的docker服务:

代码语言:javascript
复制
service docker stop

然后使用命令使用daemon环境下运行docker:

代码语言:javascript
复制
docker -d

一、修改池空间大小方法:

代码语言:javascript
复制
dd if=/dev/zero of=/var/lib/docker/devicemapper/devicemapper/data bs=1G count=0 seek=1000
dd if=/dev/zero of=/var/lib/docker/devicemapper/devicemapper/metadata bs=1G count=0 seek=10

上面的1000为1TB大小,即为数据池空间大小为1TB,而10则为Metadata的空间大小,10GB

从运行完后,使用命令查看docker池空间大小:

代码语言:javascript
复制
docker info

可以看到池空间已经被设置为data=1TB和metadata=10GB

二、修改容器空间大小:

1、首先先进入目录(使用yum安装docker的默认目录):

代码语言:javascript
复制
cd /dev/mapper/

2、使用命令查看容器是否正在运行。

代码语言:javascript
复制
docker ps -a

这里可以看到容器test正在运行。

3、使用命令查看容器卷:

代码语言:javascript
复制
dmsetup table

可以看到20971520,这个是卷空间值,我们需要修改的就是这里。

其它的值要记下:253:7 11

4、使用ls或ll命令查看在/dev/mapper/目录下的文件是否存在。(这步很重要,因为非正在运行的Container是不会有这个文件的)

5、使用命令修改容器空间大小:

代码语言:javascript
复制
echo 0 88080384 thin 253:7 11 | dmsetup load docker-253:1-184549824-95f242e4fe2fef132ab1a706ebf8eecbb1c6db19547c3f12b34b76a5dee96c7e

这里的88080384会替换原20971520值,意思为:42GB。

计数公式为:42*1024*1024*1024/512

可以使用命令打印:

代码语言:javascript
复制
echo $((42*1024*1024*1024/512))

接着使用命令:

代码语言:javascript
复制
dmsetup resume docker-253:1-184549824-95f242e4fe2fef132ab1a706ebf8eecbb1c6db19547c3f12b34b76a5dee96c7e
resize2fs /dev/mapper/docker-253:1-184549824-95f242e4fe2fef132ab1a706ebf8eecbb1c6db19547c3f12b34b76a5dee96c7e

完成。

然后进入容器的终端,使用命令df -h即可看到修改后的容器空间:

写了个shell脚本,用于修改池、容器空间使用:

1、resize_docker.sh

复制代码
复制代码
代码语言:javascript
复制
#!/bin/bash

DATA_SIZE=$1
METADATA_SIZE=$2

if [ "$DATA_SIZE" = "" ]; then
    DATA_SIZE=1000
fi

if [ "$METADATA_SIZE" = "" ]; then
    METADATA_SIZE=10
fi

# Stop docker service
systemctl stop docker

# Resize docker data space
dd if=/dev/zero of=/var/lib/docker/devicemapper/devicemapper/data bs=1G count=0 seek=$DATA_SIZE

# Resize docker metadata space
dd if=/dev/zero of=/var/lib/docker/devicemapper/devicemapper/metadata bs=1G count=0 seek=$METADATA_SIZE

# Start docker service
systemctl start docker
复制代码
复制代码

运行脚本方法:

代码语言:javascript
复制
sh resize_docker.sh 1000 10

将会把docker的池修改为data=1TB,metadata=10GB

2、resize_container.sh

复制代码
复制代码
代码语言:javascript
复制
#!/bin/bash

CID=$1
SIZE=$2

if [ "$CID" != "" ] && [ "$SIZE" != "" ]; then
    DEV=$(basename $(echo /dev/mapper/docker-*-$CID));
    dmsetup table $DEV | sed "s/0 [0-9]* thin/0 $(($SIZE*1024*1024*1024/512)) thin/" | dmsetup load $DEV;
    dmsetup resume $DEV;
    resize2fs /dev/mapper/$DEV;
  echo "Resize $CID completed."
else
    echo "Usage: sh resize_container 459fd505311ad364309940ac24dcdb2bdfc68e3c3b0f291c9153fb54fbd46771 100";
fi
复制代码
复制代码

运行脚本方法:

代码语言:javascript
复制
sh resize_container.sh 459fd505311ad364309940ac24dcdb2bdfc68e3c3b0f291c9153fb54fbd46771 100

将容器459fd505311ad364309940ac24dcdb2bdfc68e3c3b0f291c9153fb54fbd46771的空间修改为100GB

注:修改空间,必需是在docker的daemon模式下进行。

参考文献:

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018/08/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档