Module jumpscale.clients.docker.docker
This module used to manage your conatiners, create ,run, list, delete and exec commands on docker for example
#getting docker clinet
cl = j.clients.docker.get('test')
running docker
cl.run("container_name", "threefoldtech/js-ng")
# listing contaienrs
cl.list(all=True) # lists all containers include stopped ones
# getting container
container = cl.get(<container_id or name>)
executing commmands
cl.exec("container_id", "ls /tmp")
or container.exec_run("ls /tmp)
Expand source code
"""This module used to manage your conatiners, create ,run, list, delete and exec commands on docker
for example
```
#getting docker clinet
cl = j.clients.docker.get('test')
running docker
cl.run("container_name", "threefoldtech/js-ng")
# listing contaienrs
cl.list(all=True) # lists all containers include stopped ones
# getting container
container = cl.get(<container_id or name>)
executing commmands
cl.exec("container_id", "ls /tmp")
or container.exec_run("ls /tmp)
```
"""
import docker
from jumpscale.clients.base import Client
from jumpscale.core.base import fields
class DockerClient(Client):
    base_url = fields.String()
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.__client = None
    @property
    def client(self):
        if not self.__client:
            if self.base_url:
                self.__client = docker.DockerClient(base_url=self.base_url)
            else:
                self.__client = docker.from_env()
        return self.__client
    def create(
        self,
        name,
        image,
        command=None,
        environment=None,
        entrypoint=None,
        volumes=None,
        devices=None,
        detach=True,
        ports=None,
        privileged=False,
        auto_remove=False,
        hostname="js-ng",
    ):
        """Creates a docker container without starting it
        Args:
            name (str): name of the docker container
            image (str): image of the docker container
            command (str or list) – The command to run in the container.
            environment (dict or list) – Environment variables to set inside the container, as a dictionary or a list of strings in the format ["SOMEVARIABLE=xxx"].
            entrypoint (str or list) – The entrypoint for the container.
            volumes (dict or list) –
                A dictionary to configure volumes mounted inside the container. The key is either the host path or a volume name, and the value is a dictionary with the keys:
                bind The path to mount the volume inside the container
                mode Either rw to mount the volume read/write, or ro to mount it read-only.
                example
                {'/home/user1/': {'bind': '/mnt/vol2', 'mode': 'rw'},
                '/var/www': {'bind': '/mnt/vol1', 'mode': 'ro'}}
            devices (list) –
                Expose host devices to the container, as a list of strings in the form <path_on_host>:<path_in_container>:<cgroup_permissions>.
                For example, /dev/sda:/dev/xvda:rwm allows the container to have read-write access to the host’s /dev/sda via a node named /dev/xvda inside the container.
            detach (bool, optional): detach from container after running it.
            ports The port number, as an integer. For example,
                - {'2222/tcp': 3333} will expose port 2222 inside the container as port 3333 on the host.
                - None, to assign a random host port. For example, {'2222/tcp': None}.
                - A tuple of (address, port) if you want to specify the host interface. For example, {'1111/tcp': ('127.0.0.1', 1111)}.
                - A list of integers, if you want to bind multiple host ports to a single container port. For example, {'1111/tcp': [1234, 4567]}.
            privileged (bool) – Give extended privileges to this container.
            auto_remove (bool) – enable auto-removal of the container on daemon side
            hostname (str) - hostname to be set on docker container default "js-ng"
        Returns:
            container: container object
        """
        docker = self.client.containers.create(
            name=name,
            image=image,
            command=command,
            environment=environment,
            entrypoint=entrypoint,
            volumes=volumes,
            devices=devices,
            detach=detach,
            ports=ports,
            privileged=privileged,
            auto_remove=auto_remove,
            hostname=hostname,
        )
        return docker
    def run(
        self,
        name,
        image,
        command=None,
        environment=None,
        entrypoint=None,
        volumes=None,
        devices=None,
        detach=True,
        ports=None,
        privileged=False,
        auto_remove=False,
        hostname="js-ng",
    ):
        """Runs docker container
        Args:
            name (str): name of the docker container
            image (str): image of the docker container
            command (str or list) – The command to run in the container.
            environment (dict or list) – Environment variables to set inside the container, as a dictionary or a list of strings in the format ["SOMEVARIABLE=xxx"].
            entrypoint (str or list) – The entrypoint for the container.
            volumes (dict or list) –
                A dictionary to configure volumes mounted inside the container. The key is either the host path or a volume name, and the value is a dictionary with the keys:
                bind The path to mount the volume inside the container
                mode Either rw to mount the volume read/write, or ro to mount it read-only.
                example
                {'/home/user1/': {'bind': '/mnt/vol2', 'mode': 'rw'},
                '/var/www': {'bind': '/mnt/vol1', 'mode': 'ro'}}
            devices (list) –
                Expose host devices to the container, as a list of strings in the form <path_on_host>:<path_in_container>:<cgroup_permissions>.
                For example, /dev/sda:/dev/xvda:rwm allows the container to have read-write access to the host’s /dev/sda via a node named /dev/xvda inside the container.
            detach (bool, optional): detach from container after running it.
            ports The port number, as an integer. For example,
                - {'2222/tcp': 3333} will expose port 2222 inside the container as port 3333 on the host.
                - None, to assign a random host port. For example, {'2222/tcp': None}.
                - A tuple of (address, port) if you want to specify the host interface. For example, {'1111/tcp': ('127.0.0.1', 1111)}.
                - A list of integers, if you want to bind multiple host ports to a single container port. For example, {'1111/tcp': [1234, 4567]}.
            privileged (bool) – Give extended privileges to this container.
            auto_remove (bool) – enable auto-removal of the container on daemon side
            hostname (str) - hostname to be set on docker container default "js-ng"
        Returns:
            container: container object
        """
        docker = self.client.containers.run(
            name=name,
            image=image,
            command=command,
            environment=environment,
            entrypoint=entrypoint,
            volumes=volumes,
            devices=devices,
            detach=detach,
            ports=ports,
            privileged=privileged,
            auto_remove=auto_remove,
            hostname=hostname,
        )
        return docker
    def get(self, container_id):
        """Runs docker container
        Args:
            container_id (str): Id or name of the docker container
        Returns:
            container: container object
        """
        container = self.client.containers.get(container_id)
        return container
    def exists(self, container_id):
        try:
            self.client.containers.get(container_id)
            return True
        except docker.errors.NotFound:
            return False
    def delete(self, container_id, force=False):
        """Deletes docker container
        Args:
            container_id (str): Id or name of the docker container
            force (bool): image of the docker container
        Returns:
            bool: True container deleted
        """
        container = self.get(container_id)
        container.remove(force=force)
        return True
    def kill(self, container_id, sig=None):
        """Kills docker container
        Args:
            container_id (str): Id or name of the docker container
            sig (str or int): kill siganle, default SIGKILL
        Returns:
            bool: True container killed
        """
        container = self.get(container_id)
        container.kill(sig)
        return True
    def restart(self, container_id, timeout=10):
        """Kills docker container
        Args:
            container_id (str): Id or name of the docker container
            timeout (int): timeout to stop container before trying to kill
        Returns:
            bool: True if container restarted
        """
        container = self.get(container_id)
        container.restart(timeout=timeout)
        return True
    def start(self, container_id):
        """starts docker container
        Args:
            container_id (str): Id or name of the docker container
            timeout (int): timeout to stop container before trying to kill
        Returns:
            bool: True if container started
        """
        container = self.get(container_id)
        container.start()
        return True
    def stop(self, container_id):
        """stops docker container
        Args:
            container_id (str): Id or name of the docker container
            timeout (int): timeout to stop container before trying to kill
        Returns:
            bool: True if container started
        """
        container = self.get(container_id)
        container.stop()
        return True
    def list(self, all=False):
        """Returns list of docker containers created
        Args:
            all (bool): list all containers including stopped ones
        Returns:
            list: list of containers
        """
        return self.client.containers.list(all=all)
    def exec(
        self,
        container_id,
        cmd,
        stdout=True,
        stderr=True,
        stdin=False,
        tty=False,
        privileged=False,
        user="",
        detach=False,
        stream=False,
        socket=False,
        environment=None,
        workdir=None,
        demux=True,
    ):
        """Executes command docker container
        Args:
            container_id (str): Id or name of the docker container
            cmd (str or list) – Command to be executed
            stdout (bool) – Attach to stdout. Default: True
            stderr (bool) – Attach to stderr. Default: True
            stdin (bool) – Attach to stdin. Default: False
            tty (bool) – Allocate a pseudo-TTY. Default: False
            privileged (bool) – Run as privileged.
            user (str) – User to execute command as. Default: root
            detach (bool) – If true, detach from the exec command. Default: False
            stream (bool) – Stream response data. Default: False
            socket (bool) – Return the connection socket to allow custom read/write operations. Default: False
            environment (dict or list) – A dictionary or a list of strings in the following format ["PASSWORD=xxx"] or {"PASSWORD": "xxx"}.
            workdir (str) – Path to working directory for this exec session
            demux (bool) – Return stdout and stderr separately
        Returns:
            A tuple of (exit_code, output)
            exit_code: (int):
            Exit code for the executed command or None if either stream or socket is True.
            output: (generator, bytes, or tuple):
                If stream=True, a generator yielding response chunks.
                If socket=True, a socket object for the connection.
                If demux=True, a tuple of two bytes: stdout and stderr.
                A bytestring containing response data otherwise.
        """
        docker = self.get(container_id)
        return docker.exec_run(
            cmd=cmd,
            stdout=stdout,
            stderr=stderr,
            stdin=stdin,
            tty=tty,
            privileged=privileged,
            user=user,
            detach=detach,
            stream=stream,
            socket=socket,
            environment=environment,
            workdir=workdir,
            demux=demux,
        )
Classes
class DockerClient (*args, **kwargs)- 
A simple attribute-based namespace.
SimpleNamespace(**kwargs)
base class implementation for any class with fields which supports getting/setting raw data for any instance fields.
any instance can have an optional name and a parent.
class Person(Base): name = fields.String() age = fields.Float() p = Person(name="ahmed", age="19") print(p.name, p.age)Args
parent_:Base, optional- parent instance. Defaults to None.
 instance_name_:str, optional- instance name. Defaults to None.
 **values- any given field values to initiate the instance with
 
Expand source code
class DockerClient(Client): base_url = fields.String() def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.__client = None @property def client(self): if not self.__client: if self.base_url: self.__client = docker.DockerClient(base_url=self.base_url) else: self.__client = docker.from_env() return self.__client def create( self, name, image, command=None, environment=None, entrypoint=None, volumes=None, devices=None, detach=True, ports=None, privileged=False, auto_remove=False, hostname="js-ng", ): """Creates a docker container without starting it Args: name (str): name of the docker container image (str): image of the docker container command (str or list) – The command to run in the container. environment (dict or list) – Environment variables to set inside the container, as a dictionary or a list of strings in the format ["SOMEVARIABLE=xxx"]. entrypoint (str or list) – The entrypoint for the container. volumes (dict or list) – A dictionary to configure volumes mounted inside the container. The key is either the host path or a volume name, and the value is a dictionary with the keys: bind The path to mount the volume inside the container mode Either rw to mount the volume read/write, or ro to mount it read-only. example {'/home/user1/': {'bind': '/mnt/vol2', 'mode': 'rw'}, '/var/www': {'bind': '/mnt/vol1', 'mode': 'ro'}} devices (list) – Expose host devices to the container, as a list of strings in the form <path_on_host>:<path_in_container>:<cgroup_permissions>. For example, /dev/sda:/dev/xvda:rwm allows the container to have read-write access to the host’s /dev/sda via a node named /dev/xvda inside the container. detach (bool, optional): detach from container after running it. ports The port number, as an integer. For example, - {'2222/tcp': 3333} will expose port 2222 inside the container as port 3333 on the host. - None, to assign a random host port. For example, {'2222/tcp': None}. - A tuple of (address, port) if you want to specify the host interface. For example, {'1111/tcp': ('127.0.0.1', 1111)}. - A list of integers, if you want to bind multiple host ports to a single container port. For example, {'1111/tcp': [1234, 4567]}. privileged (bool) – Give extended privileges to this container. auto_remove (bool) – enable auto-removal of the container on daemon side hostname (str) - hostname to be set on docker container default "js-ng" Returns: container: container object """ docker = self.client.containers.create( name=name, image=image, command=command, environment=environment, entrypoint=entrypoint, volumes=volumes, devices=devices, detach=detach, ports=ports, privileged=privileged, auto_remove=auto_remove, hostname=hostname, ) return docker def run( self, name, image, command=None, environment=None, entrypoint=None, volumes=None, devices=None, detach=True, ports=None, privileged=False, auto_remove=False, hostname="js-ng", ): """Runs docker container Args: name (str): name of the docker container image (str): image of the docker container command (str or list) – The command to run in the container. environment (dict or list) – Environment variables to set inside the container, as a dictionary or a list of strings in the format ["SOMEVARIABLE=xxx"]. entrypoint (str or list) – The entrypoint for the container. volumes (dict or list) – A dictionary to configure volumes mounted inside the container. The key is either the host path or a volume name, and the value is a dictionary with the keys: bind The path to mount the volume inside the container mode Either rw to mount the volume read/write, or ro to mount it read-only. example {'/home/user1/': {'bind': '/mnt/vol2', 'mode': 'rw'}, '/var/www': {'bind': '/mnt/vol1', 'mode': 'ro'}} devices (list) – Expose host devices to the container, as a list of strings in the form <path_on_host>:<path_in_container>:<cgroup_permissions>. For example, /dev/sda:/dev/xvda:rwm allows the container to have read-write access to the host’s /dev/sda via a node named /dev/xvda inside the container. detach (bool, optional): detach from container after running it. ports The port number, as an integer. For example, - {'2222/tcp': 3333} will expose port 2222 inside the container as port 3333 on the host. - None, to assign a random host port. For example, {'2222/tcp': None}. - A tuple of (address, port) if you want to specify the host interface. For example, {'1111/tcp': ('127.0.0.1', 1111)}. - A list of integers, if you want to bind multiple host ports to a single container port. For example, {'1111/tcp': [1234, 4567]}. privileged (bool) – Give extended privileges to this container. auto_remove (bool) – enable auto-removal of the container on daemon side hostname (str) - hostname to be set on docker container default "js-ng" Returns: container: container object """ docker = self.client.containers.run( name=name, image=image, command=command, environment=environment, entrypoint=entrypoint, volumes=volumes, devices=devices, detach=detach, ports=ports, privileged=privileged, auto_remove=auto_remove, hostname=hostname, ) return docker def get(self, container_id): """Runs docker container Args: container_id (str): Id or name of the docker container Returns: container: container object """ container = self.client.containers.get(container_id) return container def exists(self, container_id): try: self.client.containers.get(container_id) return True except docker.errors.NotFound: return False def delete(self, container_id, force=False): """Deletes docker container Args: container_id (str): Id or name of the docker container force (bool): image of the docker container Returns: bool: True container deleted """ container = self.get(container_id) container.remove(force=force) return True def kill(self, container_id, sig=None): """Kills docker container Args: container_id (str): Id or name of the docker container sig (str or int): kill siganle, default SIGKILL Returns: bool: True container killed """ container = self.get(container_id) container.kill(sig) return True def restart(self, container_id, timeout=10): """Kills docker container Args: container_id (str): Id or name of the docker container timeout (int): timeout to stop container before trying to kill Returns: bool: True if container restarted """ container = self.get(container_id) container.restart(timeout=timeout) return True def start(self, container_id): """starts docker container Args: container_id (str): Id or name of the docker container timeout (int): timeout to stop container before trying to kill Returns: bool: True if container started """ container = self.get(container_id) container.start() return True def stop(self, container_id): """stops docker container Args: container_id (str): Id or name of the docker container timeout (int): timeout to stop container before trying to kill Returns: bool: True if container started """ container = self.get(container_id) container.stop() return True def list(self, all=False): """Returns list of docker containers created Args: all (bool): list all containers including stopped ones Returns: list: list of containers """ return self.client.containers.list(all=all) def exec( self, container_id, cmd, stdout=True, stderr=True, stdin=False, tty=False, privileged=False, user="", detach=False, stream=False, socket=False, environment=None, workdir=None, demux=True, ): """Executes command docker container Args: container_id (str): Id or name of the docker container cmd (str or list) – Command to be executed stdout (bool) – Attach to stdout. Default: True stderr (bool) – Attach to stderr. Default: True stdin (bool) – Attach to stdin. Default: False tty (bool) – Allocate a pseudo-TTY. Default: False privileged (bool) – Run as privileged. user (str) – User to execute command as. Default: root detach (bool) – If true, detach from the exec command. Default: False stream (bool) – Stream response data. Default: False socket (bool) – Return the connection socket to allow custom read/write operations. Default: False environment (dict or list) – A dictionary or a list of strings in the following format ["PASSWORD=xxx"] or {"PASSWORD": "xxx"}. workdir (str) – Path to working directory for this exec session demux (bool) – Return stdout and stderr separately Returns: A tuple of (exit_code, output) exit_code: (int): Exit code for the executed command or None if either stream or socket is True. output: (generator, bytes, or tuple): If stream=True, a generator yielding response chunks. If socket=True, a socket object for the connection. If demux=True, a tuple of two bytes: stdout and stderr. A bytestring containing response data otherwise. """ docker = self.get(container_id) return docker.exec_run( cmd=cmd, stdout=stdout, stderr=stderr, stdin=stdin, tty=tty, privileged=privileged, user=user, detach=detach, stream=stream, socket=socket, environment=environment, workdir=workdir, demux=demux, )Ancestors
Instance variables
var base_url- 
getter method this property
will call
_get_value, which would if the value is already defined and will get the default value if notReturns
any- the field value
 
Expand source code
def getter(self): """ getter method this property will call `_get_value`, which would if the value is already defined and will get the default value if not Returns: any: the field value """ return self._get_value(name, field) var client- 
Expand source code
@property def client(self): if not self.__client: if self.base_url: self.__client = docker.DockerClient(base_url=self.base_url) else: self.__client = docker.from_env() return self.__client 
Methods
def create(self, name, image, command=None, environment=None, entrypoint=None, volumes=None, devices=None, detach=True, ports=None, privileged=False, auto_remove=False, hostname='js-ng')- 
Creates a docker container without starting it
Args
name:str- name of the docker container
 image:str- image of the docker container
 - command (str or list) – The command to run in the container.
 - environment (dict or list) – Environment variables to set inside the container, as a dictionary or a list of strings in the format ["SOMEVARIABLE=xxx"].
 - entrypoint (str or list) – The entrypoint for the container.
 - volumes (dict or list) –
 - A dictionary to configure volumes mounted inside the container. The key is either the host path or a volume name, and the value is a dictionary with the keys:
 - bind The path to mount the volume inside the container
 - mode Either rw to mount the volume read/write, or ro to mount it read-only.
 - example
 - {'/home/user1/': {'bind': '/mnt/vol2', 'mode': 'rw'},
 - '/var/www': {'bind': '/mnt/vol1', 'mode': 'ro'}}
 - devices (list) –
 - Expose host devices to the container, as a list of strings in the form 
: : .  - For example, /dev/sda:/dev/xvda:rwm allows the container to have read-write access to the host’s /dev/sda via a node named /dev/xvda inside the container.
 detach:bool, optional- detach from container after running it.
 
ports The port number, as an integer. For example, - {'2222/tcp': 3333} will expose port 2222 inside the container as port 3333 on the host. - None, to assign a random host port. For example, {'2222/tcp': None}. - A tuple of (address, port) if you want to specify the host interface. For example, {'1111/tcp': ('127.0.0.1', 1111)}. - A list of integers, if you want to bind multiple host ports to a single container port. For example, {'1111/tcp': [1234, 4567]}. privileged (bool) – Give extended privileges to this container. auto_remove (bool) – enable auto-removal of the container on daemon side hostname (str) - hostname to be set on docker container default "js-ng"
Returns
container- container object
 
Expand source code
def create( self, name, image, command=None, environment=None, entrypoint=None, volumes=None, devices=None, detach=True, ports=None, privileged=False, auto_remove=False, hostname="js-ng", ): """Creates a docker container without starting it Args: name (str): name of the docker container image (str): image of the docker container command (str or list) – The command to run in the container. environment (dict or list) – Environment variables to set inside the container, as a dictionary or a list of strings in the format ["SOMEVARIABLE=xxx"]. entrypoint (str or list) – The entrypoint for the container. volumes (dict or list) – A dictionary to configure volumes mounted inside the container. The key is either the host path or a volume name, and the value is a dictionary with the keys: bind The path to mount the volume inside the container mode Either rw to mount the volume read/write, or ro to mount it read-only. example {'/home/user1/': {'bind': '/mnt/vol2', 'mode': 'rw'}, '/var/www': {'bind': '/mnt/vol1', 'mode': 'ro'}} devices (list) – Expose host devices to the container, as a list of strings in the form <path_on_host>:<path_in_container>:<cgroup_permissions>. For example, /dev/sda:/dev/xvda:rwm allows the container to have read-write access to the host’s /dev/sda via a node named /dev/xvda inside the container. detach (bool, optional): detach from container after running it. ports The port number, as an integer. For example, - {'2222/tcp': 3333} will expose port 2222 inside the container as port 3333 on the host. - None, to assign a random host port. For example, {'2222/tcp': None}. - A tuple of (address, port) if you want to specify the host interface. For example, {'1111/tcp': ('127.0.0.1', 1111)}. - A list of integers, if you want to bind multiple host ports to a single container port. For example, {'1111/tcp': [1234, 4567]}. privileged (bool) – Give extended privileges to this container. auto_remove (bool) – enable auto-removal of the container on daemon side hostname (str) - hostname to be set on docker container default "js-ng" Returns: container: container object """ docker = self.client.containers.create( name=name, image=image, command=command, environment=environment, entrypoint=entrypoint, volumes=volumes, devices=devices, detach=detach, ports=ports, privileged=privileged, auto_remove=auto_remove, hostname=hostname, ) return docker def delete(self, container_id, force=False)- 
Deletes docker container
Args
container_id:str- Id or name of the docker container
 force:bool- image of the docker container
 
Returns
bool- True container deleted
 
Expand source code
def delete(self, container_id, force=False): """Deletes docker container Args: container_id (str): Id or name of the docker container force (bool): image of the docker container Returns: bool: True container deleted """ container = self.get(container_id) container.remove(force=force) return True def exec(self, container_id, cmd, stdout=True, stderr=True, stdin=False, tty=False, privileged=False, user='', detach=False, stream=False, socket=False, environment=None, workdir=None, demux=True)- 
Executes command docker container
Args
container_id:str- Id or name of the docker container
 
cmd (str or list) – Command to be executed stdout (bool) – Attach to stdout. Default: True stderr (bool) – Attach to stderr. Default: True stdin (bool) – Attach to stdin. Default: False tty (bool) – Allocate a pseudo-TTY. Default: False privileged (bool) – Run as privileged. user (str) – User to execute command as. Default: root detach (bool) – If true, detach from the exec command. Default: False stream (bool) – Stream response data. Default: False socket (bool) – Return the connection socket to allow custom read/write operations. Default: False environment (dict or list) – A dictionary or a list of strings in the following format ["PASSWORD=xxx"] or {"PASSWORD": "xxx"}. workdir (str) – Path to working directory for this exec session demux (bool) – Return stdout and stderr separately
Returns
- A tuple of (exit_code, output)
 exit_code- (int):
 
Exit code for the executed command or None if either stream or socket is True.
output- (generator, bytes, or tuple): If stream=True, a generator yielding response chunks. If socket=True, a socket object for the connection. If demux=True, a tuple of two bytes: stdout and stderr. A bytestring containing response data otherwise.
 
Expand source code
def exec( self, container_id, cmd, stdout=True, stderr=True, stdin=False, tty=False, privileged=False, user="", detach=False, stream=False, socket=False, environment=None, workdir=None, demux=True, ): """Executes command docker container Args: container_id (str): Id or name of the docker container cmd (str or list) – Command to be executed stdout (bool) – Attach to stdout. Default: True stderr (bool) – Attach to stderr. Default: True stdin (bool) – Attach to stdin. Default: False tty (bool) – Allocate a pseudo-TTY. Default: False privileged (bool) – Run as privileged. user (str) – User to execute command as. Default: root detach (bool) – If true, detach from the exec command. Default: False stream (bool) – Stream response data. Default: False socket (bool) – Return the connection socket to allow custom read/write operations. Default: False environment (dict or list) – A dictionary or a list of strings in the following format ["PASSWORD=xxx"] or {"PASSWORD": "xxx"}. workdir (str) – Path to working directory for this exec session demux (bool) – Return stdout and stderr separately Returns: A tuple of (exit_code, output) exit_code: (int): Exit code for the executed command or None if either stream or socket is True. output: (generator, bytes, or tuple): If stream=True, a generator yielding response chunks. If socket=True, a socket object for the connection. If demux=True, a tuple of two bytes: stdout and stderr. A bytestring containing response data otherwise. """ docker = self.get(container_id) return docker.exec_run( cmd=cmd, stdout=stdout, stderr=stderr, stdin=stdin, tty=tty, privileged=privileged, user=user, detach=detach, stream=stream, socket=socket, environment=environment, workdir=workdir, demux=demux, ) def exists(self, container_id)- 
Expand source code
def exists(self, container_id): try: self.client.containers.get(container_id) return True except docker.errors.NotFound: return False def get(self, container_id)- 
Runs docker container
Args
container_id:str- Id or name of the docker container
 
Returns
container- container object
 
Expand source code
def get(self, container_id): """Runs docker container Args: container_id (str): Id or name of the docker container Returns: container: container object """ container = self.client.containers.get(container_id) return container def kill(self, container_id, sig=None)- 
Kills docker container
Args
container_id:str- Id or name of the docker container
 sig:strorint- kill siganle, default SIGKILL
 
Returns
bool- True container killed
 
Expand source code
def kill(self, container_id, sig=None): """Kills docker container Args: container_id (str): Id or name of the docker container sig (str or int): kill siganle, default SIGKILL Returns: bool: True container killed """ container = self.get(container_id) container.kill(sig) return True def list(self, all=False)- 
Returns list of docker containers created
Args
all:bool- list all containers including stopped ones
 
Returns
list- list of containers
 
Expand source code
def list(self, all=False): """Returns list of docker containers created Args: all (bool): list all containers including stopped ones Returns: list: list of containers """ return self.client.containers.list(all=all) def restart(self, container_id, timeout=10)- 
Kills docker container
Args
container_id:str- Id or name of the docker container
 timeout:int- timeout to stop container before trying to kill
 
Returns
bool- True if container restarted
 
Expand source code
def restart(self, container_id, timeout=10): """Kills docker container Args: container_id (str): Id or name of the docker container timeout (int): timeout to stop container before trying to kill Returns: bool: True if container restarted """ container = self.get(container_id) container.restart(timeout=timeout) return True def run(self, name, image, command=None, environment=None, entrypoint=None, volumes=None, devices=None, detach=True, ports=None, privileged=False, auto_remove=False, hostname='js-ng')- 
Runs docker container
Args
name:str- name of the docker container
 image:str- image of the docker container
 - command (str or list) – The command to run in the container.
 - environment (dict or list) – Environment variables to set inside the container, as a dictionary or a list of strings in the format ["SOMEVARIABLE=xxx"].
 - entrypoint (str or list) – The entrypoint for the container.
 - volumes (dict or list) –
 - A dictionary to configure volumes mounted inside the container. The key is either the host path or a volume name, and the value is a dictionary with the keys:
 - bind The path to mount the volume inside the container
 - mode Either rw to mount the volume read/write, or ro to mount it read-only.
 - example
 - {'/home/user1/': {'bind': '/mnt/vol2', 'mode': 'rw'},
 - '/var/www': {'bind': '/mnt/vol1', 'mode': 'ro'}}
 - devices (list) –
 - Expose host devices to the container, as a list of strings in the form 
: : .  - For example, /dev/sda:/dev/xvda:rwm allows the container to have read-write access to the host’s /dev/sda via a node named /dev/xvda inside the container.
 detach:bool, optional- detach from container after running it.
 
ports The port number, as an integer. For example, - {'2222/tcp': 3333} will expose port 2222 inside the container as port 3333 on the host. - None, to assign a random host port. For example, {'2222/tcp': None}. - A tuple of (address, port) if you want to specify the host interface. For example, {'1111/tcp': ('127.0.0.1', 1111)}. - A list of integers, if you want to bind multiple host ports to a single container port. For example, {'1111/tcp': [1234, 4567]}. privileged (bool) – Give extended privileges to this container. auto_remove (bool) – enable auto-removal of the container on daemon side hostname (str) - hostname to be set on docker container default "js-ng"
Returns
container- container object
 
Expand source code
def run( self, name, image, command=None, environment=None, entrypoint=None, volumes=None, devices=None, detach=True, ports=None, privileged=False, auto_remove=False, hostname="js-ng", ): """Runs docker container Args: name (str): name of the docker container image (str): image of the docker container command (str or list) – The command to run in the container. environment (dict or list) – Environment variables to set inside the container, as a dictionary or a list of strings in the format ["SOMEVARIABLE=xxx"]. entrypoint (str or list) – The entrypoint for the container. volumes (dict or list) – A dictionary to configure volumes mounted inside the container. The key is either the host path or a volume name, and the value is a dictionary with the keys: bind The path to mount the volume inside the container mode Either rw to mount the volume read/write, or ro to mount it read-only. example {'/home/user1/': {'bind': '/mnt/vol2', 'mode': 'rw'}, '/var/www': {'bind': '/mnt/vol1', 'mode': 'ro'}} devices (list) – Expose host devices to the container, as a list of strings in the form <path_on_host>:<path_in_container>:<cgroup_permissions>. For example, /dev/sda:/dev/xvda:rwm allows the container to have read-write access to the host’s /dev/sda via a node named /dev/xvda inside the container. detach (bool, optional): detach from container after running it. ports The port number, as an integer. For example, - {'2222/tcp': 3333} will expose port 2222 inside the container as port 3333 on the host. - None, to assign a random host port. For example, {'2222/tcp': None}. - A tuple of (address, port) if you want to specify the host interface. For example, {'1111/tcp': ('127.0.0.1', 1111)}. - A list of integers, if you want to bind multiple host ports to a single container port. For example, {'1111/tcp': [1234, 4567]}. privileged (bool) – Give extended privileges to this container. auto_remove (bool) – enable auto-removal of the container on daemon side hostname (str) - hostname to be set on docker container default "js-ng" Returns: container: container object """ docker = self.client.containers.run( name=name, image=image, command=command, environment=environment, entrypoint=entrypoint, volumes=volumes, devices=devices, detach=detach, ports=ports, privileged=privileged, auto_remove=auto_remove, hostname=hostname, ) return docker def start(self, container_id)- 
starts docker container
Args
container_id:str- Id or name of the docker container
 timeout:int- timeout to stop container before trying to kill
 
Returns
bool- True if container started
 
Expand source code
def start(self, container_id): """starts docker container Args: container_id (str): Id or name of the docker container timeout (int): timeout to stop container before trying to kill Returns: bool: True if container started """ container = self.get(container_id) container.start() return True def stop(self, container_id)- 
stops docker container
Args
container_id:str- Id or name of the docker container
 timeout:int- timeout to stop container before trying to kill
 
Returns
bool- True if container started
 
Expand source code
def stop(self, container_id): """stops docker container Args: container_id (str): Id or name of the docker container timeout (int): timeout to stop container before trying to kill Returns: bool: True if container started """ container = self.get(container_id) container.stop() return True 
Inherited members