窝牛号

(docker输出日志命令)Daemon进程与日志输出

今天我们来聊聊[docker查看日志命令],以下3关于的观点希望能帮助到您找到想要的结果。

问题一:Daemon进程与日志输出

本文贡献者:【飞吻狂魔】, 疑问关键字:docker查看日志命令, 下面就让窝牛号小编为你解答,希望本文能找到您要的答案!

最佳答案前几日,遇到一个问题,需要收集在容器里一个 daemon 进程的输出日志。一般来说,容器里的进程只需要打日志到标准输出就可以了,但 daemon 进程比较特殊,daemon 进程没有控制终端,也没有继承相应的文件描述符。

上述问题可以转化为一个通用的问题:如何让一个 daemon 进程输出日志到当前的控制台上?

另外,supervisor 及 docker 在启动的时候,是不允许启动后台进程的,这是为什么呢?

在解答之前,先来看一些相关的基础知识。

查看一个进程的 pid,gpid,spid,command

上述命令打印 32036 号进程,父进程为 1098,进程组号为 32036,会话号为 32036。

打印前台进程组的进程信息。

查看进程树。

上面的程序实现了一个简单的 daemonize 例程。有以下一些地方还没有考虑到:

写一个简单的 shell 程序进行测试:

编译运行,注意现在的工作路径为 /,可执行程序要写绝对路径。

查看进程:

可以看到 daemon 进程 pid 为 30467, 其父进程为 init 进程,组长为 30466,为会话首进程,session id 也是 30466。

可以 tailf test.log 查看日志输出。

以上就是窝牛号小编解答(飞吻狂魔)贡献关于“Daemon进程与日志输出”的答案,接下来继续为你详解用户(总攻大人)分析“将日志输出到Docker容器外”的一些相关解答,希望能解决你的问题!

问题二:将日志输出到Docker容器外

贡献用户名:【总攻大人】 ,现在由窝牛号小编为你分析与【docker查看日志命令】的相关内容!

最佳答案我们可以利用 docker logs 命令查看 Docker 容器内部应用程序运行时所产生的日志,可以免除首先进入 Docker 容器,再打开应用程序的日志文件的过程。docker logs 会监控容器中操作系统的标准输出设备(STDOUT),一旦 STDOUT 有数据产生,就会将这些数据传输到另一个“设备”中,该 Docker 的被称为“日志驱动(Logging Driver)”

例如,我们有一个容器实例 ID 为 “da6743d61e1a” ,随后我们使用 docker logs 命令,查看 da6743d61e1a 容器的日志

此时,Docker 日志也在同步输出,输出的日志类似下面这样。

Docker 是怎样做到的呢?或者说,所谓的 Docker 日志驱动,到底做了些什么事情?

我们使用 docker info 命令,可以看到 Docker 容器的相关信息,其中有一项 Logging Driver 的字段。

通过输入命令,将得到Docker 当前所设置的日志驱动类型:journald

其实,Docker 已为我们提供了大量的日志驱动类型。

通过 --log-opt 参数为 json-file 日志驱动添加了两个选项,max-size=10m 表示 JSON 文件最大为 10MB(超过 10MB 就会自动生成新文件),max-file=3 表示 JSON 文件最多为3个(超过3个就会自动删除多余的旧文件)

除了在启动 Docker 容器时,可指定日志驱动以外,还可以通过修改 Docker 配置文件来指定日志驱动。

打开配置文件 /etc/sysconfig/docker ,找到以下配置片段:

可以看出,默认的日志驱动为 journald,把它修改为 syslog

然后重启 docker

众多日志驱动类型中,较为常用 的是 Syslog,因为 Syslog 是 Linux 的日志系统,很多日志分析工具都可以从 Syslog 中获取日志,比如流行的 ELK(Elasticsearch、Logstash、Kibana)日志中心。Logstash 用于收集日志,Syslog 中写入的日志可转发到 Logstash 中,随后将日志存入 Elasticsearch 中,最后可通过 Kibana 来查询日志。

接下来咱们的目标是将 Docker 容器中输出的日志写入 Syslog,那么后面需要做的就是将 Syslog 接入 ELK 了。

默认,Linux 操作系统已经安装了 Syslog 软件包,但它叫 Rsyslog。实际上,Rsyslog 是 Syslog 标准的一种实现,还有一种叫 Syslog-ng 的第三方实现。虽然 Syslog-ng 的功能较为强大,但我们还是选择使用 Rsyslog,因为操作系统已经预装了,我们无须单独安装,可以通过以下命令查看 Rsyslog 是否已安装。

