Tired of typing docker ps | grep xxx
&& docker exec -ti xxxx sh
? Try me!
Although I like terminal, I still want a better tool to get into the containers to do some debugging or checking.
So I build this container-web-tty
. It can help you get into the container and execute commands via a web-tty,
based on yudai/gotty with some changes.
Both docker
and kubectl
are supported.
Of cause you can run it by downloading the binary, but thare are some
Copy-and-Paste
ways.
You can start container-web-tty
inside a container by mounting docker.sock
:
docker run -dti --restart always --name container-web-tty \
-p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
wrfly/container-web-tty
# tail logs
docker logs -f container-web-tty
Or you can mount the kubernetes config file:
docker run -dti --restart always --name container-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
You can deploy container-web-tty
in remote servers, and connect
to it via a local container-web-tty
. They use gRPC for communication.
This is useful when you cannot get the remote servers or there are more than one server that you need to connect to.
Host 192.168.66.1
and 192.168.66.2
both running:
docker run -dti --restart always --name container-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
Notes:
WEB_TTY_PORT=-1
WEB_TTY_GRPC_AUTH
must be the same between all hostsdocker run -dti --restart always --name container-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
Now you will see all the containers of all the servers via http://localhost:8080
Ctrl+w
=> You cannot do it for now (I'll working on it for Ctrl+Backspace
, but I know little about js)Ctrl+Shift+c
=> Ctrl+Insert
Ctrl+Shift+v
=> Shift+Insert
docker ps
optionscat
the history logs after enable this feature)docker run -dti --restart always --name container-web-tty \
-p 8080:8080 \
-e WEB_TTY_AUDIT=true \
-v `pwd`/container-audit:/audit \
-v /var/run/docker.sock:/var/run/docker.sock \
wrfly/container-web-tty
After you exec some commands, you will see the inputs and outputs under the
container-audit
directory, you can use cat
or tail -f
to see the changes.
You can always share the container's inputs and outputs with others via the exec
link, just share the /exec/<exec-ID>
to them!
docker run -dti --restart always --name container-web-tty \
-p 8080:8080 \
-e WEB_TTY_COLLABORATE=true \
-v /var/run/docker.sock:/var/run/docker.sock \
wrfly/container-web-tty
By enabling this feature, once you exec into the container, you can share your process with others, that means anyone got the shareable link would type the command to the tty you are working on. You can edit the same file, type the same code, in the same TTY! Just share the exec link to your friend!
GLOBAL OPTIONS:
--addr value server binding address (default: "0.0.0.0")
--audit-dir value container audit log dir path (default: "audit")
--backend value, -b value backend type, 'docker' or 'kube' or 'grpc'(remote) (default: "docker")
--control-all, --ctl-a enable container control (default: false)
--control-restart, --ctl-r enable container restart (default: false)
--control-start, --ctl-s enable container start (default: false)
--control-stop, --ctl-t enable container stop (default: false)
--debug, -d debug mode (log-level=debug enable pprof) (default: false)
--docker-host value docker host path (default: "/var/run/docker.sock")
--docker-ps value docker ps options
--enable-audit, --audit enable audit the container outputs (default: false)
--enable-collaborate, --clb collaborate on the same TTY process (default: false)
--grpc-auth value grpc auth token (default: "password")
--grpc-port value grpc server port, -1 for disable the grpc server (default: -1)
--grpc-proxy value grpc proxy address, in the format of http://127.0.0.1:8080 or socks5://127.0.0.1:1080
--grpc-servers value upstream servers, for proxy mode(grpc address and port), use comma for split
--help, -h show help (default: false)
--idle-time value time out of an idle connection
--kube-config value kube config path (default: "/home/mr/.kube/config")
--port value, -p value HTTP server port, -1 for disable the HTTP server (default: 8080)
--version, -v print the version (default: false)
List the containers on your machine:
It will execute /bin/sh
if there is no /bin/bash
inside the container:
/bin/bash
:
Run custom command:
Get container logs:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。