0.前言
当我们想进入某个容器内部的时候,通常会执行这个命令组合 docker ps | grep xxx
&& docker exec -ti xxxx sh
, 但老这样敲也是很烦,也许你可以试一下这个项目。它能够帮助你通过点击网页的方式 进到容器里执行命令。初版的代码是基于yudai/gotty这个项目的,感谢yudai。后端可以对接docker或者kubectl。
项目来源:https://github.com/wrfly/container-web-tty
1.运行
通过docker:
docker run --rm -ti --name web-tty \
-p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
wrfly/container-web-tty
通过kubernets:
你需要把kubernetes的配置文件挂进去,默认是在 $HOME/.kube/config
,然后指定一下backed的类型,也就是kube
docker run --rm -ti --name web-tty \
-p 8080:8080 \
-e WEB_TTY_BACKEND=kube \
-e WEB_TTY_KUBE_CONFIG=/kube.config \
-v ~/.kube/config:/kube.config \
wrfly/container-web-tty
通过gRPC代理:
当我们有很多server需要接入的时候,就可以使用这种模式把远程的container-web-tty
们 merge 到一起,典型的CS模式,通过gRPC通信。
在一个界面上查看多台机器上的容器。
远程配置
假如有两台机器 192.168.66.1
和 192.168.66.2
,他们可以用如下的命令来启动container-web-tty
docker run --rm -ti --name web-tty \
-p 8080:8080 \
-p 8090:8090 \
-e WEB_TTY_GRPC_PORT=8090 \
-e WEB_TTY_GRPC_AUTH=96ssW0rd \
-v /var/run/docker.sock:/var/run/docker.sock \
wrfly/container-web-tty
注意:
- 你可以通过设置
WEB_TTY_PORT=-1
的方式来关闭HTTPserver,拒绝一般接入 - 这个
WEB_TTY_GRPC_AUTH
key 在所有机器上必须要相同(目前)
本地配置
docker run --rm -ti --name web-tty \
-p 8080:8080 \
-e WEB_TTY_BACKEND=grpc \
-e WEB_TTY_GRPC_AUTH=96ssW0rd \
-e WEB_TTY_GRPC_SERVERS=192.168.66.1:8090,192.168.66.2:8090 \
wrfly/container-web-tty
现在你就可以通过访问 http://localhost:8080 来获取两台机器上所有的容器
2.效果展示:
首页:
exec模式
在选择shell的时候,优选选择bash,如果没有,就依次选择ash,sh,再没有就退出了。
logs查看:
。。。
3.小结:
虽然命令行操作最快速方便,但是作为开发或者调试,临时采用这个工具可以极大的提高开发效率。值得推荐,镜像采用alpine
写的,非常轻量干净。