之前根据B站教程《在linux上安装微软office》:在linux上安装微软office_哔哩哔哩_bilibili
写过一篇使用KVM虚拟机安装Microsoft Office+RDP远程控制的文章,根据B站的教程安装后,发现有远程控制延迟的问题,比如拖动Office窗口时会延迟,搜狗输入法扫一下就闪退,插入形状后无法调整大小,无法调整图片大小等问题。而且最大的问题是,如果你不提前关闭KVM虚拟机,就得等待Linux关机时杀掉KVM虚拟机的'libvirt' 进程,导致关机需要很长时间。已知Linux开机时会同步开启KVM虚拟机的'libvirt' 进程,这个'libvirt' 进程经常导致Linux系统崩溃,开机时黑屏。停留在只有一条白色下杠的页面。
因此,Winapps最新版本提供了解决方案,推荐用户使用Docker或者Podman安装Microsoft Office + RDP远程控制。降低了系统崩溃的概率。接下来我将带大家如何进行安装和设置。
系统:Ubuntu24.04
前提:已经安装了Docker
(不会安装Docker的,请查看《Ubuntu24.04安装Docker》的文章)
一、从github下载winapps
在必应搜索“winapps github”
复制HTTPS的下载链接:https://github.com/Fmstrat/winapps.git
进入/opt目录,通过git clone把winapps下载到/opt目录下
yammie@my-pc >/opt
$ git clone https://github.com/Fmstrat/winapps.git
为了后续执行不受权限的干扰,给winapps中的所有文件授予777权限。
yammie@my-pc >/opt
$ sudo chmod 777 -r ./winapps
此时winapps的所有者和权限如图:
进入winapps/docs,阅读docker.md的安装步骤。里面提示可以通过docker或者podman进行安装,此处我们选择docker。
二、阅读并修改compose.yaml
1. compose.yaml的内容
打开compose.yaml,阅读里面的设置要点。修改为以下内容,复制粘贴即可:
name: "winapps"
volumes: # Linux系统中通过建立'_data'目录来作为Docker镜像的数据卷
# 此处默认注释,执行compose.yaml时,它也会默认安装到下面的目录
# Located @ '/var/lib/docker/volumes/winapps_data/_data' (Docker).
# Located @ '/var/lib/containers/storage/volumes/winapps_data/_data' or '~/.local/share/containers/storage/volumes/winapps_data/_data' (Podman).
data:
services: # 服务器
windows: # Windows的镜像容器
image: dockurr/windows # 指定从github中下载dockur/windows的Docker镜像
container_name: WinApps # 创建Docker容器名称为WinApps
environment: # 要配置的Windows镜像版本环境。要选择Windows版本,请访问:
VERSION: "core11" # https://github.com/dockur/windows ; 下拉即可看到各种Windows版本。
RAM_SIZE: "4G" # 内存: 4G
CPU_CORES: "4" # CPU核心数:4
DISK_SIZE: "64G" # 主硬盘存储空间: 64G
#DISK2_SIZE: "32G" # 第二块硬盘存储空间:32G。如果你要取消该注释,需要保证提供了该硬盘给虚拟机运行
LANGUAGE: "Chinese" # 此处必须要指定安装语言为Chinese,不然默认安装English
REGION: "zh-CN" # 此处必须要指定地区为:zh-CN,不然默认安装English
KEYBOARD: "zh-CN" # 此处必须要指定键盘为zh-CN,不然默认安装English
USERNAME: "Docker" # Windows虚拟机的用户名默认是Docker,你可以取消注释,重命名为其他名字。建议默认
PASSWORD: "123456me" # Windows虚拟机登录密码,自定义即可。不能为空。
HOME: "${HOME}" # 设置Linux用户主文件夹的路径
privileged: true # 授予Windows 虚拟机扩展权限
ports:
- 8006:8006 # 将Linux主机上的“8006”映射到Windows 虚拟机上的“8006”→用于VNC Web界面http://127.0.0.1:8006.
- 3389:3389/tcp # 将Linux主机上的“3389”映射到Windows 虚拟机上的“3389”→用于远程桌面协议(RDP)
- 3389:3389/udp # 将Linux主机上的“3389”映射到Windows 虚拟机上的“3389”→用于远程桌面协议(RDP)
stop_grace_period: 120s # 停止宽限期 ;当你去关闭Windows虚拟机时,等待120秒后才会发送SIGTERM信号去终止Windows的镜像容器进程。SIGTERM 信号提供了一种优雅的方式来终止程序。
restart: on-failure # 如果退出代码指示错误,将重新启动Windows VM
volumes: # Windows虚拟机的数据卷
- data:/storage # 挂载上面Linux系统中的'_data'数据卷,作为Windows虚拟机的C盘
- ${HOME}:/shared # 挂载Linux用户的home目录,作为Windows虚拟机的远程网络共享目录,名称为: \\host.lan\Data'.
#- /path/to/second/hard/d