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

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

container, Docker, 远程, ssh

enki0423   
如果你说的是你的同事们在自己的工作电脑上运行 container ,那么是很难实现你的需求的。
你需要的可能是一个 k8s 集群,每个开发按需使用。
ltkun   
gui 的管理工具吗 随便用用就 portainer 吧
Riesling
OP
  
@enki0423 是他们自己的电脑. 我希望每个运行的 container 都能向我报告运行信息, 并且允许我 ssh 登录管理. k8s 集群什么的太高大上了, 我原以为在 docker image 里面添加一个后台运行的自动启动脚本就行了呢
@ltkun 不用 GUI, 不怕简陋, 实现功能就好. 我甚至想我发个什么指令, 然后所有运行中的 container 都给我发个 email 都行. 如果开放 ssh 太难了那我就人工顺着 IP 摸过去. 关键是 container 是后台运行的, 同事也不知道谁的在跑
ltkun   
那就 docker 命令行解决啊 是管理员啥都能干
liantian   
我做过一个类似的事情....
我们信息安全处要求开发环境也全都有杀毒、HIDS 、审计等....
解决方法是用 Red Hat Universal Base Image 8 Init 简写 ubi8/ubi-init 的基础容器,装好对应的软件和权限设置后,做为开发环境的 base ,如果你还想登陆进去,那就装个 openssh 罢了...
ktblack   
所有电脑加入 docker swarm ,然后 swarm 模式部署一个 portainer ,这样是否可行
gux928   
你在下个版本的 image 中实现一个脚本,定时发消息,你这接收。
happyn   
可以部署一个公共的 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   
上面方法的优点:
1. 可扩展性强,不论有多少容器,只要启动的时候加上这个参数,就无缝记录这个容器所有日志
2. fluentd 后端可以输出到 ES ,文件, syslog ;各种折腾都可以
3. 不用改 image
4. 只要部署一次,以后基本上就不用维护了
5. 没啥依赖,fluentd 也是个容器,启动就完了;
缺点:
1. 还是有点部署的工作量的
2. 所有容器启动都得带那个参数才行
您需要登录后才可以回帖 登录 | 立即注册

返回顶部