Skip to content

Latest commit

 

History

History
64 lines (48 loc) · 2.84 KB

README.md

File metadata and controls

64 lines (48 loc) · 2.84 KB

WatchDoger

WatchDog in Docker

  • 使用Golang实现的 可交互命令行 本机传递工具。
  • 全程使用本机127.0.0.1网络,无需外网与web,更不需要导出端口。

    对标GoTTY了属于是……

screenshot

适用情境

当你在Docker容器中运行了一个需要输入输出的可交互命令(如mirai-console-loader),你只能望着日志干瞪眼,或者冒着Docker容器被你退出时顺手玄学关闭的风险执行docker attach

但是现在,你可以选择在你的Docker容器中加入WatchDoger,只需要在原本的启动命令行前加上server,即可通过docker exec进入Docker容器执行client来连接到目标命令行。

使用

  1. Docker容器启动时用server启动目标"bash"

    如在docker-compose.ymlcommand下将原来的可交互命令之前加上server 即可。

    version: "3"
    services:
      demo:
        container_name: demo
        image: alpine:latest
        command: /bin/bash -c "chmod +x ./demobsah && chmod +x ./server && chmod +x ./client && ./server ./demobsah demoArg1 /demoArg2 -demoArg3"
  2. 需要交互时进入Docker容器开启client连上server

    • 通过/bin/bash进入client
    docker exec -it demo bash
    root@demo:~# ./client
    > 2022/03/12 21:08:08 建立连接成功
    #在这开始你的正常交互吧
    • 直接进入client
    docker exec -it demo ./client
    > 2022/03/12 21:08:08 建立连接成功
    #在这开始你的正常交互吧

最佳实践

Q&A

  • server端的使用是直接在原来的可交互命令前加上server 吗?
    • 是的,如果有遇到某些参数无法传入的情况,请提交issue
  • 运行提示Permission denied怎么办?
    • 请确保serverclient、目标命令 有可执行权限,具体可参考上方demo中的chmod +x
  • 只能在Docker环境中使用吗?
    • 并不是,只是Docker环境的需求比较典型而已,你有其他类似的需求也可以使用本项目。
  • 你的文档写的好拉,我看了还是用不来怎么办?
    • 尝试用Docker启动一个/bin/bash,然后去测试吧!
  • 我启动了client并显示建立连接成功但是为什么无法交互?
    • 请检查server日志,是否有已经在交互中的client,如有请前往对应client或等待对应client关闭。
    • 本项目为减少一些不必要的bug(如交叉回显、同时输入等在非Docker情境下不可能出现的情况),同一时刻只支持一个client连接到server,其他客户端会排队等待连接。