joweisberg/phpvirtualboxdocker-phpvirtualbox 是 jazzdd/phpvirtualbox 的分支版本,解决了原镜像更新不及时和配置选项有限的问题。本镜像支持 phpVirtualBox 6.1,提供现代化的 Web 界面,用于控制远程 VirtualBox 实例,功能与 VirtualBox GUI 一致。
项目地址
适用于需要通过 Web 界面远程管理一个或多个 VirtualBox 实例的场景,例如:
支持 x86_64、arm64、arm32 架构设备,可部署在服务器、工作站或嵌入式设备上。
使用镜像 joweisberg/phpvirtualbox:latest,支持以下平台:
| 平台 | 架构/标签 |
|---|---|
| x86_64 | amd64 |
| aarch64 | arm64 |
| arm | arm32 |
phpVirtualBox Web 界面通过 vboxwebsrv(VirtualBox 内置服务)与远程 VirtualBox 实例通信。以下是启动容器的基本命令:
bashdocker run --name vbox_http --restart=always \ -p 80:80 \ -e TZ=Europe/Paris \ -e ID_HOSTPORT=ServerIP:PORT \ -e ID_NAME=serverName \ -e ID_USER=vboxUser \ -e ID_PW='vboxUserPassword' \ -e CONF_browserRestrictFolders="/data,/home" \ -d joweisberg/phpvirtualbox
-p {主机端口}:80:将容器内 80 端口映射到主机端口(Web 服务端口)。-d joweisberg/phpvirtualbox:指定镜像名称。-e TZ:时区设置,如 "Etc/UTC" 或 "Asia/Shanghai"(参考 时区数据库列表)。-e ID_HOSTPORT:VirtualBox 服务器的 IP/主机名和端口(vboxwebsrv 监听端口)。-e ID_NAME:服务器在 UI 中显示的名称(自定义)。-e ID_USER:VirtualBox 服务器上属于 vbox 用户组的用户名。-e ID_PW:该用户的密码。-e CONF_varName:覆盖 phpVirtualBox 配置文件中的 varName 参数,如 browserRestrictFolders 限制文件夹访问。逗号分隔的字符串会自动转换为数组。通过为环境变量添加前缀(如 SRV1_、SRV2_),可配置多个 VirtualBox 服务器,实现单 phpVirtualBox 实例管理多台服务器。示例:
bashdocker run --name vbox_http --restart=always -p 80:80 \ -e TZ=Europe/Paris \ -e SRV1_HOSTPORT=192.168.1.1:*** -e SRV1_NAME=Server1 -e SRV1_USER=user1 -e SRV1_PW='test' \ -e SRV2_HOSTPORT=192.168.1.2:*** -e SRV2_NAME=Server2 -e SRV2_USER=user2 -e SRV2_PW='test' \ -d joweisberg/phpvirtualbox
其中 SRV1_、SRV2_ 为服务器标识符,对应一组独立的 HOSTPORT、NAME、USER、PW 配置。
vboxwebsrv 是 VirtualBox 内置的 Web 服务程序,用于与 phpVirtualBox 通信。可通过 jazzdd/vboxwebsrv 容器在远程服务器上安全启动 vboxwebsrv 并建立 SSH 隧道。
bashdocker run -it --name=vbox_websrv_1 --restart=always jazzdd/vboxwebsrv user1@192.168.1.1
bash# 添加 VirtualBox 源和密钥 wget -q [***] -O- | sudo apt-key add - wget -q [***] -O- | sudo apt-key add - echo "deb [arch=amd64] [***] $(lsb_release -sc) contrib" > /etc/apt/sources.list.d/virtualbox.list # 安装 VirtualBox 6.0 apt update > /dev/null 2>&1 apt -y install virtualbox-6.0 # 安装扩展包 vboxversion=$(wget -qO - [***] vboxextpack=Oracle_VM_VirtualBox_Extension_Pack-$vboxversion.vbox-extpack wget "[***]" echo "y" | vboxmanage extpack install --replace $vboxextpack rm $vboxextpack
bashdocker run --name vbox_http --restart=unless-stopped -p 80:80 \ -e TZ=Europe/Paris \ -e ID_HOSTPORT=$HOST_IP:*** -e ID_NAME=$HOST -e ID_USER=$VBOX_USR -e ID_PW=$VBOX_PWD \ -d joweisberg/phpvirtualbox
通过 -e CONF_varName 可覆盖 phpVirtualBox 配置文件中的参数,支持两种配置方式:
为指定服务器单独配置参数,格式:{服务器标识符}_CONF_{参数名}。示例:
bash-e SRV1_CONF_browserRestrictFolders="/data,/home" # 仅对 Server1 生效
对所有服务器生效(若配置多服务器),格式:CONF_{参数名}。示例:
bash-e CONF_browserRestrictFolders="/data," # 对所有服务器生效(单参数需加逗号表示数组)
bashdocker run --name vbox_http --restart=unless-stopped -p 80:80 \ -e TZ=Europe/Paris \ -e ID_HOSTPORT=$HOST_IP:*** -e ID_NAME=$HOST -e ID_USER=$VBOX_USR -e ID_PW=$VBOX_PWD \ -e CONF_vrde=on -e CONF_vrdeport=9000-9010 -e CONF_vrdeaddress= -e CONF_noAuth=true \ -e CONF_browserRestrictFolders=/data,/home, \ -d joweisberg/phpvirtualbox
CONF_vrde=on:启用远程桌面(VRDE)。CONF_vrdeport=9000-9010:指定 VRDE 端口范围。CONF_noAuth=true:禁用认证(谨慎使用)。镜像默认启用认证,初始登录凭据:admin/admin。
多服务器场景下,需指定一个认证主服务器(authMaster),格式:{服务器标识符}_CONF_authMaster=true。示例:
bash-e SRV1_CONF_authMaster='true' # 将 Server1 设为认证主服务器
若未指定,默认使用第一个配置的服务器。
通过 -e CONF_noAuth='true' 禁用认证(直接访问 Web 界面,无需登录)。
以下是多服务器 + vboxwebsrv 集成的 docker-compose.yml 示例:
yamlversion: "3.5" services: vbox_http: container_name: vbox_http image: joweisberg/phpvirtualbox restart: always depends_on: - vbox_websrv_1 ports: - 8080:80 environment: TZ: "Europe/Paris" SRV1_HOSTPORT: "vbox_websrv_1:***" SRV1_NAME: "Server1" SRV1_USER: "user1" SRV1_PW: "test" SRV2_HOSTPORT: "192.168.1.2:***" SRV2_NAME: "Server2" SRV2_USER: "user2" SRV2_PW: "test" SRV2_CONF_browserRestrictFolders: "/data," SRV2_CONF_authMaster: "true" CONF_browserRestrictFolders: "/home,/usr/lib/virtualbox," CONF_noAuth: "false" vbox_websrv_1: container_name: vbox_websrv_1 image: jazzdd/vboxwebsrv command: user1@192.168.1.1 restart: always environment: USE_KEY: 1 volumes: - "./ssh:/root/.ssh"
启动命令:docker-compose up -d
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务