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

327 天前
 Riesling

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

2014 次点击
所在节点    问与答
24 条回复
enki0423
327 天前
如果你说的是你的同事们在自己的工作电脑上运行 container ,那么是很难实现你的需求的。

你需要的可能是一个 k8s 集群,每个开发按需使用。
ltkun
327 天前
gui 的管理工具吗 随便用用就 portainer 吧
Riesling
327 天前
@enki0423 是他们自己的电脑. 我希望每个运行的 container 都能向我报告运行信息, 并且允许我 ssh 登录管理. k8s 集群什么的太高大上了, 我原以为在 docker image 里面添加一个后台运行的自动启动脚本就行了呢
@ltkun 不用 GUI, 不怕简陋, 实现功能就好. 我甚至想我发个什么指令, 然后所有运行中的 container 都给我发个 email 都行. 如果开放 ssh 太难了那我就人工顺着 IP 摸过去. 关键是 container 是后台运行的, 同事也不知道谁的在跑
ltkun
327 天前
那就 docker 命令行解决啊 是管理员啥都能干
liantian
327 天前
我做过一个类似的事情....

我们信息安全处要求开发环境也全都有杀毒、HIDS 、审计等....

解决方法是用 Red Hat Universal Base Image 8 Init 简写 ubi8/ubi-init 的基础容器,装好对应的软件和权限设置后,做为开发环境的 base ,如果你还想登陆进去,那就装个 openssh 罢了...
ktblack
327 天前
所有电脑加入 docker swarm ,然后 swarm 模式部署一个 portainer ,这样是否可行
gux928
326 天前
你在下个版本的 image 中实现一个脚本,定时发消息,你这接收。
happyn
326 天前
可以部署一个公共的 fluentd ,接收 log 转发到一个后端,可以存为文件什么的;

比如部署了一个 fluentd 服务器: 10.x.x.x:24224

然后要求每个 docker 容器运行的时候,把 log 发送到这个 fluentd 服务器;

docker run ..... --log-driver=fluentd --log-opt fluentd-address=10.x.x.x:24224


之后写个小脚本每天分析一下 log 就好了;
happyn
326 天前
上面方法的优点:

1. 可扩展性强,不论有多少容器,只要启动的时候加上这个参数,就无缝记录这个容器所有日志
2. fluentd 后端可以输出到 ES ,文件, syslog ;各种折腾都可以
3. 不用改 image
4. 只要部署一次,以后基本上就不用维护了
5. 没啥依赖,fluentd 也是个容器,启动就完了;

缺点:
1. 还是有点部署的工作量的
2. 所有容器启动都得带那个参数才行
happyn
326 天前
不过您这个 ssh 登录容器,估计是不行的;而且把 docker 容器开启 ssh 也很奇怪;
Magentaize
326 天前
在同事电脑里用 docker 跑一个 portainer agent
Riesling
326 天前
@gux928 对对,这种怎么实现呢?最基本的能定时汇报宿主 IP 就行
anubu
326 天前
- 上报宿主 IP 。可以通过日志或者内置 crontab 定时 curl 一个地址,分析访问日志
- 远程登录容器。首先,要有远程登录服务,如镜像中安装 ssh server 。其次,要解决网络问题。容器不向宿主映射 ssh 端口的话,你是登录不了的。一般会考虑容器主动向服务端发起连接,如 ssh 的反向代理隧道。也可以考虑 mesh 网络一类的自组网络,比如镜像内置 tailscale 。
以上都是自己手搓的话一些可能的方向,整体上是要实现一个远程控制管理的服务端和客户端。条件允许的话,现成的 swarm+portainer 应该更合适。
dann73580
326 天前
不怕恶心的话你甚至可以继承个哪吒探针在 docker 里,我看有人这么做了🌝🌝
lovelylain
326 天前
意思就是想在 image 里埋个后门程序,什么后门程序合适?
louisxxx
326 天前
直接给你所有同事电脑装个飞鸽子吧
louisxxx
326 天前
直接给你所有同事电脑装个灰鸽子
kgcHQbTYyvcz2w3j
326 天前
docker context
hicdn
326 天前
下一步就分布式挖矿了?
amlee
326 天前
我怎么感觉这问题,这需求这么奇怪呢。楼上还一本正经回答?

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

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

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

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

© 2021 V2EX