Exemplo n.º 1
0
 def pull(name, tag='latest', **kwargs) -> Image:
     logger.info('Pulling image %s' %
                 (name, ) if not tag else 'Pulling image %s:%s' %
                 (name, tag))
     image = get_client().images.pull(name, tag=tag, **kwargs)
     if type(image) == list():
         return image[0]
     return image
Exemplo n.º 2
0
 def build(fp,
           tag,
           logs=False,
           remove=True,
           timeout=300,
           pull_image=True,
           **kwargs):
     logger.info('Building image %s from %s' % (tag, fp))
     try:
         image, log = get_client().images.build(path=fp,
                                                tag=tag,
                                                rm=remove,
                                                timeout=timeout,
                                                pull=pull_image,
                                                **kwargs)
         if logs:
             return (image, log)
         else:
             return image
     except BuildError:
         logger.error('Build for image from %s failed' % (fp, ))
Exemplo n.º 3
0
def prune() -> dict:
    return get_client().containers.prune()
Exemplo n.º 4
0
def rm(*container_names, timeout=30):
    for name in container_names:
        container = get_client().containers.get(name)
        container.stop(timeout=timeout)
        container.remove()
Exemplo n.º 5
0
def stop(*container_names, timeout=30) -> None:
    [get_client().containers.get(name).stop(timeout=timeout) for name in container_names]
Exemplo n.º 6
0
def restart(*container_names, timeout=30) -> None:
    [get_client().containers.get(name).restart(timeout=timeout) for name in container_names]
Exemplo n.º 7
0
def exec_inside(name, command, sudo=False, user='******', detach=True, stream=True) -> tuple:
    return get_client().containers.get(name).exec_run(cmd=command, privileged=sudo, user=user, stream=stream,
                                                      detach=detach)
Exemplo n.º 8
0
def list(raw=False) -> list:
    if raw:
        return get_client().containers.list()
    else:
        return [container.name for container in get_client().containers.list()]
Exemplo n.º 9
0
def get(name):
    return get_client().containers.get(name)
Exemplo n.º 10
0
 def list_all(name=True, raw=False, **kwargs) -> list:
     if name:
         return [image.name for image in get_client().images.list(**kwargs)]
     elif raw:
         return get_client().images.list()
Exemplo n.º 11
0
 def prune() -> dict:
     return get_client().images.prune()
Exemplo n.º 12
0
 def rm(*image_names, **kwargs) -> list:
     [
         get_client().images.remove(image=name, **kwargs)
         for name in image_names
     ]
Exemplo n.º 13
0
 def load(fp) -> list:
     with open(fp, 'rb') as f:
         images = get_client().images.load(f)
     return images
Exemplo n.º 14
0
 def save(name, fp, chunk_size=2097152, named=True) -> None:
     logger.info('Saving image %s to file %s' % (name, fp))
     with open(fp, 'wb') as f:
         for e in get_client().images.get(name).save(chunk_size=chunk_size,
                                                     named=named):
             f.write(e)
Exemplo n.º 15
0
def resume(*container_names) -> None:
    [get_client().containers.get(name).unpause() for name in container_names]
Exemplo n.º 16
0
def run(image_name, name, detach=True, **kwargs) -> Container:
    logger.info('Run a container with name %s from image %s' % (name, image_name))
    try:
        container = get_client().containers.run(image_name, name=name, detach=detach, **kwargs)
        if container.status !=
Exemplo n.º 17
0
def status(name) -> str:
    return get_client().containers.get(name).status()
Exemplo n.º 18
0
def create(image_name, name, detach=True, **kwargs):
    logger.info('Create a container with name %s from image %s' % (name, image_name))
    container =  get_client().containers.create(image_name, name=name, detach=detach, **kwargs)
Exemplo n.º 19
0
def stats(*container_names) -> list:
    return [get_client().containers.get(name).stats(stream=True, decode=True) for name in container_names]
Exemplo n.º 20
0
def start(*container_names) -> None:
    logger.info('Starting containers: ' % (name, image_name))
    [get_client().containers.get(name).start() for name in container_names]
Exemplo n.º 21
0
def export(name, fp, chunk_size=2097152) -> None:
    bits, status = get_client().containers.get(name).export(chunk_size=chunk_size)
    with open(fp, 'wb') as f:
        for chunk in bits:
            f.write(chunk)
Exemplo n.º 22
0
 def get(name) -> Image:
     try:
         return get_client().images.get(name)
     except ImageNotFound:
         logger.error('Image %s not found..' % (name, ))