Chinaunix首页 | 论坛 | 博客
  • 博客访问: 477822
  • 博文数量: 63
  • 博客积分: 1485
  • 博客等级: 上尉
  • 技术积分: 596
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-21 14:49
文章分类

全部博文(63)

文章存档

2018年(8)

2017年(25)

2016年(10)

2012年(6)

2010年(14)

我的朋友

分类: LINUX

2017-08-10 07:54:49


一般在做一个image的时候,在dockerfile里面通过CMD指定要启动的命令。
那么这个启动的进程就是1号进程(我看到的是这样,应该都是吧,如果不是这样,请告知,谢谢),而它的输出就可以通过 "docker logs 来查看。

点击(此处)折叠或打开

  1. dockerfile:
  2. ....
  3. CMD goX

最近对已有的image进行改造,container的启动执行命令不再是原来的"goX"了,修改成了"goY"。"goY"对外提供了REST API,这些服务用于启停"goX"(在一个新的进程里)。

问题来了,现在通过"docker logs "看到的只是"goY"的输出,而"goX"的log看不到了。

简单的解决方法有两个:

一、把"goX"的log重定向到文件里
    需要的时候查看文件。

二、把"goX"的log重定向到一号进程的stdout上
    eg:  用shell执行的话就是:goX > /proc/1/fd/1
这样,"goX"的log就可以通过"docker logs 看到了。
当然,也可以把错误重定向出来。goX > /proc/1/fd/1 2>&1
阅读(3340) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~