如果要开启 Rsyslog 服务,我们必须对 Rsyslog 进行配置,打开文件 vi /etc/rsyslog.conf

在 rsyslog.conf 文件中有一段配置,我们需要手工去开启

重启 Rsyslog 服务,否则配置无法生效

此时,我们可以查看本地是否对外开启了 514 端口

以上就是窝牛号小编解答(总攻大人)贡献关于“将日志输出到Docker容器外”的答案,接下来继续为你详解用户(不懂烦人。)回答“Docker命令-docker run”的一些相关解答,希望能解决你的问题!

问题三:Docker命令-docker run

热心用户提供:【不懂烦人。】 ,解答(docker查看日志命令)的问题,如果问题解决,可以关注本站!

最佳答案原文

docker进程运行与独立的容器中,而容器是宿主机的一个进程。宿主机可以使本地的也可以是远程的。每当执行 docker run 之后,容器进程式独立运行的,他有自己的文件系统、网络以及与主机隔离的进程🌲。

这里将介绍如何使用 docker run 运行容器以及容器资源。

一个 docker run 命令使用如下:

docker run 命令必须指定一个容器镜像,镜像开发者可以定义镜像的一些默认值:

开发者可以通过 docker run [options] 添加或者修改镜像的默认设置。此外,开发者几乎可以完全覆盖掉容器运行时的默认设置。正因为 docker run 能修改镜像和容器的默认设置,所以他的 [options] 可选项要比其他任何docker命令都要多。

要知道更多的 [options] ,移步: options type

最好只是懂得 docker run 命令的人去使用这些选项!

当你运行Docker容器的时候你需要决定是要在后台运行还是默认前台运行,当你选择后台运行时会在命令执行后打印出最新运行的容器ID。

想要让你的容器以后台方式运行只需要在使用参数 -d=true 或者 -d 即可。docker设计的默认情况下,如果你的容器以后台方式运行,只有在父进程即docker进程退出的时候才会去把容器退出,除非你使用了 --rm 选项。如果你在运行容器时将 -d 和 --rm 两个选项一起使用,那么容器会在退出或者后台进程停止的的时候自动移除掉(只要一个情况便会自动移除镜像)。

dokcer容器后台运行是不能通过 service x start 来启动的,比如想启动一个后台运行的 nginx 服务:

这样虽然启动了容器内的 nginx 服务,但是是不可用的,因为这种方式违背了后台运行容器的使用规范。nginx服务虽然启动了,但是他的所属容器服务已经停了,导致nginx服务是不可用的。如果想启动一个nginx服务请使用如下命令:

当容器后台运行之后便不回响应命令行的的相关操作,可以通过网络连接或者文件挂载方式查看容器运行的输入输出日志。可以通过 docker attach 来操作。

在不指定 -d 的情况下,容器默认是前台运行的,可以看到容器运行时候的输入输出以及错误信息日志。容器甚至还可以模拟终端输入输出(TTY),配置项如下:

如果你没有指定 -a 参数,docker默认会指定 stdout 和 stderr ,你也可以任意指定你想要的终端显示信息,例如:

为了开启容器终端,你必须指定参数 -i -t 。通常情况下 -i -t 会一起使用 -it ,注意如果容器需要从一个pipe接收输入参数时是不能使用 -t 的,例如:

定义一个容器ID有三种方式:

UUID是由docker的后台进程创建的。如果你没有指定容器名称,那么docker会默认生成一个随机字符串名字。如果你指定了容器的名字,不管是选择前台运行还是后台运行甚至docker网络配置的时候,你都可以在通过名字 name 来引用该容器。

为了方便管理,你可以选择让docker将容器ID写入到一个文件中。这个功能类似于一些程序会将进程PID写入到文件中,例如:

虽然给一个容器指定ID不是严格的要求规范,但是你可以在启动容器的时候指定容器的标签 iamge:tag ,例如:

使用V2或之后的镜像格式制作的镜像文件具有摘要内存寻址功能。只要生成镜像的参数和方式没有改变,那么这个镜像的摘要是可预测和可引用的。

例如下面这个运行一个从 alpine 拉取的镜像:

镜像摘要: sha256:9cacb71397b640eca97488cf08582ae4e4068513101088e9f96c9814bfda95e0

.

果然 docker run 是参数最多的命令,篇幅太多了,先翻译到这里,大致使用已经涵盖了,先去翻译接下来的命令了。

更多信息请参考 原文

更多参数说明:

关于[docker查看日志命令]的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于docker查看日志命令、的信息别忘了在本站进行查找喔。

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除

窝牛号 wwww.93ysy.com   沪ICP备2021036305号-1