问题描述

我们怎么知道有哪些容器在运行,而且它们的信息又是什么呢?

功能介绍

mydocker ps 命令主要是查询一下容器的信息数据,如 PID、容器创建时间、容器运行命令等,然后显示出来。

实现

第一步,准备数据

所有关于容器的信息,比如 PID 、容器创建时间、容器运行命令等,都没有记录,这导致容器运行完后就再也不知道它的信息了,因此需要把这部分信息保留下来。
我们先定义了一个容器的一些基本信息, 比如 PID 和创建时间等,然后默认把容器的信息以 json 的形式存储在宿主机的“/var/run/mydocker/容器名/config.json ”文件里面。
具体步骤:

  1. 生成容器信息的结构体实例
  2. 将容器信息的对象 json 序列化成字符串
  3. 根据容器名拼凑出存储容器信息的路径(如果不存在就创建)
  4. 将 json 化之后的数据写入到文件中

ab36d95d5f013157e32ede04d3abb09.png

第二步,实现 mydocker ps

准备好数据之后,查看数据的具体实现就很简单了。具体步骤如下:

  1. 找到存储容器信息的路径 /var/run/mydocker
  2. 读取该文件夹下的所有文件
  3. 将 json 文件信息反序列化成容器信息对象
  4. 最后在控制台打印出容器信息

6b2dfe1ce8f6d6dcb06afe6d36dbb02.png