docker events API的Python客户端。
项目描述
目标
有一个CLI来启动一个在docker events上运行任意代码的过程
能够提供更改事件订阅者行为和提供数据的方法
通过模块或文件加载订阅者
事件可以扩展
安装
# pip install docker-events
使用
# docker-events --help
Usage: docker-events [OPTIONS]
Options:
-s, --sock TEXT the docker socket
-c, --config FILENAME a config yaml
-m, --module TEXT a python module to load
-f, --file PATH a python file to load
-l, --log PATH logging config
--debug enable debug log level
--help Show this message and exit.
# create a config for skydns
# cat > skydns-config.yaml << EOF
---
skydns:
domain: foo
skydns.containers:
redis:
domain: myredis.{domain}
EOF
# run skydns subscriber on start events
# docker-events -c skydns-config.yaml -m docker_events.tools.skydns
API
有一些预定义的事件: start,stop,create,die,destroy,pull
您可以像这样编写自己的事件
@event
def pull(client, event_data):
return event_data.get('status') == 'pull'
事件可以通过其他事件扩展
@docker_events.pull.extend
def pull_something(client, event_data):
return event_data['id'].startswith("foobar")
例如,如果您想使用skydns,您可能需要将以下代码放入一个文件或模块中,并通过-m或-f选项加载它
"""
setup skydns records for containers
"""
import docker_events
import etcd
import simplejson as json
etcd_client = etcd.Client()
@docker_events.start.subscribe
def set_skydns_record(client, docker_event, config):
# get ip of container
container = client.inspect_container(docker_event['id'])
container_name = container['Name'].strip("/")
container_ip = container['NetworkSettings']['IPAddress']
skydns_config = config.get('skydns', {})
skydns_containers = config.get('skydns.containers', {
'domain': 'docker.local'
})
# find domain name for this container
if skydns_config and container_name in skydns_containers:
# use template
domain = skydns_containers[container_name].get('domain').format(**skydns_config)
else:
# join container_name with domain
domain = '.'.join((container_name, skydns_config.get('domain')))
domain_path = '/'.join(reversed(domain.split('.')))
etcd_client.write('/skydns/local/skydns/{}'.format(domain_path), json.dumps({
'host': container_ip
}))
项目详情
关闭
docker-events-0.0.10.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cfb66daa5e7e9d9affac05edb6464657798ad73d9acd92d3e1a894c6aa6aac31 |
|
MD5 | ad2a48af16cc65918d27d67fb0a0b1d3 |
|
BLAKE2b-256 | be7a1f9a01569c56dd33c2574c99a4b7fcdbc665d1d951f35e7f82bc99853b2d |
关闭
docker_events-0.0.10-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c4b8b2cc6c602404f6d8c16d0f2a77145b9e108fe7b65448c2e593f86f2251e4 |
|
MD5 | f83dae74925d8b30ad60e8446dbf6953 |
|
BLAKE2b-256 | c4a06ed0d8020fdf57ce02f2077a13e8d5c0fd2b3b1cbeaed5184a7f8fdb8305 |