aboutsummaryrefslogtreecommitdiff
path: root/debian-container/lib/common.sh
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-10-29 00:21:41 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-10-29 00:21:41 +0800
commit7ab30ab3ee572de1be2afc3083e4a28b594b1cba (patch)
treef65683c722d0abc30a17a9a8e4485f9ec5fd1f8b /debian-container/lib/common.sh
parent4e6376cfc58e73fc14ddb691c0fac9da425efac9 (diff)
downloadrutils-7ab30ab3ee572de1be2afc3083e4a28b594b1cba.tar.gz
rutils-7ab30ab3ee572de1be2afc3083e4a28b594b1cba.tar.xz
Add named container instances with exec, status, list, and delete commands.
Signed-off-by: Richard Qin <richard.qin.x@gmail.com>
Diffstat (limited to 'debian-container/lib/common.sh')
-rw-r--r--debian-container/lib/common.sh34
1 files changed, 28 insertions, 6 deletions
diff --git a/debian-container/lib/common.sh b/debian-container/lib/common.sh
index 19bbd78..12a318b 100644
--- a/debian-container/lib/common.sh
+++ b/debian-container/lib/common.sh
@@ -24,23 +24,45 @@ dc_acquire_lock() {
flock -n 9 || dc_die 'Debian 容器已经在运行或正在初始化。'
}
+dc_select_instance() {
+ local name=$1
+
+ [[ "$name" =~ ^[A-Za-z0-9][A-Za-z0-9._-]*$ ]] || dc_die "实例名称无效:$name"
+ DC_INSTANCE=$name
+ DC_INSTANCE_DIR="$DC_INSTANCES/$DC_INSTANCE"
+ DC_IMAGE="$DC_INSTANCE_DIR/rootfs.ext4"
+ DC_ROOT="$DC_INSTANCE_DIR/root"
+}
+
+dc_list() {
+ local path
+
+ [[ -d "$DC_INSTANCES" ]] || return 0
+ for path in "$DC_INSTANCES"/*; do
+ [[ -d "$path" ]] || continue
+ basename -- "$path"
+ done
+}
+
dc_usage() {
cat <<EOF
用法:sudo bash $DC_SCRIPT <命令>
命令:
base-create [路径] 下载一次并创建 debootstrap 软件包 tarball
- init [选项] 创建 Debian 容器镜像
- enter 进入容器
- delete 删除容器镜像
+ init NAME [选项] 创建指定名称的容器镜像
+ enter NAME 进入指定容器
+ exec NAME -- CMD 在指定容器中执行命令
+ status NAME 查看指定容器状态
+ list 列出所有容器
+ delete NAME 删除指定容器
init 选项:
--tarball PATH 从本地 tarball 初始化,跳过软件包下载
环境变量:
- DEBIAN_IMAGE 镜像路径(默认:当前目录/rootfs.ext4)
- DEBIAN_ROOT 挂载目录(默认:当前目录/debian-root)
- DEBIAN_LOCK_FILE 锁文件路径
+ DEBIAN_INSTANCES 实例目录(默认:当前目录/instances)
+ DEBIAN_LOCK_FILE 锁文件路径(默认:/run/lock/debian-container.lock)
DEBIAN_TARBALL 基础 tarball(默认:当前目录/debian-base.tar.gz)
DEBIAN_SUITE Debian 版本(默认:stable)
DEBIAN_MIRROR Debian 镜像地址