docker相关的各种一键(Various one-click related to docker)通过Docker批量或单独开设NAT服务器(Bulk or individual NAT server provisioning via Docker)
docker
更新
2026.06.04
- 统一无交互执行方式为
export noninteractive=true - 补充 CI 约束、环境变量、架构说明和安全忽略规则
- 修复容器创建、卸载重装、镜像回退和 Guacamole 数据库初始化边界问题
- 修复 Windows 辅助启动失败误报成功、Release 分片上传凭据硬编码和关键远程脚本下载校验等边界
说明文档
国内(China):
国际(Global):
说明文档中 Docker 分区内容
说明
- 支持系统:Ubuntu、Debian、Alpine、AlmaLinux 9、RockyLinux 9、OpenEuler 22.03
- 系统输入支持带版本号写法,例如
debian11、debian/11、ubuntu20、almalinux9、rockylinux9、openeuler22.03;脚本会归一到当前维护的镜像族 - 支持架构:amd64、arm64
- 镜像同时发布到 GHCR(
ghcr.io/oneclickvirt/docker)和 GitHub Releases(tar.gz 离线包) onedocker.sh优先从 GHCR 拉取镜像,失败后自动回退至 Releases 离线包,最后回退到 Docker Hub
快速开始 / Quick Start
- 使用 root 用户登录一台支持 Docker 的 Linux 主机。
- 执行
export noninteractive=true,让脚本统一走无需交互模式。 - 运行 Docker 环境安装脚本。
- 运行
onedocker.sh或create_docker.sh创建容器。 - 用脚本输出的 SSH 端口或 Web 地址访问服务。
架构
flowchart LR
operator["Operator / 管理员"] --> installer["scripts/dockerinstall.sh"]
installer --> engine["Docker Engine"]
engine --> linux["Linux system containers"]
engine --> desktop["Browser / Android / Windows helpers"]
onedocker["scripts/onedocker.sh"] --> sources["GHCR / Releases / Docker Hub"]
sources --> engine
workflow["GitHub Actions"] --> ghcr["GHCR multi-arch images"]
workflow --> releases["GitHub release tar.gz"]
ghcr --> sources
releases --> sources
安装 Docker 环境
export noninteractive=true
bash <(wget -qO- https://raw.githubusercontent.com/oneclickvirt/docker/main/scripts/dockerinstall.sh)
如需交互式安装,不设置 noninteractive 即可。
常用环境变量
| 变量 | 默认值 | 说明 | |------|--------|------| | noninteractive | 空 | 设为 true 时跳过脚本交互提示,统一使用默认值或已传入变量 | | WITHOUTCDN | false | 设为 TRUE 时禁用 CDN 加速地址探测 | | CN | 自动检测 | true 强制使用中国镜像源,false 跳过中国 IP 检测 | | IPV6MAXIMUMSUBSET | n | 是否在 SLAAC 场景使用 IPv6 最大子网范围 | | NEEDDISKLIMIT | n | 是否启用 btrfs 容器磁盘限制 | | DOCKERINSTALLPATH | /var/lib/docker | Docker 数据目录 | | DOCKERPOOLSIZE | 20 | btrfs 存储池大小,单位 GB | | DOCKERLOOPFILE | /opt/docker-pool.img | btrfs loop 文件路径 | | DOCKERCREATECOUNT | 1 | 批量创建 Linux 容器数量 | | DOCKERMEMORYMB | 512 | 批量创建时每个容器内存,单位 MB | | DOCKER_CPU | 1 | 批量创建时每个容器 CPU 核数 | | DOCKERDISKGB | 0 | 批量创建时每个容器磁盘限制,0 表示不限 | | DOCKER_SYSTEM | debian | 批量创建默认系统,支持 debian11、debian/11、ubuntu20 等带版本号写法并归一到当前维护的镜像族 | | DOCKERINDEPENDENTIPV6 | n | 批量创建时是否附加独立 IPv6 | | ANDROIDRESETDATA | 空 | 设为 true 时重建 Android 容器前清空 /root/android/data,默认保留并复用旧数据 | | ANDROIDWEBUSER / ANDROIDWEBPASSWORD | onea / oneclick | Android Web 认证默认用户名和密码 | | CHROMIUMUSER / CHROMIUMPASSWORD | oneclick / oneclick | Chromium Web 登录信息 | | CHROMIUMHTTPPORT / CHROMIUMHTTPSPORT | 3004 / 3005 | Chromium Web 端口 | | CHROMIUMSHMGB | 2 | Chromium 共享内存大小,单位 GB | | FIREFOX_PASSWORD | oneclick | Firefox Web/VNC 默认密码 | | FIREFOXWEBPORT / FIREFOXVNCPORT | 3003 / 空 | Firefox Web/VNC 端口 | | FIREFOXSHMGB | 2 | Firefox 共享内存大小,单位 GB | | WEBTOPUSER / WEBTOPPASSWORD | onew / oneclick | Webtop 登录信息 | | WEBTOPHTTPPORT / WEBTOPHTTPSPORT | 3004 / 3005 | Webtop Web 端口 | | WEBTOPSHMGB | 2 | Webtop 共享内存大小,单位 GB | | GUACAMOLEDBNAME / GUACAMOLEDBUSER | guacdb / guacadmin | Guacamole MySQL 数据库名和应用用户 | | GUACAMOLEMYSQLROOTPASSWORD / GUACAMOLEMYSQL_PASSWORD | password / password | Guacamole MySQL root 密码和应用用户密码 | | GUACAMOLEPORT / GUACAMOLENETWORK | 80 / guacamole_net | Guacamole Web 端口和 Docker 内部网络 | | GITHUBTOKEN / TOKEN | 空 | extrascripts/splitandupload.sh 上传 Release 分片时使用的 GitHub Token |
安全提示
- 默认密码只适合快速验证;生产或公网环境请通过参数或环境变量显式设置高强度密码。
.gitignore已排除.env、数据库、密码/密钥、日志、截图和镜像归档产物,避免把敏感数据或构建产物提交到仓库。- 卸载脚本会清理容器、镜像、网络、systemd 服务和 Docker 二进制文件,交互模式下必须输入
yes,无交互模式请先确认目标主机可被完整清理。
开设单个容器
# 用法: ./onedocker.sh <name> <cpu> <memorymb> <password> <sshport> <startport> <endport> [independentipv6:y/n] [system] [disk_gb]
bash onedocker.sh dc1 1 512 mypasswd 25001 35001 35025 n debian 0
批量开设容器
bash create_docker.sh
查看与管理容器
# 查看所有容器
docker ps -a
查看日志文件
cat /root/dclog
在容器内执行命令
docker exec <name> bash -lc 'systemctl status ssh || true'
卸载(完整清理)
一键卸载 Docker 全套环境,包括所有容器、镜像、网络、systemd 服务、二进制文件:
export noninteractive=true
bash <(wget -qO- https://raw.githubusercontent.com/oneclickvirt/docker/main/dockeruninstall.sh)
未设置 noninteractive=true 时,脚本会在执行前要求输入 yes 确认,操作不可逆。
复测流程:先执行卸载,再执行安装,即可从零验证整个安装流程。
镜像说明
本仓库自编镜像通过 GitHub Actions 构建,同时发布到 GHCR 和 GitHub Releases:
| 系统 | GHCR 镜像(多架构)| amd64 tar | arm64 tar | |------|---------------------|-----------|-----------| | Ubuntu | ghcr.io/oneclickvirt/docker:ubuntu | spiritlhlubuntuamd64.tar.gz | spiritlhlubuntuarm64.tar.gz | | Debian | ghcr.io/oneclickvirt/docker:debian | spiritlhldebianamd64.tar.gz | spiritlhldebianarm64.tar.gz | | Alpine | ghcr.io/oneclickvirt/docker:alpine | spiritlhlalpineamd64.tar.gz | spiritlhlalpinearm64.tar.gz | | AlmaLinux 9 | ghcr.io/oneclickvirt/docker:almalinux | spiritlhlalmalinuxamd64.tar.gz | spiritlhlalmalinuxarm64.tar.gz | | RockyLinux 9 | ghcr.io/oneclickvirt/docker:rockylinux | spiritlhlrockylinuxamd64.tar.gz | spiritlhlrockylinuxarm64.tar.gz | | OpenEuler 22.03 | ghcr.io/oneclickvirt/docker:openeuler | spiritlhlopeneuleramd64.tar.gz | spiritlhlopeneulerarm64.tar.gz |
手动拉取示例:
docker pull ghcr.io/oneclickvirt/docker:debian
网络说明
- 默认使用主机 NAT 网络,通过端口映射暴露 SSH 及自定义端口
- 若宿主机配置了公网 IPv6 并检测到 ndpresponder 容器,可为容器分配独立 IPv6 地址
致谢
感谢 LinuxMirrors 提供的国内镜像安装以及国内包管理源镜像替换脚本