容器的執行狀態獲取
阿新 • • 發佈:2018-12-29
獲得執行狀態的兩種方式
獲得容器的執行狀態主要有兩種方法,一種是通過docker cli提供的stats命令檢視容器的狀態。另一種就是通過docker api
docker stats
通過docker stats可以獲得所有的容器的狀態:
docker api
預設情況下,Docker daemon監聽unix://var/run/docker.sock,並且客戶端必須有root許可權用來與daemon互動。
為了使用Docker REST API,可以修改docker配置,新增-H標記開啟遠端訪問:
DOCKER_OPTS="$DOCKER_OPTS -H=0.0.0.0:4232"
此處開啟遠端訪問只是方便測試,但會因為沒有新增許可權驗證留下安全隱患
然後就可以用過docker api與docker daemon互動:
[email protected]:~# curl localhost:4232/version | python -mjson.tool % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 199 100 199 0 0 19638 0 --:--:-- --:--:-- --:--:-- 19900 { "ApiVersion": "1.23", "Arch": "amd64", "BuildTime": "2016-06-01T21:47:50.269346868+00:00", "GitCommit": "b9f10c9", "GoVersion": "go1.5.4", "KernelVersion": "3.16.0-30-generic", "Os": "linux", "Version": "1.11.2" }
而通過remote api獲得容器狀態比較簡單,只需要通過 /containers/<id or name>/stats
便可以獲得容器狀態。而且這個api會每秒一次的返回最新狀態。
當然,如果只是想獲得一次狀態也是很簡單的,這個api支援一個stream引數,支援 True/true/1
或 False/false/0
兩種只,前者會讓這個api每秒返回一次狀態,後者只會讓這個api返回一次。預設是前者。
[email protected]:~# curl localhost:4232/containers/d81984a3c60d/stats?stream=0 | python -mjson.tool % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1592 100 1592 0 0 1018 0 0:00:01 0:00:01 --:--:-- 1018 { "blkio_stats": { "io_merged_recursive": [], "io_queue_recursive": [], "io_service_bytes_recursive": [], "io_service_time_recursive": [], "io_serviced_recursive": [], "io_time_recursive": [], "io_wait_time_recursive": [], "sectors_recursive": [] }, "cpu_stats": { "cpu_usage": { "percpu_usage": [ 348564780 ], "total_usage": 348564780, "usage_in_kernelmode": 10000000, "usage_in_usermode": 0 }, "system_cpu_usage": 3000540000000, "throttling_data": { "periods": 0, "throttled_periods": 0, "throttled_time": 0 } }, "memory_stats": { "failcnt": 0, "limit": 1041981440, "max_usage": 6668288, "stats": { "active_anon": 6610944, "active_file": 4096, "cache": 32768, "hierarchical_memory_limit": 18446744073709551615, "inactive_anon": 12288, "inactive_file": 0, "mapped_file": 0, "pgfault": 1133, "pgmajfault": 0, "pgpgin": 669, "pgpgout": 584, "rss": 6594560, "rss_huge": 6291456, "total_active_anon": 6610944, "total_active_file": 4096, "total_cache": 32768, "total_inactive_anon": 12288, "total_inactive_file": 0, "total_mapped_file": 0, "total_pgfault": 1133, "total_pgmajfault": 0, "total_pgpgin": 669, "total_pgpgout": 584, "total_rss": 6594560, "total_rss_huge": 6291456, "total_unevictable": 0, "total_writeback": 0, "unevictable": 0, "writeback": 0 }, "usage": 6627328 }, "networks": { "eth0": { "rx_bytes": 2592, "rx_dropped": 0, "rx_errors": 0, "rx_packets": 32, "tx_bytes": 648, "tx_dropped": 0, "tx_errors": 0, "tx_packets": 8 } }, "pids_stats": {}, "precpu_stats": { "cpu_usage": { "percpu_usage": [ 347925623 ], "total_usage": 347925623, "usage_in_kernelmode": 10000000, "usage_in_usermode": 0 }, "system_cpu_usage": 2999540000000, "throttling_data": { "periods": 0, "throttled_periods": 0, "throttled_time": 0 } }, "read": "2016-10-08T00:05:40+08:00" }
歡迎到微信裡去當吃瓜群眾