aboutsummaryrefslogtreecommitdiff
path: root/debian-container/lib/container.sh
diff options
context:
space:
mode:
Diffstat (limited to 'debian-container/lib/container.sh')
-rw-r--r--debian-container/lib/container.sh39
1 files changed, 34 insertions, 5 deletions
diff --git a/debian-container/lib/container.sh b/debian-container/lib/container.sh
index 2c0aaad..eee6d76 100644
--- a/debian-container/lib/container.sh
+++ b/debian-container/lib/container.sh
@@ -4,6 +4,7 @@
dc_init() {
local tarball=
+ local size=$DC_SIZE
while (($# > 0)); do
case "$1" in
@@ -12,6 +13,11 @@ dc_init() {
tarball=$2
shift 2
;;
+ --size)
+ (($# >= 2)) || dc_die '--size 需要一个大小。'
+ size=$2
+ shift 2
+ ;;
--help|-h)
dc_usage
return 0
@@ -33,9 +39,7 @@ dc_init() {
dc_die "实例已存在:$DC_INSTANCE。请使用 enter 进入,避免覆盖容器数据。"
fi
- mkdir -p "$DC_INSTANCE_DIR" "$DC_ROOT"
- truncate -s 3G "$DC_IMAGE"
- mkfs.ext4 -F -q -L DEBIAN_CONTAINER "$DC_IMAGE"
+ dc_create_image "$size"
if [[ -n "$tarball" ]]; then
unshare --mount --propagation private -- bash "$DC_SCRIPT" _init "$DC_INSTANCE" "$tarball"
else
@@ -44,6 +48,32 @@ dc_init() {
echo "初始化完成。执行 sudo bash $DC_SCRIPT enter $DC_INSTANCE 进入容器。"
}
+dc_resize() {
+ local size=
+
+ while (($# > 0)); do
+ case "$1" in
+ --size)
+ (($# >= 2)) || dc_die '--size 需要一个大小。'
+ size=$2
+ shift 2
+ ;;
+ --help|-h)
+ dc_usage
+ return 0
+ ;;
+ *)
+ dc_die "未知的 resize 选项:$1"
+ ;;
+ esac
+ done
+
+ [[ -n "$size" ]] || dc_die 'resize 必须指定 --size。'
+ [[ -f "$DC_IMAGE" ]] || dc_die '没有找到镜像,请先运行 init。'
+ dc_resize_image "$size"
+ echo "实例已扩容:$DC_INSTANCE,新的大小为 $size"
+}
+
dc_init_rootfs() {
local tarball=${1:-}
local -a include_packages=()
@@ -236,9 +266,8 @@ dc_status() {
echo "目录:$DC_INSTANCE_DIR"
if [[ -f "$DC_IMAGE" ]]; then
echo '镜像:存在'
- else
- echo '镜像:不存在'
fi
+ dc_status_image
}
dc_delete() {