如何在 Docker 中获取有关容器的信息

如何拉取主机上运行的容器的信息?
这类似于 xen 中的“xm list -long [domain_ID]”命令。

从 Docker 容器外部获取信息

  1. 下面是驻留在主机节点上的镜像列表。
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
fedora              latest              422dc563ca32        2 days ago          252MB
ubuntu              latest              dd6f76d9cc90        13 days ago         122MB
hello-world         latest              725dcfab7d63        13 days ago         1.84kB
centos              latest              d123f4e55e12        13 days ago         197MB
  1. 启动 docker 镜像之一。
# docker run -it -d 422dc563ca32 /bin/bash
52249ba75f0fa33f93202f4a2d7f83bc71600b8b75ea4db0bc5b56022bf254b6
  1. 验证新的 Docker 容器是否正在运行。
# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
52249ba75f0f        422dc563ca32        "/bin/bash"         About a minute ago   Up About a minute                       gracious_keller

"inspect "" 命令将列出容器的完整信息。
使用第一列中列出的容器 ID 和检查选项。
我们将在此处获得很长的输出。

# docker inspect 52249ba75f0f
[
    {
        "Id": "52249ba75f0fa33f93202f4a2d7f83bc71600b8b75ea4db0bc5b56022bf254b6",
        "Created": "2017-11-17T14:38:05.340313315Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 1535,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2017-11-17T14:38:05.638951265Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        }
        .......
  1. 这也可以根据需要验证的内容进行截断。
    例如,我们只能获取有关 Docker 容器的网络部分的信息。
# docker inspect --format='{{ .NetworkSettings.IPAddress }}' 52249ba75f0f
172.17.0.2
# docker inspect --format='{{ .NetworkSettings.Gateway }}' 52249ba75f0f
172.17.0.1
www. On IT Road .com

从 Docker 容器内部获取信息

下面的例子是显示 Docker 容器内部的设置。

1.首先,添加到docker容器。

# docker attach 52249ba75f0f
  1. 当你添加到一个全新的容器时,ifconfig、route 等命令将不起作用。
    由于 docker 是一个最小的安装,我们必须在需要时安装包。
    因此,要运行 ifconfig 和 route 命令,首先要安装 net-tools 包。
# yum install net-tools
  1. 现在运行命令 ifconfig 和 route 以获取有关 Docker 容器的所需信息。
# ifconfig -a
eth0: flags=4163[UP,BROADCAST,RUNNING,MULTICAST]  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 0.0.0.0
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 36502  bytes 72894961 (69.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 22286  bytes 1594850 (1.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73[UP,LOOPBACK,RUNNING]  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.17.0.1      0.0.0.0         UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0

容器配置文件

此外,有关容器的信息将存储为配置文件,可用于重新启动容器。
容器的路径位置可以从之前的“inspect”命令中收集。

日期:2020-09-17 00:16:27 来源:oir作者:oir