/
rab_docker.py
65 lines (56 loc) · 1.38 KB
/
rab_docker.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/usr/bin/env python
# -*- coding:UTF-8 -*-
#
# @AUTHOR: Rabbir
# @FILE: /root/GitHub/rab_python_packages/rab_docker.py
# @DATE: 2021/08/07 Sat
# @TIME: 16:03:08
#
# @DESCRIPTION: Docker 容器管理模块
import docker
# 主 Client
client = docker.from_env()
"""
@description: 获取 Client
-------
@param:
-------
@return:
"""
def get_client():
return client
"""
@description: 获取所有正在允许的 Docker 容器
-------
@param:
-------
@return:
"""
def get_containers(image_keyword=None, name_keyword=None):
containers = client.containers.list(all=True)
# 根据镜像名或关键词来筛选
if (image_keyword):
filtered_containers = []
for container in containers:
if (image_keyword.lower() in str(container.image).lower()):
filtered_containers.append(container)
containers = filtered_containers
# 根据容器名或关键词来筛选
if (name_keyword):
filtered_containers = []
for container in containers:
if (name_keyword.lower() in str(container.name).lower()):
filtered_containers.append(container)
containers = filtered_containers
# 如果没有筛选条件则直接返回
return containers
"""
@description: 单体测试
-------
@param:
-------
@return:
"""
if __name__ == "__main__":
for container in get_containers():
print(container.name)