我开发了一个基于 Ubuntu 的 docker 在公司内供同事使用. 我怎么才能知道有多少 container 正在运行, 宿主 IP, 并且可以 ssh 到目标 container 来远程管理? 能在公司内局域网实现就可以. 谢谢 container, Docker, 远程, ssh
@enki0423 是他们自己的电脑. 我希望每个运行的 container 都能向我报告运行信息, 并且允许我 ssh 登录管理. k8s 集群什么的太高大上了, 我原以为在 docker image 里面添加一个后台运行的自动启动脚本就行了呢 @ltkun 不用 GUI, 不怕简陋, 实现功能就好. 我甚至想我发个什么指令, 然后所有运行中的 container 都给我发个 email 都行. 如果开放 ssh 太难了那我就人工顺着 IP 摸过去. 关键是 container 是后台运行的, 同事也不知道谁的在跑
我做过一个类似的事情.... 我们信息安全处要求开发环境也全都有杀毒、HIDS 、审计等.... 解决方法是用 Red Hat Universal Base Image 8 Init 简写 ubi8/ubi-init 的基础容器,装好对应的软件和权限设置后,做为开发环境的 base ,如果你还想登陆进去,那就装个 openssh 罢了...
可以部署一个公共的 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 就好了;
上面方法的优点: 1. 可扩展性强,不论有多少容器,只要启动的时候加上这个参数,就无缝记录这个容器所有日志 2. fluentd 后端可以输出到 ES ,文件, syslog ;各种折腾都可以 3. 不用改 image 4. 只要部署一次,以后基本上就不用维护了 5. 没啥依赖,fluentd 也是个容器,启动就完了; 缺点: 1. 还是有点部署的工作量的 2. 所有容器启动都得带那个参数才行