Skip to content

oneclickvirt/podman

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

podman

Hits

基于 Podman 的容器环境一键安装与管理脚本

支持一键安装 Podman 运行时,并开设基于本仓库编译镜像的各种 Linux 容器(提供 SSH 访问),支持 IPv6、端口映射、资源限制等。

说明

  • 使用各发行版官方软件包安装 Podman(无守护进程,daemonless 架构)
  • 使用本仓库自编译的基础镜像(存储在 GitHub Releases),优先离线加载,无法获取时回退到 ghcr.io 镜像
  • 支持系统:Ubuntu 22.04、Debian 12、Alpine、AlmaLinux 9、RockyLinux 9、OpenEuler 22.03
  • 支持架构:amd64、arm64

安装 Podman 环境

bash <(wget -qO- https://raw.githubusercontent.com/oneclickvirt/podman/main/podmaninstall.sh)

无交互安装可使用:

export noninteractive=true
bash <(wget -qO- https://raw.githubusercontent.com/oneclickvirt/podman/main/podmaninstall.sh)

可选环境变量:

变量 说明 默认值
noninteractive 设为 true 时跳过所有交互提示 false
WITHOUTCDN 设为 true 时禁用 CDN 探测与加速 false
NEED_DISK_LIMIT 是否启用 btrfs 容器磁盘限制 n
PODMAN_INSTALL_PATH Podman 存储路径 /var/lib/containers/storage
PODMAN_POOL_SIZE btrfs loop 存储池大小 GB 20
PODMAN_LOOP_FILE btrfs loop 镜像文件路径 /opt/podman-pool.img

开设单个容器

# 下载脚本
wget -q https://raw.githubusercontent.com/oneclickvirt/podman/main/scripts/onepodman.sh
chmod +x onepodman.sh

# 用法:
# ./onepodman.sh <name> <cpu> <memory_mb> <password> <sshport> <startport> <endport> [ipv6:y/n] [system] [disk_gb]

# 示例: 创建名为 ct1 的 Debian 容器,1核 512MB,SSH端口25000,额外端口34975-35000
./onepodman.sh ct1 1 512 MyPassword 25000 34975 35000 n debian 0
参数 说明 默认值
name 容器名称 test
cpu CPU 核数(支持 0.5 等) 1
memory_mb 内存限制(MB) 512
password root 密码 123456
sshport SSH 端口(宿主机→容器 22) 25000
startport 公网端口范围起始 34975
endport 公网端口范围结束 35000
ipv6 是否分配独立 IPv6(y/n) n
system 镜像系统 debian
disk_gb 磁盘限制 GB(0=不限制) 0

支持的 system 参数: ubuntu / debian / alpine / almalinux / rockylinux / openeuler

批量开设容器

wget -q https://raw.githubusercontent.com/oneclickvirt/podman/main/scripts/create_podman.sh
chmod +x create_podman.sh
./create_podman.sh

交互式脚本,自动递增容器名(ct1, ct2, ...)、SSH 端口、公网端口,容器信息记录到 ctlog 文件。

无交互批量创建示例:

export noninteractive=true
export PODMAN_CREATE_COUNT=3
export PODMAN_MEMORY_MB=512
export PODMAN_CPU=1
export PODMAN_SYSTEM=debian
export PODMAN_IPV6=n
./create_podman.sh

批量创建时支持的环境变量:

变量 说明 默认值
PODMAN_CREATE_COUNT 新增容器数量,也兼容 PODMAN_CREATE_NUMS 1
PODMAN_MEMORY_MB 每个容器内存 MB 512
PODMAN_CPU 每个容器 CPU 核数 1
PODMAN_DISK_GB 每个容器磁盘限制 GB,仅 btrfs 可用 0
PODMAN_SYSTEM 容器系统 debian
PODMAN_IPV6 是否分配独立 IPv6 n
PODMAN_CONTAINER_PREFIX 容器名前缀 ct
PODMAN_CONTAINER_START_NUM 第一个容器编号 从 ctlog 续接
PODMAN_START_SSH_PORT 第一个 SSH 宿主机端口 从 ctlog 续接
PODMAN_PUBLIC_PORT_START 第一个公网映射端口 从 ctlog 续接

查看与管理容器

podman ps -a                  # 查看所有容器
podman exec -it <name> bash   # 进入容器(bash 系统)
podman exec -it <name> sh     # 进入容器(alpine)
podman logs <name>            # 查看容器日志
podman rm -f <name>           # 删除单个容器
podman images                 # 查看所有镜像
podman rmi <image>            # 删除镜像

卸载(完整清理)

一键卸载 Podman 全套环境,包括所有容器、镜像、网络、辅助文件:

bash <(wget -qO- https://raw.githubusercontent.com/oneclickvirt/podman/main/podmanuninstall.sh)

脚本会在执行前要求输入 yes 确认,操作不可逆。无交互卸载可先执行 export noninteractive=true,也兼容 FORCE_UNINSTALL=true

镜像说明

本仓库自编镜像通过 GitHub Actions 使用 Podman/Buildah 构建,发布到 Releases 及 ghcr.io:

系统 amd64 arm64
Ubuntu 22.04 spiritlhl_ubuntu_amd64.tar.gz spiritlhl_ubuntu_arm64.tar.gz
Debian 12 spiritlhl_debian_amd64.tar.gz spiritlhl_debian_arm64.tar.gz
Alpine latest spiritlhl_alpine_amd64.tar.gz spiritlhl_alpine_arm64.tar.gz
AlmaLinux 9 spiritlhl_almalinux_amd64.tar.gz spiritlhl_almalinux_arm64.tar.gz
RockyLinux 9 spiritlhl_rockylinux_amd64.tar.gz spiritlhl_rockylinux_arm64.tar.gz
OpenEuler 22.03 spiritlhl_openeuler_amd64.tar.gz spiritlhl_openeuler_arm64.tar.gz

同时推送至 ghcr.io,支持 multi-arch manifest:

  • ghcr.io/oneclickvirt/podman:<os>-amd64
  • ghcr.io/oneclickvirt/podman:<os>-arm64
  • ghcr.io/oneclickvirt/podman:<os>(multi-arch manifest list)

网络说明

  • IPv4 网络名: podman-net,bridge: podman-br0,subnet: 172.20.0.0/16
  • IPv6 双栈网络名: podman-ipv6,bridge: podman-br1,包含 172.21.0.0/16 + 公网 IPv6 /80 子网
  • 与 containerd/docker 版本完全隔离,互不干扰

与 containerd/docker 版本对比

特性 本项目(Podman) oneclickvirt/containerd oneclickvirt/docker
守护进程 无(daemonless) containerd Docker daemon
运行时 crun/runc runc runc
rootless 支持 原生支持 不支持 需配置
镜像格式 OCI OCI OCI
网络后端 netavark/CNI CNI Docker bridge
构建工具 Buildah/podman-build buildkitd Docker buildx
安装方式 系统包管理器 nerdctl-full bundle Docker 官方脚本

About

podman相关的各种一键(Various one-click related to podman)通过podman批量或单独开设NAT服务器(Bulk or individual NAT server provisioning via podman)

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages