博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Linux] -Docker修改空间大小
阅读量:6014 次
发布时间:2019-06-20

本文共 2575 字,大约阅读时间需要 8 分钟。

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=1000dd 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-95f242e4fe2fef132ab1a706ebf8eecbb1c6db19547c3f12b34b76a5dee96c7eresize2fs /dev/mapper/docker-253:1-184549824-95f242e4fe2fef132ab1a706ebf8eecbb1c6db19547c3f12b34b76a5dee96c7e

完成。

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


 

 

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

1、resize_docker.sh

#!/bin/bashDATA_SIZE=$1METADATA_SIZE=$2if [ "$DATA_SIZE" = "" ]; then    DATA_SIZE=1000fiif [ "$METADATA_SIZE" = "" ]; then    METADATA_SIZE=10fi# Stop docker servicesystemctl stop docker# Resize docker data spacedd if=/dev/zero of=/var/lib/docker/devicemapper/devicemapper/data bs=1G count=0 seek=$DATA_SIZE# Resize docker metadata spacedd if=/dev/zero of=/var/lib/docker/devicemapper/devicemapper/metadata bs=1G count=0 seek=$METADATA_SIZE# Start docker servicesystemctl start docker

运行脚本方法:

sh resize_docker.sh 1000 10

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

 

2、resize_container.sh

#!/bin/bashCID=$1SIZE=$2if [ "$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模式下进行。

 

参考文献:

转载地址:http://mruqx.baihongyu.com/

你可能感兴趣的文章
只在这一刻
查看>>
jdk冲突:Unsupported major.minor version 51.0
查看>>
文件服务
查看>>
MYSQL 主从服务器配置
查看>>
mysql自动补全
查看>>
Pacpl 安装及使用
查看>>
Openstack 之 ceph更换故障磁盘
查看>>
RMAN 中delete exipired 和 delete obsolete 的区别
查看>>
《游戏安全——手游安全技术入门》读后知识点提炼
查看>>
eclipse配置struts环境遇到的错误
查看>>
微信小程序教学第二章(含视频):小程序中级实战教程之预备篇 - 封装网络请求及 mock 数据...
查看>>
联合体、结构体简析
查看>>
MongoDB集群解决方案-分片技术
查看>>
理解final
查看>>
memcached入口函数(main)解析
查看>>
iscsi 配置使用详解
查看>>
SWT笔记
查看>>
Maven
查看>>
使用throw让服务器端与客户端进行数据交互[Java]
查看>>
Spring Boot Server 配置
查看>>