狂神说-Docker基础-学习笔记-03 日志、元数据、进程的查看

视频链接:https://www.bilibili.com/video/BV1og4y1q7M4?p=1

1、docker logs查看日志

要查看日志的前提是 容器中有进程运行过

docker logs -f -t --tail n 容器ID    #此处 n 表示首次打印要查看的日志数量 该命令在打印了 n 条日志后 只要还有日志产生 仍会 继续打印日志
-t # 显示时间戳
-f # 对显示的内容格式化(t、f 参数 可以一起写作 -tf 即可 先后次序不影响输出效果)
--tail number #首次输出的 日志条数
docker logs -tf 容器ID # 输出当前容器所有日志 #示例
# 此处 后台启动 centOS 镜像 作为容器 并进入 /bin/sh 运行一段shell脚本 每隔一秒输出 一个 hello 字符串(确保有进程在运行,一边查看日志)
docker run -d centos /bin/sh -c "while true;do echo hello;sleep 1;done"
docker logs -f -t --tail 10 刚刚运行的容器ID
# 这里1的输出效果是 先输出10条日志,然后每隔一秒再输出一条日志(由于是 while true循环,只能ctrl+C结束该命令)
————————————————————————————————————————————————————————————————————————————
#实际执行结果:
C:\Users\z>docker run -d centos /bin/sh -c "i=0;while i<10;do echo hello;i=i+1;sleep 1;done"
1ba631a037e8087c91ca541e604c12cf5f17d4e5f102b431bd49f50da0beea07 C:\Users\z>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES C:\Users\z>docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1ba631a037e8 centos "/bin/sh -c 'i=0;whi…" 14 seconds ago Exited (0) 12 seconds ago distracted_pare C:\Users\z>docker logs -ft 1ba631a037e8
2021-11-14T04:53:45.756136200Z /bin/sh: 10: No such file or directory
# 由于写的shell脚本不正确,导致后台容器没有运行进程被杀死了,最后只输出了一个错误信息日志(按照设想如果shell脚本正确,会输出10次hello 然后容器停止运行)
#还是执行一下while true 查看结果吧
C:\Users\z>docker run -d centos /bin/sh -c "while true;do echo hello;sleep 1;done"
f538ba990f583e68a58a62453fe989f94045d95531881ee2859e51693aff98d4 C:\Users\z>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f538ba990f58 centos "/bin/sh -c 'while t…" 7 seconds ago Up 6 seconds recursing_tu C:\Users\z>docker logs -ft --tail 10 f538ba990f58
2021-11-14T04:55:56.337365700Z hello
2021-11-14T04:55:57.339553800Z hello
2021-11-14T04:55:58.341160600Z hello
2021-11-14T04:55:59.343652000Z hello
2021-11-14T04:56:00.345573400Z hello
2021-11-14T04:56:01.347140900Z hello
2021-11-14T04:56:02.348679700Z hello
2021-11-14T04:56:03.350375700Z hello
2021-11-14T04:56:04.352198600Z hello
2021-11-14T04:56:05.353991500Z hello
2021-11-14T04:56:06.356389100Z hello
2021-11-14T04:56:07.358056900Z hello
2021-11-14T04:56:08.359753000Z hello
2021-11-14T04:56:09.361280300Z hello
2021-11-14T04:56:10.363219600Z hello
2021-11-14T04:56:11.364954700Z hello
2021-11-14T04:56:12.366588400Z hello
^C
C:\Users\z>
2、进程的查看

docker inspect查看元数据

运行示例:

C:\Users\z>docker inspect --help

Usage:  docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Return low-level information on Docker objects

Options:
-f, --format string Format the output using the given Go template
-s, --size Display total file sizes if the type is container
--type string Return JSON for specified type C:\Users\z>docker inspect 57134526c81c
[
{
"Id": "57134526c81c45ba5b9203e1717728d2e36d611cb3d031371cc36f3d0c736c1d",
"Created": "2021-11-13T16:11:31.5861229Z",
"Path": "/bin/sh",
"Args": [
"-c",
"while true;do echo zhangzhangzhang;sleep 1;done"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 2534,
"ExitCode": 0,
"Error": "",
"StartedAt": "2021-11-13T16:11:32.0996725Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"——————————————————————————此处省略 100 lines——————————————————————————————"
"Cmd": [
"/bin/sh",
"-c",
"while true;do echo zhangzhangzhang;sleep 1;done"
]
}
}
}
}
] C:\Users\z>

