docker动态扩展容器空间大小

post by rocdk890 / 2016-2-19 10:45 Friday linux技术
  今天同事要在docker的jenkins容器里安装sdk,当他把他之前安装好的sdk传我时,我才发现居然有16g,docker的容器整个都才只有10个g,还好让我找到个可以动态扩展docker容器的文章,先分享给大家.
  系统:centos 6(64位)
  docker版本:1.7.1
  docker存储引擎:devicemapper
  宿主机分区格式必须是:ext2、ext3、ext4
脚本内容:
cat dynamic_modify_docker_disk.sh
#!/bin/bash
#This script is dynamic modify docker container disk
#Author Deng Lei
if [ -z $1 ] || [ -z $2 ]; then
    echo "Usage: container_name increase_capacity"
    echo "Example: I want increase 11G to test"
    echo "The command is:   sh `basename $0` test 11"
    exit 1
                                                                                                                                                        fi
if [ `docker inspect $1 &>>/dev/null &&  echo 0 || echo 1` -eq 1 ];then
    echo "The container $1 is no exist!"
    exit 1
fi
container_id=`docker inspect -f '{{ .Id }}' $1`
now_disk=`dmsetup table /dev/mapper/docker-*-$container_id|awk '{print $2}'`
disk=$(($2*1024*1024*1024/512))
if [ $disk -lt $now_disk ];then
    echo "I can't shink container $1 from $(($now_disk*512/1024/1024/1024))G to ${2}G!I only modify contanier increase disk!"
    exit 1
fi
dmsetup table /dev/mapper/docker-*-$container_id|sed "s/0 [0-9]* thin/0 $disk thin/"|dmsetup load /dev/mapper/docker-*-$container_id
dmsetup resume /dev/mapper/docker-*-$container_id
resize2fs /dev/mapper/docker-*-$container_id
if [ $? -eq 0 ];then
    echo "dynamic container $1 disk to ${2}G is success!"
else
    echo "dynamic container $1 disk to ${2}G is fail!"
fi
使用方法:
chmod + x dynamic_modify_docker_disk.sh
./dynamic_modify_docker_disk.sh [容器名] [要调整的大小]

example:
./dynamic_modify_docker_disk.sh jenkins 30

我这里把jenkins容器的空间调大了30g.
ps:这个脚本只能增大容器的空间,不能缩小,所以请考虑清楚再使用.有兴趣的可以看看下面这篇文章,他讲得更加详细些.
http://dl528888.blog.51cto.com/2382721/1606170
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-636.html

标签: 空间 docker 容器 扩大 动态增加硬盘 增加

评论: