如何查看Docker容器日志

74次阅读
没有评论

共计 3081 个字符,预计需要花费 8 分钟才能阅读完成。

本篇内容介绍了“如何查看 Docker 容器日志”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

验证 Docker 正常启动

使用 docker info 命令,返回所有容器和镜像的数量、docker 版本、使用的执行驱动和存储驱动以及 Docker 的基本配置等。之前说过 Docker 是基于 client-server 架构,它有一个 docker 程序,既能做客户端又能做服务器端。作为客户端时,docker 程序向 Docker 守护进程发送请求,然后再对返回的请求结果进行处理。

运行第一个容器

可使用 docker run 命令创建容器。它提供了容器的创建到启动功能。运行

docker run -i -t ubuntu /bin/bash

参数 -i 保证容器中 STDIN 是开启的;

参数 - t 告诉 Docker 为要创建的容器分配一个伪 tty 终端。这样新建的容器才能提供一个交互式 shell;

接下来告诉 Docker 基于什么镜像来创建容器,上例使用的是 ubuntu 镜像,它是一个基础镜像,由 Docker 公司提供,保存在 Docker Hub Registry 上。

最后告诉 Docker 在新容器中要运行什么命令,本例中在容器中运行 /bin/bash 命令启动了一个 Bash shell。

运行命令后 Docker 会检查本地是否存在 ubuntu 镜像,如果没有就会连接 Docker Hub Registry 查看是否有该镜像,一旦找到就会下载并保存到本地宿主机中。

随后 Docker 在文件系统内部用这个镜像创建了一个新容器。它拥有自己的 IP 地址,以及一个用来和宿主机进行通信的桥接网络接口。

当容器创建完毕之后,Docker 会执行容器中的 /bin/bash 命令,这时就可以看到容器内的 shell 了。

使用第一个容器

通过启动我们以 root 用户登录到了新容器红。这是一个完整的 ubuntu 系统。

输入 exit 就可以从容器返回到宿主机的命令行了。同时容器也停止运行。但是容器仍然是存在的。可以使用 docker ps -a 命令查看当前系统中的容器列表。

docker ps 命令只显示正在运行的容器,添加 - a 参数列出所有容器。-l 参数列出最后一次运行的容器,包括正在运行和已经停止的。

可以看出有三种方式可唯一指代一个容器:长 UUID、短 UUID 和名称。

容器命名

之前创建容器时 Docker 自动生成了一个随机名称。如果创建容器时想指定名称可以使用 –name 参数。

docker run --name ivan_container -i -t ubuntu /bin/bash

一个合法的容器名称只能包含以下字符:小写字母、大写字母、数字、下划线、圆点、横线。

容器的命名是唯一的

docker rm 容器名 可以删除容器。

重新启动已停止的容器

docker start  容器名
docker start  容器 ID

附着在容器上

Docker 容器重新启动时,会沿用 docker run 命令时指定的参数来运行,因此容器重新启动后会运行一个交互式会话 shell。

可以用“docker attach 容器名 / 容器 ID“命令重新附着到该容器的会话上。运行完命令后需要按下回车进入该会话。

创建守护式容器

除了上面创建的交互式运行的容器,也可以创建长期运行的守护式容器。它没有交互式会话,非常适合运行应用程序和服务。大多数时候都需要以守护式来运行容器。

docker run --name daemon_dave -d ubuntu /bin/sh -c  while true; do echo hello world; sleep 1 done

在 docker run 上使用参数 -d,容器会被放到后台运行。

查看容器日志

docker logs  容器名 

-f 参数监控容器实时日志

docker logs -f  容器名 

用 Ctrl + C 退出日志监控。

–tail 行数 获取最后几行日志

docker logs --tail 10  容器名 

使用

docker logs --tail 0 -f  容器名 

监控某个容器的最新日志而不必读取整个日志文件。

使用 -t 参数为每条日志项加上时间戳。

docker logs -ft  容器名 

查看容器内的进程

docker top  容器名 

在容器内部运行进程

在 Docker 1.3 之后,可以通过 docker exec 命令在容器被额外启动新进程。可以在容器内运行的进程有两种类型:后台任务和交互式任务。

后台任务的例子:

docker exec -d  容器名  touch /etc/new_config_file

-d 表示需要运行一个后台进程。之后是指定运行的容器和执行的命令。本例中新建了一个空文件。

交互任务的例子:

docker exec -t -i  容器名  /bin/bash

停止守护式容器

docker stop  容器名 

docker stop 命令会向 Docker 容器进程发送 SIGTERM 信号。如果想快速停止某个容器,可以使用 docker kill 命令向容器进程发送 SIGKILL 信号。

docker ps -n x 命令会显示最后 x 个容器,不论容器正在运行还是已经停止。

自动重启容器

创建容器时可以通过 –restart 参数让 Docker 自动重新启动该容器。–restart 标志会检查容器的退出代码,并据此来决定是否要重启容器。

docker run --restrart=always --name daemon_dave -d ubuntu /bin/sh -c  while true; do echo hello world; sleep 1; done

–restart 标志被设置为 always,无论容器的退出代码是什么,Docker 都会自动重启该容器。除了 always,还可以设置为 on-failure,这样只有当容器的退出代码为非 0 值得时候,才会自动重启。另外 on-failure 还接收一个可选的重启次数参数:

--restart=on-failure:5

这样当容器退出代码非 0 时,Docker 会尝试自动重启该容器,最后重启 5 次。

–restart 是 1.2.0 版本引入的。

详细的容器信息

docker inspect  容器名 

查看容器的详细信息。使用 -f –format 来选定要查看的内容:

docker inspect --format= {{.State.Running}}   容器名 

查看容器的运行状态。

docker inspect --format  {{.NetworkSettings.IPAddress}}   容器 1  / 容器 2 

查看容器的 IP 地址,可以同时制定多个容器,如上例所示。

–format - f 支持完整的 Go 语言模板。

还可以浏览 /var/lib/docker 目录来深入了解 Docker 的工作原理。该目录存放着 Docker 镜像、容器以及容器的配置。所有的容器都保存在 /var/lib/docker/containers 目录下。

删除容器

使用 docker rm 删除容器。

运行中的 docker 容器是无法删除的。必须先通过 docker stop 或 docker kill 命令停止容器,才能将其删除。

目前没有办法一次删除所有容器,不过可以通过小技巧来删除:

docker rm  docker ps -a -q

-a 表示列出所有容器,- q 表示只需要返回容器的 ID 不返回其他信息。

“如何查看 Docker 容器日志”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计3081字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)