本着将白嫖进行到底的原则,发布了这篇文章,早期在网上就见过有人分享了,今天在此基础上,完善一下玩法。
打开 Google Cloud Shell 并登录 Google 账号。
注意:只有
$HOME目录(即~)下的数据会在关机后保留。挂载目录至~/可实现配置与文件持久化。

运行以下命令,基于 LXDE 桌面环境启动 Ubuntu 容器:
docker run -d \
--name ubuntu-desktop \
-p 8080:80 \
-v ~/ubuntu_config:/home/ubuntu \
--shm-size=1g \
dorowu/ubuntu-desktop-lxde-vnc
-p 8080:80: 将桌面的 Web 服务映射到 Cloud Shell 的 8080 端口。
-v ~/ubuntu_config:/home/ubuntu: 将用户主目录持久化存储至宿主机的 ~/ubuntu_config。
--shm-size=1g: 增加容器共享内存,防止浏览器或图形应用崩溃。
2.1 : 2026.10.23更新
直接运行 Ubuntu26.04 Webtop
使用上述方法使用的是Ubuntu20.x,但有一些脚本需要更新版本的系统,那么需要做下面的操作,如果已创建过老版本Ubuntu的,需要先停掉并删除旧容器:
docker stop ubuntu-desktop
docker rm ubuntu-desktop
然后执行下面的命令:
docker run -d \
--name ubuntu22-desktop \
-p 8080:3000 \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-v ~/ubuntu22_config:/config \
--shm-size=1g \
lscr.io/linuxserver/webtop:ubuntu-xfce
8080:80 → 改成8080:3000(webtop 内部服务端口是 3000)/config 替代原来的 /home/ubuntu(linuxserver 镜像固定用 /config 存放用户数据)ubuntu-xfce = Ubuntu 26.04 + XFCE 轻量桌面,和原来 LXDE 一样,浏览器直接打开访问lsb_release -a
运行以下命令,基于 XFCE 桌面环境启动 Debian 容器(LinuxServer 维护,性能更优):
docker run -d \
--name debian-desktop \
-p 8888:3000 \
-v ~/debian_config:/config \
--shm-size=1g \
lscr.io/linuxserver/webtop:debian-xfce
-p 8888:3000: 将 Web 桌面端口映射至 Cloud Shell 的 8888 端口。
-v ~/debian_config:/config: 配置文件与桌面数据持久化保存至 ~/debian_config。
点击 Cloud Shell 界面右上角的 Web Preview(网页预览) 图标。
选择 Change port(更改端口)。
输入对应容器映射的端口:
Ubuntu:输入 8080 后点击 Preview。
Debian:输入 8888 后点击 Preview。
页面加载后即可直接在浏览器内操作图形桌面。

# 查看运行中的桌面容器
docker ps
# 停止桌面
docker stop ubuntu-desktop
docker stop debian-desktop
# 启动已有桌面
docker start ubuntu-desktop
docker start debian-desktop
# 删除桌面容器(挂载的本地持久化数据不会丢失)
docker rm -f ubuntu-desktop
docker rm -f debian-desktop
超时断开:无操作约 20 分钟后 Cloud Shell 会自动断开会话。再次使用时只需启动 Cloud Shell 并执行 docker start <容器名>。
配额限制:Cloud Shell 每周使用上限为 60 小时,禁止用于加密货币挖矿或大流量代理,否则可能导致封号。
七、后记
在 Cloud Shell 宿主终端(不是 ubuntu 容器内部!!)
docker ps -a
docker ps 只看正在运行的docker ps -a 全部,包括已经停止的# 先停止
docker stop ubuntu22-desktop
# 再删除容器
docker rm ubuntu22-desktop
删除容器只会删掉容器读写层,镜像本身还在硬盘,依旧占空间
# 列出所有镜像
docker images
# 删除镜像,例子:
docker rmi lscr.io/linuxserver/webtop
# 删除所有停止的容器、无用网络、悬空镜像
docker system prune
加上 -a 会删除所有未被使用的镜像(慎用!所有镜像都会删掉,不是只删悬空镜像)
docker system prune -a
执行的时候会提示确认,输入 y
参数说明:
-a:额外把任何当前没有容器在用的镜像全部删掉,释放大量磁盘docker builder prune -a