如何远程管理运行中的 docker container?

2023-06-17 06:53:17 +08:00
 Riesling

我开发了一个基于 Ubuntu 的 docker 在公司内供同事使用. 我怎么才能知道有多少 container 正在运行, 宿主 IP, 并且可以 ssh 到目标 container 来远程管理? 能在公司内局域网实现就可以. 谢谢

2293 次点击
所在节点    问与答
24 条回复
xbleey
2023-06-17 23:47:35 +08:00
放开 10250 端口用 socket 不行了吗
Riesling
2023-06-18 11:48:13 +08:00
不知道为啥有不少人怀疑我装后门或者挖矿啥的, 真有很多这么干的吗? 就我公司 20 几人, 平均 Intel 7 代 CPU, 一共两块 GTX1070 就是最顶级 GPU, 就算全员挖矿也是赔钱. 我甚至不是搞专业写软件的, 就写了个测试工具, 但是安装比较麻烦才使用 docker 分发. 结果同事总是忘了关闭不用的 container, 占用网络资源. 我最终目的就是 “顺着网线把他们的 container 关了, 至少停掉 container 里面运行的程序”
感谢 @happyn @anubu 我研究一下怎么弄
很多提到 swarm 的各位对不起, 这对我一个外行太难了
yinmin
2023-06-18 15:53:36 +08:00
你的电脑要是用固定 IP 地址,你在你的电脑的 Docker 上安装 portainer ,然后 Environments - Add environment - Docker Standalone - Edge Agent Standard 配置你的电脑 IP 和客户端名称,portainer 会生成一个 docker run 的容器安装命令,你在你同事的机器运行这条 docker run 命令安装客户端,之后你能在自己的 portainer 上管理所有人的 docker 了。
fox0001
2023-06-18 20:07:34 +08:00
如果只是获取各个电脑上的 Docker 容器的运行情况,不用 ssh 进去的话,可以考虑系统监控的那一套。比如 Prometheus 、InfluxDB 、Zabbix 等方案。

比如 InfluxDB 的话,可以在“镜像”装上 telegraf ,找个大家都可以访问的电脑部署 influxdb 。所有 docker 容器都运行 telegraf ,抓取运行数据,并发送到 influxdb 。然后可以使用 influxdb 的图表,或者装个 Grafana ,展示各个 Docker 容器的运行情况。

Zabbix 是个整体解决方案,应该更容易部署和管理。

Prometheus 跟 InfluxDB 类似,但采用拉数据的形式。就是各个容器暴露个端口,Prometheus 定时去访问并抓取数据。数据展示就是使用 Grafana 。据说这个更适合管理一堆容器。但我没玩过。

如果各个容器都跑了 ssh 服务,可以使用 next-terminal 这样的管理系统。可以显示是否在运行、一键 ssh 进去等,更多的状态不知道能否获取。其项目:
https://github.com/dushixiang/next-terminal

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/949450

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX