Mac Docker 构建终端:构建和 SSH 部署并排跑

把 Mac Docker 构建终端和 SSH 部署会话并排放:一个分屏跑 docker build(或 docker compose up --build),旁边的分屏连服务器。在 MXterm Pro 里,拆分只要一个快捷键(Cmd+D)。两边都是基于真实 PTY 的真实 shell,所以 docker logs -f 和 SSH 会话的表现和在命令行里一样,也没有什么 Docker 集成要学。
拆分工作区:一个分屏构建,一个分屏部署
按 Cmd+D 把当前分屏向右拆开,按 Cmd+Shift+D 则向下拆。Windows 版的快捷键是 Ctrl+D 和 Ctrl+Shift+D。在一个分屏里运行 docker build -t myapp . 或 docker compose up --build。
在另一个分屏里打开或复用到目标服务器的 SSH 会话,构建一结束就能 docker pull 新镜像或重启整套服务。
有两个以上分屏后,把某个分屏的标题栏拖向另一个分屏的边缘。MXterm Pro 会高亮指针下的区域:分屏中间是交换分屏,最近的边是插入到左侧、右侧、上方或下方。松开鼠标,分屏就落在那里。插入的分屏总是从 50/50 均分开始。
分隔条也会吸附:松手时离中线在约 3.5% 以内,它就停在 50/50。双击分隔条可重置为 50/50。Cmd+Shift+M 临时最大化当前分屏,全屏看一长串构建日志时很有用。再按一次就回到双分屏视图,继续部署。
两个分屏都是基于真实 PTY 的真实终端会话,用的是每个分屏共用的 portable-pty Rust 后端,不是套在外面的一层封装。所以 docker logs -f、docker stats 和 docker exec 都在真实 shell 里运行,不需要配置任何 Docker 专用的东西。
这套做法真正适合谁
这套 Docker 构建加 SSH 部署的做法,适合在本地构建镜像(或通过 SSH 触发构建),再手动推送或拉取到 VPS 或小型云主机的人。比如独立开发者、没有完整 CI/CD 流水线的小团队,以及用 AI 编程 Agent 迭代 Dockerfile、想就地重跑构建的人。
如果部署已经全自动,第二个分屏的意义就小一些。CI 流水线每次合并都会构建、推送并滚动更新容器,“构建完成”和“服务器跑起来”之间没有手动环节。这个分屏办法的价值在手动或半手动的中间一步。
相关指南在分屏终端里同时跑 Claude Code 和 CodexAI Agent 改 Dockerfile 时盯着构建
把一个编程 Agent(Claude Code、Codex、Gemini CLI、Copilot)放在一个分屏,旁边放构建分屏。Agent 改了 Dockerfile 或 compose 文件后,在相邻分屏里重跑构建,不用切换上下文。Agent 的改动和构建输出同时留在屏幕上。
内置的 Command Recipes 输入框(Cmd+J)里有一组固定的现成命令,对应日常任务。它不是通用的命令生成器。对 Docker,它只认两种意图:让它列出容器,它给你 docker ps -a && docker stats --no-stream;让它清理,它给你 docker system prune -af --volumes。
它不会替你写 docker build 命令,不会编造 --entrypoint 覆盖,也不会推算 bind mount 参数。这些要自己输入,和在任何终端里一样。
worktree 隔离是创建工作区页面里的一个可选复选框,默认关闭,只在 git 仓库里生效。勾选为每个功能使用独立的 git worktree后,Agent 会在自己的 <repo>/.worktrees/<slug> 检出目录里改 Dockerfile,并使用新的 swarm/<adjective>-<noun> 分支,例如 swarm/brave-otter。你的构建分屏仍然盯着仓库根目录下的普通工作目录。
构建读取文件时,文件可能被 Agent 中途改掉,这样能降低这种可能性。你可以先审查并合并 Agent 对 Dockerfile 的改动,再让自己的构建读取它。
容器启动前,先把文件放到服务器上
有些部署需要先在服务器上放好文件,容器才能正常启动:.env 文件、TLS 证书、配置挂载。内置的 SFTP 浏览器可以处理,不用另装 FTP 客户端。从 SSH 管理器打开服务器,它的标签页就带 SFTP 面板,然后把文件拖过去。
如果容器要求特定权限,右键点文件,选更改权限(Chmod),再勾选复选框或选一个预设(755、644、777、600)。
如果文件已经在服务器上(Dockerfile、nginx.conf、.env* 或 YAML 格式的 compose 文件),在 SFTP 面板里双击它。它会带语法高亮在远程主机上直接打开编辑,省去下载、本地修改、再上传。
chmod 对话框和远程编辑在 Free 套餐里都能用。
这个工作流在 Free 和 Pro 下的区别
默认情况下,Free 套餐没有分屏数量限制,允许 5 台已保存的 SSH 主机和 1 个已保存的 MXterm Host。Pro 没有主机数量上限。
这个场景下,MXterm Pro 与 iTerm2、Warp、Termius、MobaXterm 的比较
iTerm2 免费且成熟,它的分屏加 tmux 集成能很好地处理这种本地构建、远程部署的模式。如果你只用 Mac,也不需要内置的 SSH 主机列表、SFTP 浏览器,或同一窗口里的 AI Agent,几个 iTerm2 分屏就够用了。
对这个工作流,MXterm Pro 的区别在于:SSH 主机管理器、内置 SFTP 浏览器和多 Agent 的 Control Room(原 War Room),都和构建分屏在同一个窗口里。用 iTerm2 的话,通常还要另外加一个 SFTP 客户端,再自己想办法管理服务器列表。
Warp 围绕命令块和内置 AI 构建,界面现代,由 GPU 渲染。工作流是“问 AI、跑一条命令、看输出”时,它很强。MXterm Pro 的重心是在一个分屏布局里放多个真实终端和多个 Agent。
Termius 是出色的跨平台 SSH 客户端,主机可同步,也有自己的 SFTP,如果你还要在手机上管服务器就特别有用。它同样有分屏视图和本地终端。不过它围绕已保存的主机和会话设计,而不是围绕带 AI Agent 的构建与部署工作区。
MobaXterm 在思路上最接近:标签页会话、侧边栏里的图形化 SFTP 浏览器,还有宏,如果你已经用它做这种 Docker 加 SSH 的流程,会觉得很熟悉。MXterm Pro 是较新的 Tauri 应用,用同样的“终端和 SFTP 在一个窗口”思路构建。它运行在 macOS 上,另有一个未签名的 Windows x64 版本,并增加了 MobaXterm 没有的多 Agent 层。
多分屏 SSH、Command Recipes(Cmd+J)和多 Agent 的 Control Room (原 War Room):先免费用。
常见问题
没有。MXterm Pro 不能替代 Docker Desktop,也没有图形化的容器管理器。它是终端 App,Docker 命令和其他命令一样在分屏里运行。
能。SSH 到装了 Docker 的服务器后,docker build 在那里的运行方式,和通过其他任何 SSH 连接完全一样。
只有两条。让它列出正在运行的容器,它返回 docker ps -a && docker stats --no-stream。让它清理,它返回 docker system prune -af --volumes。它不会运行 docker build,也不会编造 bind mount 或 --entrypoint 覆盖这类自定义参数。这些要手动输入,和在别处一样。
按 Cmd+D 把当前分屏向右拆开,按 Cmd+Shift+D 向下拆开。Windows 版的快捷键是 Ctrl+D 和 Ctrl+Shift+D。有了两个分屏后,也可以把分屏标题栏拖到另一个分屏的边缘,把它重新停靠到那里。