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
:str
orint
- 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