docker inspect 容器号或容器名称能够输出容器的详细信息
{
"Architecture":"amd64",
"Author":"wangzhehan",
"Comment":"Added hadoop hive client",
"Config": {
"AttachStderr": false,
"AttachStdin": false,
"AttachStdout": false,
"Cmd": [
"/bin/bash"
],
"CpuShares": 0,
"Cpuset": "",
"Domainname": "",
"Entrypoint": null,
"Env": null,
"ExposedPorts": {
"22/tcp": {}
},
"Hostname": "",
"Image": "",
"MacAddress": "",
"Memory": 0,
"MemorySwap": 0,
"NetworkDisabled": false,
"OnBuild": null,
"OpenStdin": false,
"PortSpecs": null,
"StdinOnce": false,
"Tty": false,
"User": "root",
"Volumes": null,
"WorkingDir": ""
},
"Container":"42062e85e250e46fdc1867da1e5a53bfea16a770515e94d81fd6cfc7ae9ba675",
"ContainerConfig": {
"AttachStderr": true,
"AttachStdin": true,
"AttachStdout": true,
"Cmd": [
"/bin/bash"
],
"CpuShares": 0,
"Cpuset": "",
"Domainname": "",
"Entrypoint": null,
"Env": null,
"ExposedPorts": {
"22/tcp": {}
},
"Hostname": "42062e85e250",
"Image": "jdclient/centos:7",
"MacAddress": "",
"Memory": 0,
"MemorySwap": 0,
"NetworkDisabled": false,
"OnBuild": null,
"OpenStdin": true,
"PortSpecs": null,
"StdinOnce": true,
"Tty": true,
"User": "root",
"Volumes": null,
"WorkingDir": ""
},
"Created":"2015-06-18T02:50:53.120470388Z",
"DockerVersion":"1.5.0",
"Id":"f0f749cfd553c13842b1c0bf4aadec7ce4b769142c58548cce484e24a6287c95",
"Os":"linux",
"Parent":"9b6f4bdec10036c3966c1f2e81bf3d3b3570a277a40d860d669557476d1211ec",
"Size": 16191,
"VirtualSize":1109989744
}
]
---------------------
定制显示docker列:
docker inspect --format='{{.State.Pid}}{{.Name}}' `docker ps -a -q`
显示则是 pid 与容器名称
对应个格式为 一级属性{{.属性}} 二级属性 {{.属性.属性}} 三级属性 {{.属性.属性.属性}}
比如{{.State.Pid}} , {{.Name}} , {{.Os}}
显示: 1064 , 镜像名 , linux
常用监控命令:
docker ps -a -q | wc -l 监控容器数量
docker ps -q | wc -l 正在运行的容器的数量
docker ps -a | grep -v 'Up ' | grep -v'CONTAINER' | wc -l 非运行状态的容器的数量
获取docker执行进程
docker top `docker ps -q`
删除docker容器
docker rm -f `docker ps -a -q` 删除所有容器
docker rm `docker ps -a -q` 删除非运行的容器
docker rm `docker ps -a | grep Exited | awk'{print $1}'` 删除异常退出的容器
删除docker无引用的镜像
docker rmi -f `docker images | grep'<none>' | awk '{print $3}'`
#查看容器---登录到物理服务器
docker ps -a|grep help ##根据微服务名称过滤
#进入容器
docker exec -it 1113a9057304 /bin/bash
##进入指定的容器--根据服务名称关键字过滤
docker exec -it `(docker ps -a|grep help|sed -n "1, 1p"| awk '{print $1}')` /bin/bash
##查看php服务
ps -ef|grep php
#查看容器---登录到宿主物理服务器
docker ps -a|grep help
#进入容器
docker exec -it 1113a9057304 /bin/bash
##进入指定的容器--根据服务关键字过滤
sudo docker exec -it `(docker ps -a|grep help|sed -n "1, 1p"| awk '{print $1}')` /bin/bash
##查看php服务及异常日志
ps -ef|grep php
tail -f /code/data/logs/201812/*
docker logs-查看docker容器日志
$ docker logs [OPTIONS] CONTAINER
Options:
--details 显示更多的信息
-f, --follow 跟踪实时日志
--since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
--tail string 从日志末尾显示多少行日志, 默认是all
-t, --timestamps 显示时间戳
--until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
例子:
实时查看docker容器日志--容器内业务日志--》映射出去到主机目录,实时监控日志告警
$ sudo docker logs -f -t --tail 行数 容器名
查看指定时间后的日志,只显示最后100行:
$ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID\
#根据微服务名称过滤查看容器应用内的日志
docker logs -f -t --since="2018-12-26" --tail=100 `(docker ps -a|grep api-walle|sed -n "1, 1p"| awk '{print $1}')`
查看最近30分钟的日志:
$ docker logs --since 30m CONTAINER_ID
查看某时间之后的日志:
$ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID
查看某时间段日志:
$ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID
#运行容器内业务脚本
command=bash -c "sleep 5 && /usr/bin/docker exec -u www-data zc-common-api.dev /usr/local/bin/php /code/Cli/cli.php Worker/BatchFriendApplyQueue/run"