{"id":19198343,"url":"https://github.com/DeepVAC/TorchPod","last_synced_at":"2025-04-20T10:33:14.391Z","repository":{"id":44433394,"uuid":"344081008","full_name":"DeepVAC/MLab","owner":"DeepVAC","description":"“云上炼丹师”中的云","archived":false,"fork":false,"pushed_at":"2021-09-12T15:58:54.000Z","size":227,"stargazers_count":63,"open_issues_count":8,"forks_count":16,"subscribers_count":5,"default_branch":"main","last_synced_at":"2023-10-20T19:16:50.951Z","etag":null,"topics":["conda","cuda","deepvac","docker","firefox","ibus","k8s","kde","kdenlive","konsole","kubernetes","mkl","pytorch","realvnc","ubuntu","vnc","vscode"],"latest_commit_sha":null,"homepage":"","language":"Prolog","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DeepVAC.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-03-03T10:03:55.000Z","updated_at":"2023-10-16T01:35:26.000Z","dependencies_parsed_at":"2022-09-21T11:41:09.031Z","dependency_job_id":null,"html_url":"https://github.com/DeepVAC/MLab","commit_stats":null,"previous_names":[],"tags_count":3,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeepVAC%2FMLab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeepVAC%2FMLab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeepVAC%2FMLab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeepVAC%2FMLab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DeepVAC","download_url":"https://codeload.github.com/DeepVAC/MLab/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223824932,"owners_count":17209279,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["conda","cuda","deepvac","docker","firefox","ibus","k8s","kde","kdenlive","konsole","kubernetes","mkl","pytorch","realvnc","ubuntu","vnc","vscode"],"created_at":"2024-11-09T12:21:26.966Z","updated_at":"2025-04-20T10:33:14.376Z","avatar_url":"https://github.com/DeepVAC.png","language":"Prolog","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TorchPod\nTorchPod是跨平台的容器化Linux桌面环境，它\n- 以Docker image形式封装（遵循OCI规范的image），\n- 支持multi-arch（目前是amd64、arm64），\n- 以GNU/Linux KDE桌面系统呈现（neon），\n- 托管在docker hub上，\n- 可以在Linux、macOS、Windows操作系统上部署。\n\n\n# TorchPod的主要组件\n\n以目前最新版本gemfield/torchpod:latest为例：\n\n|gemfield/torchpod  |版本号                 |\n|-------------------|----------------------|\n|Ubuntu             |24.04                 |\n|KDE Plasma         |6.3                   |\n|KDE Framework      |6.11                  |\n|Qt                 |6.8                   |\n|Python             |3.12                  |\n|openjdk            |21                    |\n|firefox            |135                   |\n|fcitx5             |5.1                   |\n|vs code            |1.92                  |\n|libreoffice        |24.2                  |\n|vlc                |3.0                   |\n\n\n# 部署和运行TorchPod\nTorchPod可以部署在如下平台上：\n- Linux\n- Windows\n- macOS\n\n都支持intel处理器和arm64处理器（包含Apple Silicon）。需要注意两点：\n- 由于TorchPod是multi-arch的，自动拉取的镜像将会是和host上cpu arch一致的镜像版本。如果要拉取不同cpu arch的版本，则使用docker pull的--platform参数；\n- 由于macOS（Apple Silicon）上有出色的Rosetta2指令集转译程序，它允许用户在Apple silicon 上运行包含x86_64指令集的程序，因此你可以在macOS（Apple Silicon）上使用TorchPod的amd64版本。结合上一条，可以这样拉取镜像：\n```bash\ndocker pull --platform linux/amd64 gemfield/torchpod\n```\n\n## 1, Linux\n部署后可以在本地、vnc客户端、rdp客户端、浏览器中访问图形界面。共有如下6种部署方法：\n\n|protocol| mode  | 部署方式 |备注 |\n|--------|-------|----------|---------|\n|x11     | local |命令1     |同时支持ssh|\n|x11     | rdp   |命令2     |同时支持ssh\n|x11     | vnc   |命令3     |同时支持ssh、web|\n|wayland | local |命令4     |同时支持ssh|\n|wayland | rdp   |命令5     |同时支持ssh，尚未开发完成|\n|wayland | vnc   |命令6     |同时支持ssh、web，尚未开发完成|\n\n\n- 命令1: 启动图形化容器（X11），使用本地宿主机的X11服务端（注意：本地系统需要运行X服务）\n```bash\nXephyr :2 -screen 1920x1080 -resizeable #如果本地没有X服务，启动Xephyr新建一个\ndocker run -it --rm -eTORCHPOD_MODE=local -ePROTOCOL=x11 -e DISPLAY=:2 -v /tmp/.X11-unix:/tmp/.X11-unix gemfield/torchpod\n```\n或者\n```bash\n#在vt5（一般来说就是ctrl+Alt+F5对应的terminal）上启动X服务\nsudo X :5 -terminate vt5\n#切换回来\ndocker run -it --device=/dev/dri --rm -eTORCHPOD_MODE=local -ePROTOCOL=x11 -e DISPLAY=:5 -v /tmp/.X11-unix:/tmp/.X11-unix gemfield/torchpod\n```\n\n- 命令2：启动图形化容器（X11），通过RDP来访问\n```bash\ndocker run -it --rm -eTORCHPOD_MODE=RDP -ePROTOCOL=x11 -p 3389:3389 gemfield/torchpod\n```\n\n- 命令3：启动图形化容器（X11），通过VNC来访问，ssh端口可选\n```bash\ndocker run -it --rm -eTORCHPOD_MODE=VNC -ePROTOCOL=x11 -p 7030:7030 -p 5900:5900 -p 20022:22 gemfield/torchpod\n```\n\n- 命令4：启动图形化容器（wayland），使用本地宿主机的wayland compositor（或者本地的wayland服务端）\n```bash\ndocker run -it --rm --cap-add SYS_NICE --device=/dev/dri -eTORCHPOD_MODE=local -ePROTOCOL=wayland -v /tmp/.X11-unix:/tmp/.X11-unix -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/run/gemfield/wayland-0 -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY.lock:/run/gemfield/wayland-0.lock gemfield/torchpod\n```\n当然，你也可以在本地启动一个新的wayland compositor（e.g. Kwin），然后TorchPod作为客户端连接这个新的wayland compositor：\n```bash\nexport $(dbus-launch)\nkwin_wayland --xwayland --socket /tmp/torchpod\n#指定该unix socket来连接上述的新的wayland compositor\ndocker run -it --rm --cap-add SYS_NICE --device=/dev/dri -eTORCHPOD_MODE=RDP -ePROTOCOL=wayland -v /tmp/.X11-unix:/tmp/.X11-unix -v /tmp/torchpod:/run/gemfield/wayland-0 -v /tmp/torchpod.lock:/run/gemfield/wayland-0.lock -p 3389:3389 gemfield/torchpod\n```\n- 命令5：启动图形化容器（wayland），通过RDP来访问（备注：仍需要你手动在“系统设置”中打开“远程桌面”，并设置用户名密码，并手动启动/usr/bin/krdpserver，并在连接时点击确认按钮等）\n```bash\ndocker run -it --rm --cap-add SYS_NICE --device=/dev/dri -eTORCHPOD_MODE=RDP -ePROTOCOL=wayland -v /tmp/.X11-unix:/tmp/.X11-unix -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/run/gemfield/wayland-0 -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY.lock:/run/gemfield/wayland-0.lock  -p 3389:3389 gemfield/torchpod\n```\n\n- 命令6：启动图形化容器（wayland），通过VNC来访问，ssh端口可选（备注：仍需要你手动启动/usr/bin/krfb，包括设置密码，并在连接时点击确认按钮等）\n```bash\ndocker run -it --rm --cap-add SYS_NICE --device=/dev/dri -eTORCHPOD_MODE=VNC -ePROTOCOL=wayland -v /tmp/.X11-unix:/tmp/.X11-unix -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/run/gemfield/wayland-0 -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY.lock:/run/gemfield/wayland-0.lock -p 7030:7030 -p 5900:5900 -p 20022:22 gemfield/torchpod\n```\n\n参数中的端口号用途：\n\n|端口号 | 协议 | 用途 |\n|-------|------|------|\n|3389   |rdp   |通过rdp客户端，Windows远程桌面连接客户端|\n|5900   |vnc   |通过vnc客户端|\n|7030   |http  |通过浏览器来访问图形界面|\n|20022  |ssh   |用于ssh客户端、sftp客户端、KDE Dolphin、vscode remote ssh等|\n\n注意，上表中的ssh端口号用于vscode remote ssh功能时，首先在vscode上新建ssh target，然后在\"Enter SSH Connection Command\"输入框中输入：\n```bash\n#密码为:gemfield（$TORCHPOD_PASSWORD)\nssh -p 20022 gemfield@\u003cyour_host_running_torchpod\u003e\n```\n\n此外，如果要使用k8s集群部署方式（需要k8s集群运维经验，适合团队的协作管理），请访问[基于k8s部署torchpod](./docs/k8s_usage.md)以获得更多部署信息。\n\n## 2, macOS\n下载并安装最新版docker desktop，以及TigerVNC Viewer客户端。启动docker desktop后：\n- 1，在docker desktop的设置——General中，配置虚拟机选项：\n\n![docker desktop 设置界面](https://github.com/user-attachments/assets/5123848f-78d0-4e27-b096-ec76089f706a)\n注意：如果在Apple Silicon上使用amd64处理器架构的TorchPod，则必须按照上图配置，因为docker desktop在Apple Silicon上需要借助Rosetta2来运行TorchPod的x86_64/amd64版本。\n\n- 2，在docker desktop的设置-Resources中，可以配置CPU、内存、磁盘资源。如果需要设置代理，可以参考下图：\n![HTTP/HTTPS代理](https://github.com/user-attachments/assets/a49f97a7-36c1-478f-b136-82746b934115)\n\n除了HTTP/HTTPS代理外，也支持SOCKS5代理：\n![SOCKS5代理](https://github.com/user-attachments/assets/ff70bf85-eee8-458d-93df-dcf105a0fc32)\n\n\n- 3，下载gemfield/torchpod镜像（在中国大陆境内可能需要按照上述方式设置代理），点击pull按钮：\n\n![TorchPod镜像名称](https://github.com/user-attachments/assets/5b740fe9-a0b1-43b6-87fa-35ffe316f9e9)\n\n\n以上是GUI操作方式，对应的还有命令行方式。\n\n当用命令行的方式时，你可以在docker desktop的Terminal中使用docker pull命令：\n![docker pull](https://github.com/user-attachments/assets/3e69c965-1bb4-49d5-8da4-19258813297d)\n\n\n\n- 4，启动容器，在docker desktop的Images界面，点击启动按钮，进行如下配置：\n![docker desktop](https://github.com/user-attachments/assets/4f3d510c-7d21-4a0b-85ad-149b0abc726d)\n\n当然你也可以在docker desktop的Terminal中使用docker run命令。\n\n注意1：Volumes区域自定义。\n\n注意2：你也可以将TORCHPOD_MODE配置为RDP，以使用RDP远程桌面协议。这种情况下，上述的端口号需要启用3389而非5900。\n\n注意3：macOS默认的文件系统不支持区分文件名大小写，如果要将宿主机的目录挂载到TorchPod容器中，务必注意这个问题！你也可以在macOS宿主机上新建“宗卷”，选择区分文件名大小写的文件系统格式。\n\n- 5，启动TigerVNC Viewer客户端：\n\n![TigerVNC Viewer](https://github.com/user-attachments/assets/604c0d17-47db-4a12-b7b4-6482475a985f)\n\n输入VNC服务器地址：localhost；点击“连接”即可。你也可以在连接前点击“选项”按钮，进行一些参数配置。\n\n\n## 3, Windows\n下载并安装最新版docker desktop。启动docker desktop后：\n- 1，在docker desktop的设置——General中，配置虚拟机选项：WSL2。该项为默认配置，也就是在Windows系统上默认是用WSL2来运行TorchPod镜像（Linux镜像）；\n- 2，配置代理，参考上述macOS中的示意图；\n- 3，下载gemfield/torchpod镜像（在中国大陆境内可能需要按照上述方式设置代理），参考上述macOS中的示意图；\n- 4，启动容器，在docker desktop的Images界面，点击启动按钮，进行如下配置：\n\n![启动容器时的配置参数](https://github.com/user-attachments/assets/6d025681-596f-4f05-a012-c35e7d873ff2)\n\n启动后docker desktop的界面可能会出现“等待转圈”的现象，这可能是bug所致。这个时候可以在docker desktop的Terminal中用命令来查看容器的启动情况：\n![查看容器状态](https://github.com/user-attachments/assets/2868d55c-8fb7-4b73-b572-d5756e0b2ceb)\n\n当然你也可以在docker desktop的Terminal中使用docker run命令。\n\n注意1：Volumes区域自定义。\n\n注意2：你也可以将TORCHPOD_MODE配置为VNC，以使用VNC远程桌面协议。这种情况下，上述的端口号需要启用5900而非3389。\n\n注意3：Windows默认的文件系统不支持区分文件名大小写，如果要将宿主机的目录挂载到TorchPod容器中，务必注意这个问题！你也可以在宿主机上新建区分文件名大小写的文件系统格式。\n\n- 5，打开Windows自带的远程桌面连接，输入localhost、用户名（$TORCHPOD_USER)、密码($TORCHPOD_PASSWORD)来连接。\n\n# 登录\n上面已经演示过了一些TorchPod的登录方式。总共有5种方式：\n- 1，docker命令：```docker exec -it```\n- 2，vnc客户端，推荐TigerVNC Viewer客户端，其可以在运行时动态调整窗口大小;\n- 3，rdp客户端，比如KRDC、remmina、Windows远程桌面等;\n- 4，浏览器：http://your_host:7030\n- 5，docker desktop的GUI界面上登陆：\n  ![Exec tab页面](https://github.com/user-attachments/assets/4afc2d72-b427-4778-8a83-21fb61de1a0f)\n\n\n# 账户信息\nTorchPod默认提供了如下账户：\n- 用户:gemfield\n- 密码:gemfield\n- HOME:/home/gemfield\n\n如果要改变该默认行为，可以在docker命令行上（或者k8s yaml中）通过-e参数注入以下环境变量：\n- TORCHPOD_USER=\u003cmy_name\u003e\n- TORCHPOD_PASSWORD=\u003cmy_password\u003e\n- HOME=\u003cmy_home_path\u003e\n\n为了安全，用户在初始登录TorchPod后，最好使用```passwd```命令来修改账户密码。\n\n# 中文输入法\n要启动中文输入法，非常简单，只需要点击桌面左下角的Applications——\u003e系统——\u003eFcitx 5即可启动，然后就可以使用中文输入法了（通过桌面右下角输入法图标右键切换，或者ctrl+space组合键来切换）。\n\n# 基于TorchPod的生态\n目前有如下项目基于TorchPod：\n- torchpod-ai: 基于TorchPod的PyTorch、ollama开发运行环境；\n- ![torchpod-oh](https://github.com/CivilNet/torchpod-oh)：基于TorchPod的OpenHarmony开发和编译环境。\n\n# 已知问题\n- macOS（Apple Silicon）上使用amd64处理器架构的TorchPod时，vscode无法正常运行，应该是vscode的chromium被Rosetta2翻译为arm指令时有问题；\n- PROTOCOL设置为wayland时，vnc和rdp的服务端都需要手工运行多步才能开启，因为截至目前这些服务还没有命令行启动方式。\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDeepVAC%2FTorchPod","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDeepVAC%2FTorchPod","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDeepVAC%2FTorchPod/lists"}