进入正在运行的容器

docker exec 容器ID    # 进入容器后重新开启一个终端,可以在里面进行一些配置和操作
docker attach 容器ID # 直接进入容器正在执行的终端,不会启动新的终端

运行示例:

C:\Users\z>docker exec --help

Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Run a command in a running container

Options:
-d, --detach Detached mode: run command in the background
--detach-keys string Override the key sequence for detaching a
container
-e, --env list Set environment variables
--env-file list Read in a file of environment variables
-i, --interactive Keep STDIN open even if not attached
--privileged Give extended privileges to the command
-t, --tty Allocate a pseudo-TTY
-u, --user string Username or UID (format:
<name|uid>[:<group|gid>])
-w, --workdir string Working directory inside the container C:\Users\z>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
57134526c81c centos "/bin/sh -c 'while t…" 14 minutes ago Up 14 minutes centos03
1578c133ad4f centos "/bin/bash" 21 minutes ago Up 21 minutes centos01 C:\Users\z>docker exec -it 57134526c81c
"docker exec" requires at least 2 arguments.
See 'docker exec --help'. Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...] Run a command in a running container C:\Users\z>docker exec -it 57134526c81c /bin/bash # 以交互方式 进入 centos 容器的 bash终端
[root@57134526c81c /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@57134526c81c /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 16:11 ? 00:00:00 /bin/sh -c while true;do echo zhangzhangzhang;sleep 1;done
root 921 0 0 16:26 pts/0 00:00:00 /bin/bash
root 958 1 0 16:27 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
root 959 921 0 16:27 pts/0 00:00:00 ps -ef
[root@57134526c81c /]# C:\Users\z>docker attach 1578c133ad4f
[root@1578c133ad4f /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@1578c133ad4f /]# docker
bash: docker: command not found
[root@1578c133ad4f /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 16:04 pts/0 00:00:00 /bin/bash
root 18 1 0 16:33 pts/0 00:00:00 ps -ef
[root@1578c133ad4f /]#
C:\Users\z>
# 如果以docker attach 的方式进入 上面正在运行 while true 进程的 容器 就会看到这样的输出,而且 由于是 while true 只能以关闭 终端的方式强制退出该容器
C:\Users\z>docker attach f538ba990f58
hello
hello
hello
hello

docker cp 将容器中的问卷拷贝到宿主机

C:\Users\z>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1578c133ad4f centos "/bin/bash" 31 minutes ago Up 30 minutes centos01 C:\Users\z>docker attach 1578c133ad4f
[root@1578c133ad4f /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@1578c133ad4f /]# cd usr
[root@1578c133ad4f usr]# touch helloDocker.txt
[root@1578c133ad4f usr]# ls
bin games helloDocker.txt include lib lib64 libexec local sbin share src tmp
[root@1578c133ad4f usr]# exit
exit C:\Users\z>docker cp 1578c133ad4f:usr/helloDocker.txt D:\Users\z\Downloads C:\Users\z>

拷贝是一个手动过程,后面的学习中使用 -v 卷的技术 可以实现将容器的文件夹同步到宿主机文件夹

狂神说-Docker基础-学习笔记-03 日志、元数据、进程的查看的更多相关文章

  1. xml基础学习笔记03

    继续上篇xml学习笔记,坚持.坚持.再坚持啊.... 本篇主要记录: 35.XML节点的删除与修改 36集.用XML制作RSS订阅源 <?php /* 笔记: 35.XML节点的删除与修改 使用 ...

  2. [Docker] docker 基础学习笔记3(共6篇)

    首先我们安装好了ssh server之后, 我们需要将这个容器commit,然后启动这个被commit的image. 启动方式: docker run -d -p 2222:22 /usr/sbin/ ...

  3. [Docker] docker 基础学习笔记2(共6篇)

    febootstrap 是一个自制image的一个第三方的工具,好像他们现在都要用这个.   安装还是挺方便的. yum -y install febootstrap   febootstrap -i ...

  4. [Docker] docker 基础学习笔记6(共6篇)

    这个迁移指的是docker整个系统的迁移,而不是说images存储位置迁移 docker info 查看docker的各项配置   首先做文件的迁移 使用rsync软件将docker的文件夹整体迁移到 ...

  5. [Docker] docker 基础学习笔记5(共6篇)

    docker 配置文件的位置: centos : /etc/sysconfig/docker ubuntu: /etc/default/docker   现在比如我自己电脑上已经装好了docker,但 ...

  6. [Docker] docker 基础学习笔记1(共6篇)

    巩固一下yum: yum本身是centos自带的软件,可以删掉然后再重新安装. yum本身可以配置yum源,网络的,本地的都可以.之后安装docker需要配置一个扩展源.   从163的网址里边下载好 ...

  7. [Docker] docker 基础学习笔记4(共6篇)

    离线安装nginx   apache 如何启动war包   linux 离线升级内核   nginx和Apache的使用   nginx 的负载均衡配置 是如此的简单,比weblogic的要简单100 ...

  8. Redis:学习笔记-03

    Redis:学习笔记-03 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 7. Redis配置文件 启动 ...

  9. C#RabbitMQ基础学习笔记

    RabbitMQ基础学习笔记(C#代码示例) 一.定义: MQ是MessageQueue,消息队列的简称(是流行的开源消息队列系统,利用erlang语言开发).MQ是一种应用程序对应用程序的通信方法. ...

  10. Oracle基础学习笔记

    Oracle基础学习笔记 最近找到一份实习工作,有点头疼的是,有阶段性考核,这...,实际想想看,大学期间只学过数据库原理,并没有针对某一数据库管理系统而系统的学习,这正好是一个机会,于是乎用了三天时 ...

随机推荐

  1. Spring Boot 基于 SCRAM 认证集成 Kafka 的详解

    一.说明 在现代微服务架构中,Kafka 作为消息中间件被广泛使用,而安全性则是其中的一个关键因素.在本篇文章中,我们将探讨如何在 Spring Boot 应用中集成 Kafka 并使用 SCRAM ...

  2. grpc断路器之hystrix

    上一章介绍了grpc断路器sentinel, grpc断路器之sentinel 但是由于公司线上系统用的告警与监控组件是prometheus,而sentinel暂时还没有集成prometheus,所以 ...

  3. quartz监控日志(四)自定义QuartzJobBean来实现监控

    quartz监控日志(一) quartz监控日志(二)添加监听器 quartz监控日志(三)查看卡死线程堆栈 上面几章介绍了quartz监控的几种方式,下面再介绍一种监听方式:自定义QuartzJob ...

  4. 为什么使用#define 而不是用enum定义常量

    typedef enum { IOTAG_PORT__A = (0), IOTAG_PORT__B, IOTAG_PORT__C, IOTAG_PORT__F, IOTAG_PORT__ITEMS } ...

  5. ARM汇编:MRS和MSR指令

    1.MSR和MRS指令介绍 MRS 指令:  对状态寄存器CPSR和SPSR进行读操作.通过读CPSR可以获得当前处理器的工作状态.读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有 ...

  6. 如何将一个模块文件编译到Linux内核中?

    很多粉丝在群里提问,如何把一个模块文件编译到内核中或者独立变异成ko文件.本文给大家详解讲解. 1. 内核目录 Linux内核源代码非常庞大,随着版本的发展不断增加.它使用目录树结构,并且使用Make ...

  7. Typora中的markdown语法的学习

    markdown语法学习 二级标题 三级标题 四级标题 字体 hello world hello world hello world hello world 引用 我是最nb的 分割线 图片 ctrl ...

  8. Visual Studio C++ 安装以及使用教程

    官网下载网址 https://visualstudio.microsoft.com/zh-hans/ Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器 (micr ...

  9. Android 水平滚动List 一项Item占满一页宽 设定单次滑动一次切换一次Item

    背景:水平滚动的List,一项Item占满页面宽度,相当于数量不定的选项卡,每个选项卡占满一页,左右滑动时,如何限制一次只能滑动一个Item 步骤: 1. 水平滚动布局 linearLayoutMan ...

  10. maven jetty指定端口号启动

    mvn jetty 启动指定端口号 方法 mvn jetty:run -Djetty.port=端口号 备注: 通过以上命令在 windows 中 powershell 下运行时,可能会碰到以下问题: ...