From 8b4a082389b43388fa1340ee8dc93e9b2fcb7c09 Mon Sep 17 00:00:00 2001 From: spiritlhl <103393591+spiritLHLS@users.noreply.github.com> Date: Mon, 12 May 2025 07:42:00 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=B0=E5=AF=8CDocker=E8=AF=B4?= =?UTF-8?q?=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/guide/docker/docker_android.md | 62 +++++++++++ docs/guide/docker/docker_custom.md | 158 ++-------------------------- docs/guide/docker/docker_macos.md | 3 + docs/guide/docker/docker_windows.md | 124 ++++++++++++++++++++++ 4 files changed, 196 insertions(+), 151 deletions(-) create mode 100644 docs/guide/docker/docker_android.md create mode 100644 docs/guide/docker/docker_macos.md create mode 100644 docs/guide/docker/docker_windows.md diff --git a/docs/guide/docker/docker_android.md b/docs/guide/docker/docker_android.md new file mode 100644 index 0000000000..66993a1f18 --- /dev/null +++ b/docs/guide/docker/docker_android.md @@ -0,0 +1,62 @@ +--- +outline: deep +--- + +## 一键开设Android系统的容器 + +- 自定义安卓版本 +- 自动创建带校验的web网站 +- 自动进行nginx安装和反向代理的配置,可选择是否绑定域名,默认回车不绑定使用80端口 +- 无需考虑宿主机是否支持嵌套虚拟化 +- 支持x86_64和ARM架构 + +**宿主机的配置至少要有1核2G内存15G硬盘,否则开设可能会导致宿主机卡死** + +宿主机推荐 Ubuntu 系统,Debian 系统可能导致安卓屏幕白屏 + +安卓版本越新占用越大,以上的配置要求是最低版本安卓的配置要求 (个人测试到 12.0.0-latest 的tag可用,更高版本映射白屏了,自己测试哪个能用吧) + +如果开设后,过了5分钟浏览器网页的登录验证还是一直失败,那么请查询安卓容器的日志,大概率安卓容器崩溃了,建议更换更低的安卓系统版本的容器进行安装 + +**开设** + +国际 + +```shell +curl -L https://raw.githubusercontent.com/oneclickvirt/docker/main/scripts/create_android.sh -o create_android.sh && chmod +x create_android.sh && bash create_android.sh +``` + +国内 + +```shell +curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/docker/main/scripts/create_android.sh -o create_android.sh && chmod +x create_android.sh && bash create_android.sh +``` + +命令执行后按照提示输入即可,注意选择版本输入的是序号,对应选项的数字序号,安装完毕后打开```本机IPV4+80端口```可登录 + +如果需要查询生成的安卓信息和web登录信息,执行```cat /root/android_info```可查询信息 + +默认的用户名 ```onea``` + +默认密码 ```oneclick``` + +远程的桌面点击```H264 Converter```跳转就是了 + +**暂时只支持生成一个安卓容器,勿要重复生成,如需替换版本请执行后续命令删除后再次开设** + +**暂时只支持开设后一直使用,不可重启服务器,重启后可能无法自重启映射成功,自测** + +**删除** + +- 删除容器 +- 删除容器对应镜像 +- 删除配置文件 + +``` +docker rm -f android +docker rmi $(docker images | grep "redroid" | awk '{print $3}') +rm -rf /etc/nginx/sites-enabled/reverse-proxy +rm -rf /etc/nginx/sites-available/reverse-proxy +rm -rf /etc/nginx/passwd_scrcpy_web +rm -rf /root/android_info +``` \ No newline at end of file diff --git a/docs/guide/docker/docker_custom.md b/docs/guide/docker/docker_custom.md index f88c1c2078..18f224e958 100644 --- a/docs/guide/docker/docker_custom.md +++ b/docs/guide/docker/docker_custom.md @@ -4,160 +4,16 @@ outline: deep # 使用Docker一键安装某些容器的脚本 -每个容器都有对应的配置要求,自行查看,内存不够的用[这个](https://virt.spiritlhl.net/guide/docker_install.html#%E5%BC%80%E8%AE%BE%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98)开设虚拟内存补足也行 +每个容器都有对应的配置要求,自行查看,内存不够的用[https://github.com/spiritLHLS/addswap](https://github.com/spiritLHLS/addswap)的 + +```shell +curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/spiritLHLS/addswap/main/addswap.sh -o addswap.sh && chmod +x addswap.sh && bash addswap.sh +``` + +开设虚拟内存补足也行 注意,以下脚本使用前务必使用本套教程中的环境安装脚本进行前期环境安装 -## 一键开设Android系统的容器 - -- 自定义安卓版本 -- 自动创建带校验的web网站 -- 自动进行nginx安装和反向代理的配置,可选择是否绑定域名,默认回车不绑定使用80端口 -- 无需考虑宿主机是否支持嵌套虚拟化 -- 支持x86_64和ARM架构 - -**宿主机的配置至少要有1核2G内存15G硬盘,否则开设可能会导致宿主机卡死** - -宿主机推荐 Ubuntu 系统,Debian 系统可能导致安卓屏幕白屏 - -安卓版本越新占用越大,以上的配置要求是最低版本安卓的配置要求 (个人测试到 12.0.0-latest 的tag可用,更高版本映射白屏了,自己测试哪个能用吧) - -如果开设后,过了5分钟浏览器网页的登录验证还是一直失败,那么请查询安卓容器的日志,大概率安卓容器崩溃了,建议更换更低的安卓系统版本的容器进行安装 - -**开设** - -国际 - -```shell -curl -L https://raw.githubusercontent.com/oneclickvirt/docker/main/scripts/create_android.sh -o create_android.sh && chmod +x create_android.sh && bash create_android.sh -``` - -国内 - -```shell -curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/docker/main/scripts/create_android.sh -o create_android.sh && chmod +x create_android.sh && bash create_android.sh -``` - -命令执行后按照提示输入即可,注意选择版本输入的是序号,对应选项的数字序号,安装完毕后打开```本机IPV4+80端口```可登录 - -如果需要查询生成的安卓信息和web登录信息,执行```cat /root/android_info```可查询信息 - -默认的用户名 ```onea``` - -默认密码 ```oneclick``` - -远程的桌面点击```H264 Converter```跳转就是了 - -**暂时只支持生成一个安卓容器,勿要重复生成,如需替换版本请执行后续命令删除后再次开设** - -**暂时只支持开设后一直使用,不可重启服务器,重启后可能无法自重启映射成功,自测** - -**删除** - -- 删除容器 -- 删除容器对应镜像 -- 删除配置文件 - -``` -docker rm -f android -docker rmi $(docker images | grep "redroid" | awk '{print $3}') -rm -rf /etc/nginx/sites-enabled/reverse-proxy -rm -rf /etc/nginx/sites-available/reverse-proxy -rm -rf /etc/nginx/passwd_scrcpy_web -rm -rf /root/android_info -``` - -## 一键开设Windows系统的容器 - -- 共享宿主机所有资源(CPU、内存、硬盘),基于docker所以只占用系统的大小,适合多开 -- 共享IP,做了docker的NAT映射,可选择是否映射到外网或仅内网 -- 设置的win系统默认最多占用为1核2G内存50G硬盘,实际占用看使用情况 -- 无需iptables进行NAT映射,删除容器时自动删除了端口的映射,方便维护 -- 需要考虑宿主机是否支持嵌套虚拟化,暂时只支持X86_64架构的系统 - -**宿主机需要支持嵌套虚拟化,且暂时只支持X86_64架构的系统,手头没ARM机器编译对应的镜像** - -执行 - -``` -egrep -c '(vmx|svm)' /proc/cpuinfo -``` - -结果需要大于或等于1,不能为0 - -然后需要先设置docker切换使用v1版cgroup启动 - -``` -sed -i 's/GRUB_CMDLINE_LINUX="\(.*\)"/GRUB_CMDLINE_LINUX="\1 systemd.unified_cgroup_hierarchy=0"/' /etc/default/grub -update-grub -ls -``` - -如果执行都无报错,执行```reboot```重启系统以使得设置生效 - -**支持的镜像** - -使用的自建的镜像:[https://hub.docker.com/r/spiritlhl/wds](https://hub.docker.com/r/spiritlhl/wds) - -| 镜像名字 | 镜像大小 | -|---------|--------| -| 10 | 20G | -| 2022 | 17.5G | -| 2019 | 17G | - -创建出的容器大小会比镜像大小大一丢丢,但不多 - -**下载脚本** - -``` -curl -L https://raw.githubusercontent.com/oneclickvirt/docker/main/scripts/onewindows.sh -o onewindows.sh && chmod +x onewindows.sh -``` - -**使用方法** - -开设前务必在screen窗口中执行,避免SSH长期链接造成掉线卡死 - -``` -./onewindows.sh 容器名字 系统版本 RDP的端口 是否为外网映射(留空则默认是N,可选Y) -``` - -开设前需要确认宿主机至少有镜像大小的两倍大小加10G硬盘的大小,因为docker在创建容器时得先将镜像拉到本地再创建 - -创建过程中,硬盘占用峰值为```宿主机系统+镜像大小+容器大小``` - -比如开设容器名字为```test```,占用最低的```Windows 2019```系统的容器,映射外网RDP端口为```13389```,设置为```外网映射```(映射到你的服务器外网IPV4地址) - -``` -./onewindows.sh test 2019 13389 Y -``` - -开设后默认的用户名是```Administrator```和```vagrant``` - -默认的密码是```vagrant``` - -如果你选择开设映射的外网端口,务必登录后修改对应账户的密码(两个账户都可能有,自行尝试),否则可能被人爆破滥用 - -**删除** - -需要删除对应镜像和容器,先执行```docker ps -a```和```docker images```查询镜像是```spiritlhl/wds```的ID,然后对应使用 - -``` -docker rm -f 容器的ID -docker rmi 镜像的ID -``` - -删除后可开设别的版本的windows容器 - -(在宿主机上使用Docker安装Windows系统,好像绕过了某些商家不允许DD成Win系统的TOS限制) - -**其他类似的项目** - -https://github.com/dockur/windows - 同类项目,他支持的系统更多,但资源需求更多,同时开设过程中需要额外下载iso装载,docker容器本身只有脚本,安装缓慢 - -https://github.com/dockur/windows-arm/ - 同类项目,他支持的系统更多,但资源需求更多,同时开设过程中需要额外下载iso装载,docker容器本身只有脚本,安装缓慢 - -注意,上述的两个项目都要求宿主机的CPU至少4核,内存至少4G,硬盘至少64G,比我的项目的镜像需求要求更大。(他的项目优点是可以自定义很多配置项,详见他对应的项目说明。) - ## 一键开设Firefox浏览器的容器 - 已设置崩溃自启 diff --git a/docs/guide/docker/docker_macos.md b/docs/guide/docker/docker_macos.md new file mode 100644 index 0000000000..37ac18f235 --- /dev/null +++ b/docs/guide/docker/docker_macos.md @@ -0,0 +1,3 @@ +--- +outline: deep +--- \ No newline at end of file diff --git a/docs/guide/docker/docker_windows.md b/docs/guide/docker/docker_windows.md new file mode 100644 index 0000000000..e5a795ed7b --- /dev/null +++ b/docs/guide/docker/docker_windows.md @@ -0,0 +1,124 @@ +--- +outline: deep +--- + +## 开设Windows系统虚拟机 + +## 一键开设(通过vagrant) + +- 共享宿主机所有资源(CPU、内存、硬盘),基于docker所以只占用系统的大小,适合多开 +- 共享IP,做了docker的NAT映射,可选择是否映射到外网或仅内网 +- 设置的win系统默认最多占用为1核2G内存50G硬盘,实际占用看使用情况 +- 无需iptables进行NAT映射,删除容器时自动删除了端口的映射,方便维护 +- 需要考虑宿主机是否支持嵌套虚拟化,暂时只支持X86_64架构的系统 + +**宿主机需要支持嵌套虚拟化,且暂时只支持X86_64架构的系统** + +执行 + +``` +egrep -c '(vmx|svm)' /proc/cpuinfo +``` + +结果需要大于或等于1,不能为0 + +然后需要先设置docker切换使用v1版cgroup启动 + +``` +sed -i 's/GRUB_CMDLINE_LINUX="\(.*\)"/GRUB_CMDLINE_LINUX="\1 systemd.unified_cgroup_hierarchy=0"/' /etc/default/grub +update-grub +ls +``` + +如果执行都无报错,执行```reboot```重启系统以使得设置生效 + +**支持的镜像** + +使用的自建的镜像:[https://hub.docker.com/r/spiritlhl/wds](https://hub.docker.com/r/spiritlhl/wds) + +| 镜像名字 | 镜像大小 | +|---------|--------| +| 10 | 20G | +| 2022 | 17.5G | +| 2019 | 17G | + +创建出的容器大小会比镜像大小大一丢丢,但不多 + +**下载脚本** + +``` +curl -L https://raw.githubusercontent.com/oneclickvirt/docker/main/scripts/onewindows.sh -o onewindows.sh && chmod +x onewindows.sh +``` + +**使用方法** + +开设前务必在screen窗口中执行,避免SSH长期链接造成掉线卡死 + +``` +./onewindows.sh 容器名字 系统版本 RDP的端口 是否为外网映射(留空则默认是N,可选Y) +``` + +开设前需要确认宿主机至少有镜像大小的两倍大小加10G硬盘的大小,因为docker在创建容器时得先将镜像拉到本地再创建 + +创建过程中,硬盘占用峰值为```宿主机系统+镜像大小+容器大小``` + +比如开设容器名字为```test```,占用最低的```Windows 2019```系统的容器,映射外网RDP端口为```13389```,设置为```外网映射```(映射到你的服务器外网IPV4地址) + +``` +./onewindows.sh test 2019 13389 Y +``` + +开设后默认的用户名是```Administrator```和```vagrant``` + +默认的密码是```vagrant``` + +如果你选择开设映射的外网端口,务必登录后修改对应账户的密码(两个账户都可能有,自行尝试),否则可能被人爆破滥用 + +**删除** + +需要删除对应镜像和容器,先执行```docker ps -a```和```docker images```查询镜像是```spiritlhl/wds```的ID,然后对应使用 + +``` +docker rm -f 容器的ID +docker rmi 镜像的ID +``` + +删除后可开设别的版本的windows容器 + +(在宿主机上使用Docker安装Windows系统,好像绕过了某些商家不允许DD成Win系统的TOS限制) + +## 通过dockur手动开设 + +原项目 + +https://github.com/dockur/windows + +https://github.com/dockur/windows-arm + +注意,这两个项目都要求宿主机的CPU至少4核,内存至少4G,硬盘至少64G。如果不魔改启动脚本,那么这些最低限制是需要额外参数进行修改的。 + +如果需要魔改脚本,可参考 + +https://www.spiritysdx.top/20250405/ + +https://www.spiritysdx.top/20250315/ + +进行魔改 + +对于X86_64架构: + +这里提供一个已经魔改好的单文件版本的docker容器的tar包,通过这个tar包可以自己制作新的Windows镜像 + +https://github.com/oneclickvirt/docker/releases/download/amd64_builder/builder.tar + +```shell +docker load -i builder.tar +``` + +```shell +docker run -it -d -e RAM_SIZE="8G" -e CPU_CORES="4" --name win2022 -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v ./当前路径下你下好的Windows的iso镜像名称带尾缀:/boot.iso --stop-timeout 120 windows:builder +``` + +这里也提供一个成品的镜像,内置Windows镜像,内置自动硬盘扩容自启任务,docker导入后即可使用 + +