跳至主要內容

九、Docker inspect 容器元数据

安图新大约 4 分钟云原生Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源

Docker 可以让开发者打包它们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化

Docker 使用完全使用沙箱机制,两个容器之间不会有任何接口 (这个有点像 iPhone 的 app ) ,更重要的是容器性能开销极低

学习前提

在继续阅读之前,我们希望你对 Linux 有一些基本的了解,包括

1、 会使用Linux常用的命令;
2、 知道大部分的Linux常识,比如终端serviceip用户等;
3、 熟练使用Ubuntu或者Centos或者MacOS种的一种昂;

如果你对这些知识还是一知半解,可以访问我们的 Linux 基础教程 先进行一些简单的了解

Docker的应用场景

1、 Web应用的自动化打包和发布;
2、 自动化测试和持续集成、发布;
3、 在服务型环境中部署和调整数据库或其他的后台应用;
4、 从头编译或者扩展现有的OpenShift或CloudFoundry平台来搭建自己的PaaS环境;

Docker 的优点

1、 简化程序;

Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化
Docker 改变了虚拟化的方式,使开发者可以直接将自己的成果放入 Docker 中进行管理
方便快捷已经是 Docker 的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成

2、 解决运维配置噩梦;

在没有 Docker 之前,每一台机器,每一个要用到的依赖,几乎都要重新配置一遍
比如新增一台 MySQL 数据库,就要从头开始配置所有环境
有了 Docker 之后,只需要从仓库里把之前的 MySQL 镜像拉出来,直接使用

3、 节省开支;

使用 Docker ,可以在一台电脑上部署多个服务,多个应用,从而充分榨干每一滴性能
同时,又不用担心多个应用之间出现相互访问的情况

相关链接

Docker 官网: http://www.docker.comopen in new window

Github Docker 源码: https://github.com/docker/dockeropen in new window

容器元数据 就是指创建容器时,容器自带的信息

元数据

元数据(meta data)——”data about data” 描述数据的数据,一般是结构化数据 ( 如存储在数据库里的数据,规定了字段的长度、类型等 )

元数据是指从信息资源中抽取出来的用于说明其特征、内容的结构化的数据(如题名,版本、出版数据、相关说明,包括检索点等),用于组织、描述、检索、保存、管理信息和知识资源

docker inspect

Docker 中可以使用 docker inspect 命令来查看容器的元数据, 它会返回一个 JSON 文件记录着容器的配置和状态信息

docker inspect <container_id>

我们先使用 docker ps -a 命令看一下有哪些容器

[root@www.hotmindshare.com ~]# docker ps -a
CONTAINER ID        ...
cf38bec0c26f        ...
e66458d65564        ...
4558b3b54da0        ...
e08201b591cd        ...

我们随便挑一个容器 id,比如 e08201b591cd 然后使用 docker inspect 命令看一下它的元数据

[root@www.hotmindshare.com ~]# docker inspect e08201b591cd
    {
        "Id": "e08201b591cdccd198fa32c4eedbda4a9ca6c81ce2c066e885c592aede52a8a6",
        "Created": "2018-05-30T23:37:48.6125189Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "exited",
            "Running": false,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 0,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2018-05-30T23:37:49.3270577Z",
            "FinishedAt": "2018-05-30T23:37:51.1694816Z"
        },
        "Image": "sha256:e4422b8da209755dd5a8aa201ba79cef0c465003f46f6313f318a0e306e4fe05",
        "ResolvConfPath": "/var/lib/docker/containers/e08201b591cdccd198fa32c4eedbda4a9ca6c81ce2c066e885c592aede52a8a6/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/e08201b591cdccd198fa32c4eedbda4a9ca6c81ce2c066e885c592aede52a8a6/hostname",
        "HostsPath": "/var/lib/docker/containers/e08201b591cdccd198fa32c4eedbda4a9ca6c81ce2c066e885c592aede52a8a6/hosts",
        "LogPath": "/var/lib/docker/containers/e08201b591cdccd198fa32c4eedbda4a9ca6c81ce2c066e885c592aede52a8a6/e08201b591cdccd198fa32c4eedbda4a9ca6c81ce2c066e885c592aede52a8a6-json.log",
        "Name": "/hopeful_wing",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "shareable",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DiskQuota": 0,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": 0,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/55a3fbb9340df768968751d5d7ce8079259f10b0d58366fab4cd3479ce2b3dbf-init/diff:/var/lib/docker/overlay2/6c44d4437a85ab8164585a836a9d2f374633d8456ba2817966d934be1d330175/diff:/var/lib/docker/overlay2/87315a6d9aa0ed5a2a7bbe021c2390c0a0de8b929a76790c9082982b374384ef/diff:/var/lib/docker/overlay2/9414cbf7af7e6db83f2c26a1c80dc3f1b1c2dffab7a8d7b47ff5c712cfff90c1/diff:/var/lib/docker/overlay2/4a54ef73e0fccd3c653bb00b6b4a57256c0043ab4c7c0e457cddbd9e3f7cb510/diff:/var/lib/docker/overlay2/a29ae73d46b6b549db1112c0f8fded4d3f70942ea5e8a2aa8afdaaf49fd54c4c/diff",
                "MergedDir": "/var/lib/docker/overlay2/55a3fbb9340df768968751d5d7ce8079259f10b0d58366fab4cd3479ce2b3dbf/merged",
                "UpperDir": "/var/lib/docker/overlay2/55a3fbb9340df768968751d5d7ce8079259f10b0d58366fab4cd3479ce2b3dbf/diff",
                "WorkDir": "/var/lib/docker/overlay2/55a3fbb9340df768968751d5d7ce8079259f10b0d58366fab4cd3479ce2b3dbf/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "e08201b591cd",
            "Domainname": "",
            "User": "",
            "AttachStdin": true,
            "AttachStdout": true,
            "AttachStderr": true,
            "Tty": true,
            "OpenStdin": true,
            "StdinOnce": true,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "Image": "ubuntu:17.10",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "affe418192894e1f2fe0a063cbbb33983b8d874436994629ce7244b54aafd57c",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/affe41819289",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "d63a40b5f304c0db53f0956641b592dd19bf4486ce9ef17e0d7464ca930b4dfa",
                    "EndpointID": "",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "",
                    "DriverOpts": null
                }
            }
        }
    }

数据很长,如果不做统计用途,也没啥大作用,我们这里就不一一解释了

更多docker inspect 命令使用方法,可以访问 docker inspect 命令

上次编辑于:
贡献者: Andy