忘机山人
# 不用 SSH,如何在本地管理微服的 Docker 容器? 平时管理远端的 Docker 容器,大多数人第一反应是通过 SSH 登录到服务器再执行命令。 其实 Docker 本身是 C/S 架构,只要配置好连接方式,就能在本地直接管理远程容器,甚至用 VS Code 图形化界面操作,完全不必反复登录。 下面我就用管理微服容器的例子,把实现方法和使用体验记录下来 ### 1. 准备免密登录 为了避免奇怪的认证问题,可以先将 SSH Key 复制到远端,实现免密登录。 (/root 目录重启不会丢失 SSH Key) ```bash ssh-copy-id root@name.heiyu.space ``` ### 2. 最简单的方式:设置 DOCKER\_HOST 直接在本地设置 Docker 引擎的环境变量,指向远端的 docker.sock 文件: ```bash export DOCKER_HOST=ssh://root@name.heiyu.space ``` 在 Warp 中(非直接 SSH 登录),执行 `docker ps` 后,就可以看到远端的容器了。 不过仔细看,这里其实是系统组件,没有必要随便动,而且**千万不要随便操作系统组件容器**!  ### 3. 使用 Docker Context 管理非标准路径的 docker.sock 之前介绍过,playground 和 appstore 的 Docker 配置文件在其他目录。 这种情况下可以通过 `docker context` 引用非标准路径的 docker.sock: ```bash docker context create my-remote-sock \ --docker "host=ssh://root@name.heiyu.space:/data/playground/docker.sock" docker context use my-remote-sock ``` playground 的 Docker 也可以用 **Dockge** 管理,不过当 Dockge 的功能不够用时,就可以用这个作为备用方案。 ### 4. 管理商店容器 商店有时需要执行 `lzc-docker exec` 或 `lzc-docker restart`,可以先创建对应的 Context: ```bash docker context create lzc-remote-sock \ --docker "host=ssh://root@name.heiyu.space:/lzcsys/run/lzc-docker/docker.sock" ``` 然后切换 Docker 引擎: ```bash docker context use lzc-remote-sock ``` 查看 Docker 信息: ``` Kernel Version: 6.5.0-0.deb12.4-amd64 Operating System: Debian GNU/Linux 12 (bookworm) (containerized) OSType: linux Architecture: x86_64 CPUs: 8 Total Memory: 31.12GiB Name: lzcbox-029c588e ID: 0726989e-2e3e-46d1-89ba-753f7dd1a600 Docker Root Dir: /lzcsys/run/data/system/docker ``` ### 5. 本地 Warp 记录  到这里,你会发现**本地和远端几乎没有区别**。 ### 6. 图形化管理:VS Code Docker 插件 在 VS Code 中安装 **Microsoft 官方 Docker 插件**,即可在界面中查看远端的 **Image、Container、Logs**,并且可以直接 `exec` 进入容器。  在 **Docker Context** 面板可以直接切换上下文(相当于 `docker context use lzc-remote-sock`),然后就能在 VS Code 中操作对应容器和镜像,无需手动敲命令。  ### 7. 查看已创建的 Docker Context 在命令行查看所有 Context: ```bash docker context ls ``` 输出示例: ``` NAME DESCRIPTION DOCKER ENDPOINT default * Current DOCKER_HOST based configuration ssh://root@name.heiyu.space lzc-remote-sock ssh://root@name.heiyu.space:/lzcsys/run/lzc-docker/docker.sock my-remote-sock ssh://root@name.heiyu.space:/data/playground/docker.sock orbstack OrbStack unix:///Users/.orbstack/run/docker.sock Warning: DOCKER_HOST environment variable overrides the active context. To use a context, either set the global --context flag, or unset DOCKER_HOST environment variable. ``` ### 总结 通过 docker context 配合 VS Code Docker 插件,不仅能用命令行直接操作远端微服容器,还能图形化查看容器状态、镜像和日志。 这种方式的好处是: - 免 SSH 登录,管理更高效; - 可切换多个 docker.sock,适合同时维护多个服务环境; - 配合 VS Code,操作体验接近本地容器。 对于习惯 GUI 操作的人来说,这几乎就是远程 Docker 的“丝滑”管理方式。下次维护微服时,你也可以试试这一套。
评论
0暂无评论