Docker修改空间大小

news/2024/7/4 9:12:32

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

-Docker修改空间大小

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

池空间大小默认为:100G

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

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

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

 

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

service docker stop

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

docker -d

 

 

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

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池空间大小:

docker info

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

 

二、修改容器空间大小:

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

cd /dev/mapper/

 

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

docker ps -a

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

 

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

dmsetup table

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

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

 

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

 

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

echo 0 88080384 thin 253:7 11 | dmsetup load docker-253:1-184549824-95f242e4fe2fef132ab1a706ebf8eecbb1c6db19547c3f12b34b76a5dee96c7e

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

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

可以使用命令打印:

echo $((42*1024*1024*1024/512))

接着使用命令:

dmsetup resume docker-253:1-184549824-95f242e4fe2fef132ab1a706ebf8eecbb1c6db19547c3f12b34b76a5dee96c7e
resize2fs /dev/mapper/docker-253:1-184549824-95f242e4fe2fef132ab1a706ebf8eecbb1c6db19547c3f12b34b76a5dee96c7e

完成。

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

 

 

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

1、resize_docker.sh

复制代码

#!/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

复制代码

运行脚本方法:

sh resize_docker.sh 1000 10

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

 

2、resize_container.sh

复制代码

#!/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

复制代码

运行脚本方法:

sh resize_container.sh 459fd505311ad364309940ac24dcdb2bdfc68e3c3b0f291c9153fb54fbd46771 100

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

 

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

 

参考文献:

转载于:https://my.oschina.net/u/3367404/blog/1935879


http://www.niftyadmin.cn/n/2815734.html

相关文章

搞定JVM垃圾回收就是这么简单

上文回顾:《可能是把Java内存区域讲的最清楚的一篇文章》 写在前面 本节常见面试题: 问题答案在文中都有提到 如何判断对象是否死亡(两种方法)。简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用…

用注册机给keil4 注册 ERROR R206: NO REGISTRY ACCESS, ADMINISTRATION RIGHTS REQUIRED

ERROR R206: NO REGISTRY ACCESS, ADMINISTRATION RIGHTS REQUIRED 【翻译】错误R206:没有注册使用权,需要管理员权限。 解决方法: 用“管理员的身份运行”启动keil 才可以注册

React中拓展Jquery组件

1、实现 import $ from "jquery"; ;(function (WB) { WB.extend({ //插件名称wbalert: function() {alert(我是一个插件);}}); })($);export default $2、使用 import WB from "./wbjquery"componentDidMount() {(WB as any).wbalert() }

测试中常用符号代表意思

Pass(OK)通过——测试通过 POK部分通过——多条测试用例部分通过 Fail(NG)未通过——测试出问题,通常后面会备注问题细节 NT(Not Test)未测试——本轮不测试该功能跳过 Block阻塞——因某些特殊原因阻塞 NA(Not Available)无此功能——产品并无测试用例所对应功…

windbg分析BSOD dump文件实战

2019独角兽企业重金招聘Python工程师标准>>> 今天刚好手边有一个系统蓝屏的dump文件,下面一步一步来找到出错的地方。 1.用windbg打开dump文件,设置好符号路径等。 已经基本确定了是哪个驱动引起的问题。 2.执行!analyze -v命令, …

使用node构建简单的cli工具

代码 1、在package.json中增加 {"name": "test","version": "1.0.0","bin": {"kkb": "./bin/kkb.js"},... }2、终端中执行 kkb init mytest3、具体的代码 kkb.js #!/usr/bin/env node // 指定解释…

Sourceinsight4.0关联svn自定义控件设置

Source Insight快速查看svn log diff 创建快捷键配置的步骤: 1.打开sourceinsight,关闭所有工程,打开Base工程 2.我们需要创建一个以.em结尾的文件放到Base工程的目录下,并添加进Base工程里 3.将下面附件代码内容复制到该以.em…

FLASH、eMMC、SATA、SSD、ROM、RAM、Cache概念对比解析

Flash(快闪存储器) 快闪存储器(英语:Flash Memory),是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器。这种科技主要用于一般性数据存储,以及在电脑与其他数字产品间交换传输数…