Linux通过Docker安装Microsoft Office+RDP远程控制

之前根据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