mirror of https://github.com/docker/docker-py.git
				
				
				
			Merge pull request #375 from micahhausler/mkdocs
Added markdown docs for #83
This commit is contained in:
		
						commit
						4ed1ee5b0f
					
				|  | @ -8,3 +8,6 @@ dist | ||||||
| .tox | .tox | ||||||
| .coverage | .coverage | ||||||
| html/* | html/* | ||||||
|  | 
 | ||||||
|  | # Compiled Documentation | ||||||
|  | site/ | ||||||
|  |  | ||||||
							
								
								
									
										437
									
								
								README.md
								
								
								
								
							
							
						
						
									
										437
									
								
								README.md
								
								
								
								
							|  | @ -6,440 +6,17 @@ docker-py | ||||||
| An API client for docker written in Python | An API client for docker written in Python | ||||||
| 
 | 
 | ||||||
| Installation | Installation | ||||||
| ============ | ------------ | ||||||
| 
 | 
 | ||||||
| Our latest stable is always available on PyPi. | Our latest stable is always available on PyPi. | ||||||
| 
 | 
 | ||||||
|     pip install docker-py |     pip install docker-py | ||||||
| 
 | 
 | ||||||
| API | Documentation | ||||||
| === | ------------ | ||||||
| 
 | 
 | ||||||
| To instantiate a `Client` class that will allow you to communicate with | Full documentation is available in the `/docs/` directory. | ||||||
| a Docker daemon, simply do: |  | ||||||
| 
 | 
 | ||||||
| ```python | License | ||||||
| c = docker.Client(base_url='unix://var/run/docker.sock', | ------- | ||||||
|                   version='1.12', | Docker is licensed under the Apache License, Version 2.0. See LICENSE for full license text | ||||||
|                   timeout=10) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| `base_url` refers to the protocol+hostname+port where the docker server |  | ||||||
| is hosted. `version` is the version of the API the client will use and |  | ||||||
| `timeout` specifies the HTTP request timeout, in seconds. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.build(path=None, tag=None, quiet=False, fileobj=None, nocache=False, |  | ||||||
|         rm=False, stream=False, timeout=None, |  | ||||||
|         custom_context=False, encoding=None): |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Similar to the `docker build` command. Either `path` or `fileobj` needs |  | ||||||
| to be set. `path` can be a local path (to a directory containing a |  | ||||||
| Dockerfile) or a remote URL. `fileobj` must be a readable file-like |  | ||||||
| object to a Dockerfile. |  | ||||||
| 
 |  | ||||||
| If you have a tar file for the docker build context (including a dockerfile) |  | ||||||
| already, pass a readable file-like object to `fileobj` and also pass |  | ||||||
| `custom_context=True`. If the stream is compressed also, set `encoding` to |  | ||||||
| the correct value (e.g `gzip`). |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.commit(container, repository=None, tag=None, message=None, author=None, |  | ||||||
|          conf=None) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker commit` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.containers(quiet=False, all=False, trunc=True, latest=False, since=None, |  | ||||||
|              before=None, limit=-1) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker ps` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.copy(container, resource) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker cp` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.create_container(image, command=None, hostname=None, user=None, |  | ||||||
|                    detach=False, stdin_open=False, tty=False, mem_limit=0, |  | ||||||
|                    ports=None, environment=None, dns=None, volumes=None, |  | ||||||
|                    volumes_from=None, network_disabled=False, name=None, |  | ||||||
|                    entrypoint=None, cpu_shares=None, working_dir=None, |  | ||||||
|                    memswap_limit=0) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Creates a container that can then be `start`ed. Parameters are similar |  | ||||||
| to those for the `docker run` command except it doesn't support the |  | ||||||
| attach options (`-a`). See "Port bindings" and "Using volumes" below for |  | ||||||
| more information on how to create port bindings and volume mappings. |  | ||||||
| 
 |  | ||||||
| `command` is the command to be run in the container. String or list types are |  | ||||||
| accepted. |  | ||||||
| 
 |  | ||||||
| The `environment` variable accepts a dictionary or a list of strings |  | ||||||
| in the following format `["PASSWORD=xxx"]` or `{"PASSWORD": "xxx"}`. |  | ||||||
| 
 |  | ||||||
| The `mem_limit` variable accepts float values (which represent the memory limit |  | ||||||
| of the created container in bytes) or a string with a units identification char |  | ||||||
| ('100000b', 1000k', 128m', '1g'). If a string is specified without a units |  | ||||||
| character, bytes are assumed as an intended unit. |  | ||||||
| 
 |  | ||||||
| `volumes_from` and `dns` arguments raise TypeError exception if they are used |  | ||||||
| against v1.10 of docker remote API. Those arguments should be passed to |  | ||||||
| `start()` instead. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.diff(container) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker diff` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.export(container) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker export` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.history(image) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker history` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.images(name=None, quiet=False, all=False, viz=False) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker images` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.import_image(src, data=None, repository=None, tag=None) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker import` command. If `src` is a string or |  | ||||||
| unicode string, it will be treated as a URL to fetch the image from. To |  | ||||||
| import an image from the local machine, `src` needs to be a file-like |  | ||||||
| object or bytes collection.  To import from a tarball use your absolute |  | ||||||
| path to your tarball.  To load arbitrary data as tarball use whatever |  | ||||||
| you want as src and your tarball content in data. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.info() |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker info` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.insert(image, url, path) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker insert` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.inspect_container(container) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker inspect` command, but only for containers. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.inspect_image(image_id) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker inspect` command, but only for images. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.kill(container, signal=None) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Kill a container. Similar to the `docker kill` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.login(username, password=None, email=None, registry=None) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker login` command (but non-interactive, obviously). |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.logs(container, stdout=True, stderr=True, stream=False, timestamps=False) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker logs` command. The `stream` parameter makes the |  | ||||||
| `logs` function return a blocking generator you can iterate over to |  | ||||||
| retrieve log output as it happens. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.attach(container, stdout=True, stderr=True, stream=False, logs=False) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| The `logs` function is a wrapper around this one, which you can use |  | ||||||
| instead if you want to fetch/stream container output without first |  | ||||||
| retrieving the entire backlog. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.ping() |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Hits the /_ping endpoint of the remote API and returns the result. |  | ||||||
| An exception will be raised if the endpoint isn't responding. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.port(container, private_port) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker port` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.pull(repository, tag=None, stream=False) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker pull` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.push(repository, tag=None, stream=False) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker push` command. |  | ||||||
| 
 |  | ||||||
| ````python |  | ||||||
| c.remove_container(container, v=False, link=False) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Remove a container. Similar to the `docker rm` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.remove_image(image) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Remove an image. Similar to the `docker rmi` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.restart(container, timeout=10) |  | ||||||
| ``` |  | ||||||
| Restart a container. Similar to the `docker restart` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.search(term) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker search` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.start(container, binds=None, port_bindings=None, lxc_conf=None, |  | ||||||
|         publish_all_ports=False, links=None, privileged=False, |  | ||||||
|         dns=None, dns_search=None, volumes_from=None, network_mode=None, |  | ||||||
|         restart_policy=None, cap_add=None, cap_drop=None) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Similar to the `docker start` command, but doesn't support attach |  | ||||||
| options.  Use `docker logs` to recover `stdout`/`stderr`. |  | ||||||
| 
 |  | ||||||
| `binds` allows to bind a directory in the host to the container. See |  | ||||||
| "Using volumes" below for more information. `port_bindings` exposes |  | ||||||
| container ports to the host. See "Port bindings" below for more |  | ||||||
| information. `lxc_conf` allows to pass LXC configuration options using a |  | ||||||
| dictionary. `privileged` starts the container in privileged mode. |  | ||||||
| 
 |  | ||||||
| [Links](http://docs.docker.io/en/latest/use/working_with_links_names/) |  | ||||||
| can be specified with the `links` argument. They can either be |  | ||||||
| specified as a dictionary mapping name to alias or as a list of |  | ||||||
| `(name, alias)` tuples. |  | ||||||
| 
 |  | ||||||
| `dns` and `volumes_from` are only available if they are used with version v1.10 |  | ||||||
| of docker remote API. Otherwise they are ignored. |  | ||||||
| 
 |  | ||||||
| `network_mode` is available since v1.11 and sets the Network mode for the |  | ||||||
| container ('bridge': creates a new network stack for the container on the |  | ||||||
| docker bridge, 'none': no networking for this container, 'container:[name|id]': |  | ||||||
| reuses another container network stack), 'host': use the host network stack |  | ||||||
| inside the container. |  | ||||||
| 
 |  | ||||||
| `restart_policy` is available since v1.2.0 and sets the RestartPolicy for how a container should or should not be  |  | ||||||
| restarted on exit. By default the policy is set to no meaning do not restart the container when it exits.  |  | ||||||
| The user may specify the restart policy as a dictionary for example: |  | ||||||
| for example:  |  | ||||||
| ``` |  | ||||||
| { |  | ||||||
|     "MaximumRetryCount": 0,  |  | ||||||
|     "Name": "always" |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| for always restarting the container on exit or can specify to restart the container to restart on failure and can limit |  | ||||||
| number of restarts.  |  | ||||||
| for example: |  | ||||||
| ``` |  | ||||||
| { |  | ||||||
|     "MaximumRetryCount": 5,  |  | ||||||
|     "Name": "on-failure" |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| `cap_add` and `cap_drop` are available since v1.2.0 and can be used to add or drop certain capabilities. |  | ||||||
| The user may specify the capabilities as an array for example: |  | ||||||
| ``` |  | ||||||
| [ |  | ||||||
|     "SYS_ADMIN", |  | ||||||
|     "MKNOD" |  | ||||||
| ] |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
|   |  | ||||||
| ```python |  | ||||||
| c.stop(container, timeout=10) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Stops a container. Similar to the `docker stop` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.tag(image, repository, tag=None, force=False) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker tag` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.top(container) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker top` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.version() |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Identical to the `docker version` command. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.wait(container) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Wait for a container and return its exit code. Similar to the `docker |  | ||||||
| wait` command. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| Port bindings |  | ||||||
| ============= |  | ||||||
| 
 |  | ||||||
| Port bindings is done in two parts. Firstly, by providing a list of ports to |  | ||||||
| open inside the container in the `Client.create_container` method. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.create_container('busybox', 'ls', ports=[1111, 2222]) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Bindings are then declared in the `Client.start` method. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.start(container_id, port_bindings={1111: 4567, 2222: None}) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| You can limit the host address on which the port will be exposed like such: |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.start(container_id, port_bindings={1111: ('127.0.0.1', 4567)}) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Or without host port assignment: |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.start(container_id, port_bindings={1111: ('127.0.0.1',)}) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| If you wish to use UDP instead of TCP (default), you need to declare it |  | ||||||
| like such in both the `create_container()` and `start()` calls: |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| container_id = c.create_container('busybox', 'ls', ports=[(1111, 'udp'), 2222]) |  | ||||||
| c.start(container_id, port_bindings={'1111/udp': 4567, 2222: None}) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| Using volumes |  | ||||||
| ============= |  | ||||||
| 
 |  | ||||||
| Similarly, volume declaration is done in two parts. First, you have to provide |  | ||||||
| a list of mountpoints to the `Client.create_container` method. |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.create_container('busybox', 'ls', volumes=['/mnt/vol1', '/mnt/vol2']) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Volume mappings are then declared inside the `Client.start` method like this: |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| c.start(container_id, binds={ |  | ||||||
|     '/home/user1/': |  | ||||||
|         { |  | ||||||
|             'bind': '/mnt/vol2', |  | ||||||
|             'ro': False |  | ||||||
|         }, |  | ||||||
|     '/var/www': |  | ||||||
|         { |  | ||||||
|             'bind': '/mnt/vol1', |  | ||||||
|             'ro': True |  | ||||||
|         } |  | ||||||
| }) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Connection to daemon using HTTPS |  | ||||||
| ================================ |  | ||||||
| 
 |  | ||||||
| *These instructions are docker-py specific. Please refer to |  | ||||||
| http://docs.docker.com/articles/https/ first.* |  | ||||||
| 
 |  | ||||||
| *  Authenticate server based on public/default CA pool |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| client = docker.Client(base_url='<https_url>', tls=True) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Equivalent CLI options: `docker --tls ...` |  | ||||||
| 
 |  | ||||||
| If you want to use TLS but don't want to verify the server certificate |  | ||||||
| (for example when testing with a self-signed certificate): |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| tls_config = docker.tls.TLSConfig(verify=False) |  | ||||||
| client = docker.Client(base_url='<https_url>', tls=tls_config) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| * Authenticate server based on given CA |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| tls_config = docker.tls.TLSConfig(ca_cert='/path/to/ca.pem') |  | ||||||
| client = docker.Client(base_url='<https_url>', tls=tls_config) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Equivalent CLI options: `docker --tlsverify --tlscacert /path/to/ca.pem ...` |  | ||||||
| 
 |  | ||||||
| * Authenticate with client certificate, do not authenticate server |  | ||||||
|   based on given CA |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| tls_config = docker.tls.TLSConfig( |  | ||||||
|   client_cert=('/path/to/client-cert.pem', '/path/to/client-key.pem') |  | ||||||
| ) |  | ||||||
| client = docker.Client(base_url='<https_url>', tls=tls_config) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Equivalent CLI options: |  | ||||||
| `docker --tls --tlscert /path/to/client-cert.pem |  | ||||||
| --tlskey /path/to/client-key.pem ...` |  | ||||||
| 
 |  | ||||||
| * Authenticate with client certificate, authenticate server based on given CA |  | ||||||
| 
 |  | ||||||
| ```python |  | ||||||
| tls_config = docker.tls.TLSConfig( |  | ||||||
|   client_cert=('/path/to/client-cert.pem', '/path/to/client-key.pem'), |  | ||||||
|   ca_cert='/path/to/ca.pem' |  | ||||||
| ) |  | ||||||
| client = docker.Client(base_url='<https_url>', tls=tls_config) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Equivalent CLI options: |  | ||||||
| `docker --tlsverify --tlscert /path/to/client-cert.pem |  | ||||||
| --tlskey /path/to/client-key.pem --tlscacert /path/to/ca.pem ...` |  | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | mkdocs==0.9 | ||||||
|  | @ -0,0 +1,694 @@ | ||||||
|  | # Client API | ||||||
|  | 
 | ||||||
|  | To instantiate a `Client` class that will allow you to communicate with a  | ||||||
|  | Docker daemon, simply do: | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | from docker import Client | ||||||
|  | c = Client(base_url='unix://var/run/docker.sock') | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * base_url (str): Refers to the protocol+hostname+port where the Docker server  | ||||||
|  | is hosted. | ||||||
|  | * version (str): The version of the API the client will use | ||||||
|  | * timeout (int): The HTTP request timeout, in seconds. | ||||||
|  | * tls (bool or [TLSConfig](tls.md#TLSConfig)): Equivalent CLI options:  | ||||||
|  | `docker --tls ...` | ||||||
|  | 
 | ||||||
|  |   | ||||||
|  | ## attach | ||||||
|  | 
 | ||||||
|  | The `.logs()` function is a wrapper around this method, which you can use  | ||||||
|  | instead if you want to fetch/stream container output without first retrieving  | ||||||
|  | the entire backlog. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * container (str): The container to attach to | ||||||
|  | * stdout (bool): Get STDOUT | ||||||
|  | * stderr (bool): Get STDERR | ||||||
|  | * stream (bool): Return an interator | ||||||
|  | * logs (bool): Get all previous output | ||||||
|  | 
 | ||||||
|  | **Returns** (generator or str): The logs or output for the image | ||||||
|  | 
 | ||||||
|  | ## build | ||||||
|  | 
 | ||||||
|  | Similar to the `docker build` command. Either `path` or `fileobj` needs to be  | ||||||
|  | set. `path` can be a local path (to a directory containing a Dockerfile) or a  | ||||||
|  | remote URL. `fileobj` must be a readable file-like object to a Dockerfile. | ||||||
|  | 
 | ||||||
|  | If you have a tar file for the Docker build context (including a Dockerfile)  | ||||||
|  | already, pass a readable file-like object to `fileobj` and also pass  | ||||||
|  | `custom_context=True`. If the stream is compressed also, set `encoding` to the  | ||||||
|  | correct value (e.g `gzip`). | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * path (str): Path to the directory containing the Dockerfile | ||||||
|  | * tag (str): A tag to add to the final image | ||||||
|  | * quiet (bool): Whether to return the status | ||||||
|  | * fileobj: A file object to use as the Dockerfile. (Or a file-like object) | ||||||
|  | * nocache (bool): Don't use the cache when set to `True` | ||||||
|  | * rm (bool): Remove intermediate containers | ||||||
|  | * stream (bool): Return a blocking generator you can iterate over to retrieve  | ||||||
|  | build output as it happens | ||||||
|  | * timeout (int): HTTP timeout | ||||||
|  | * custom_context (bool): Optional if using `fileobj` | ||||||
|  | * encoding (str): The encoding for a stream. Set to `gzip` for compressing | ||||||
|  | 
 | ||||||
|  | **Returns** (generator): A generator of the build output | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | >>> from io import BytesIO | ||||||
|  | >>> from docker import Client | ||||||
|  | >>> dockerfile = ''' | ||||||
|  | ... # Shared Volume | ||||||
|  | ... FROM busybox:buildroot-2014.02 | ||||||
|  | ... MAINTAINER first last, first.last@yourdomain.com | ||||||
|  | ... VOLUME /data | ||||||
|  | ... CMD ["/bin/sh"] | ||||||
|  | ... ''' | ||||||
|  | >>> f = BytesIO(dockerfile.encode('utf-8')) | ||||||
|  | >>> cli = Client(base_url='tcp://127.0.0.1:2375') | ||||||
|  | >>> response = [line for line in cli.build( | ||||||
|  | ...     fileobj=f, rm=True, tag='yourname/volume' | ||||||
|  | ... )] | ||||||
|  | >>> response | ||||||
|  | ['{"stream":" ---\\u003e a9eb17255234\\n"}', | ||||||
|  | '{"stream":"Step 1 : MAINTAINER first last, first.last@yourdomain.com\\n"}', | ||||||
|  | '{"stream":" ---\\u003e Running in 08787d0ee8b1\\n"}', | ||||||
|  | '{"stream":" ---\\u003e 23e5e66a4494\\n"}', | ||||||
|  | '{"stream":"Removing intermediate container 08787d0ee8b1\\n"}', | ||||||
|  | '{"stream":"Step 2 : VOLUME /data\\n"}', | ||||||
|  | '{"stream":" ---\\u003e Running in abdc1e6896c6\\n"}', | ||||||
|  | '{"stream":" ---\\u003e 713bca62012e\\n"}', | ||||||
|  | '{"stream":"Removing intermediate container abdc1e6896c6\\n"}', | ||||||
|  | '{"stream":"Step 3 : CMD [\\"/bin/sh\\"]\\n"}', | ||||||
|  | '{"stream":" ---\\u003e Running in dba30f2a1a7e\\n"}', | ||||||
|  | '{"stream":" ---\\u003e 032b8b2855fc\\n"}', | ||||||
|  | '{"stream":"Removing intermediate container dba30f2a1a7e\\n"}', | ||||||
|  | '{"stream":"Successfully built 032b8b2855fc\\n"}'] | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | **Raises:** [TypeError]( | ||||||
|  | https://docs.python.org/3.4/library/exceptions.html#TypeError) if `path` nor  | ||||||
|  | `fileobj` are specified | ||||||
|  | 
 | ||||||
|  | ## commit | ||||||
|  | 
 | ||||||
|  | Identical to the `docker commit` command. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * container (str): The image hash of the container | ||||||
|  | * repository (str): The repository to push the image to | ||||||
|  | * tag (str): The tag to push | ||||||
|  | * message (str): A commit message | ||||||
|  | * author (str): The name of the author | ||||||
|  | * conf (dict): The configuraton for the container. See the [Docker remote api]( | ||||||
|  | https://docs.docker.com/reference/api/docker_remote_api/) for full details. | ||||||
|  | 
 | ||||||
|  | ## containers | ||||||
|  | 
 | ||||||
|  | List containers. Identical to the `docker ps` command. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * quiet (bool): Only display numeric Ids | ||||||
|  | * all (bool): Show all containers. Only running containers are shown by default | ||||||
|  | * trunc (bool): Truncate output | ||||||
|  | * latest (bool): Show only the latest created container, include non-running | ||||||
|  | ones. | ||||||
|  | * since (str): Show only containers created since Id or Name, include  | ||||||
|  | non-running ones | ||||||
|  | * before (str): Show only container created before Id or Name, include  | ||||||
|  | non-running ones | ||||||
|  | * limit (int): Show `limit` last created containers, include non-running ones | ||||||
|  | * size (bool): Display sizes | ||||||
|  | 
 | ||||||
|  | **Returns** (dict): The system's containers | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | >>> from docker import Client | ||||||
|  | >>> cli = Client(base_url='tcp://127.0.0.1:2375') | ||||||
|  | >>> cli.containers() | ||||||
|  | [{'Command': '/bin/sleep 30', | ||||||
|  |   'Created': 1412574844, | ||||||
|  |   'Id': '6e276c9e6e5759e12a6a9214efec6439f80b4f37618e1a6547f28a3da34db07a', | ||||||
|  |   'Image': 'busybox:buildroot-2014.02', | ||||||
|  |   'Names': ['/grave_mayer'], | ||||||
|  |   'Ports': [], | ||||||
|  |   'Status': 'Up 1 seconds'}] | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## copy | ||||||
|  | Identical to the `docker cp` command. Get files/folders from the container. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * container (str): The container to copy from | ||||||
|  | * resource (str): The path within the container | ||||||
|  | 
 | ||||||
|  | **Returns** (str): The contents of the file as a string | ||||||
|  | 
 | ||||||
|  | ## create_container | ||||||
|  | 
 | ||||||
|  | Creates a container that can then be `.start()` ed. Parameters are similar to  | ||||||
|  | those for the `docker run` command except it doesn't support the attach  | ||||||
|  | options (`-a`). | ||||||
|  | 
 | ||||||
|  | See [Port bindings](port-bindings.md) and [Using volumes](volumes.md) for more  | ||||||
|  | information on how to create port bindings and volume mappings. | ||||||
|  | 
 | ||||||
|  | The `mem_limit` variable accepts float values (which represent the memory limit  | ||||||
|  | of the created container in bytes) or a string with a units identification char  | ||||||
|  | ('100000b', 1000k', 128m', '1g'). If a string is specified without a units  | ||||||
|  | character, bytes are assumed as an intended unit. | ||||||
|  | 
 | ||||||
|  | `volumes_from` and `dns` arguments raise [TypeError]( | ||||||
|  | https://docs.python.org/3.4/library/exceptions.html#TypeError) exception if  | ||||||
|  | they are used against v1.10 of the Docker remote API. Those arguments should be  | ||||||
|  | passed to `start()` instead. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * image (str): The image to run | ||||||
|  | * command (str or list): The command to be run in the container | ||||||
|  | * hostname (str): Optional hostname for the container | ||||||
|  | * user (str or int): Username or UID | ||||||
|  | * detach (bool): Detached mode: run container in the background and print new  | ||||||
|  | container Id | ||||||
|  | * stdin_open (bool): Keep STDIN open even if not attached | ||||||
|  | * tty (bool): Allocate a pseudo-TTY | ||||||
|  | * mem_limit (float or str): Memory limit (format: [number][optional unit],  | ||||||
|  | where unit = b, k, m, or g) | ||||||
|  | * ports (list of ints): A list of port numbers | ||||||
|  | * environment (dict or list): A dictionary or a list of strings in the  | ||||||
|  | following format `["PASSWORD=xxx"]` or `{"PASSWORD": "xxx"}`. | ||||||
|  | * dns (list): DNS name servers | ||||||
|  | * volumes (str or list):  | ||||||
|  | * volumes_from (str or list): List of container names or Ids to get volumes  | ||||||
|  | from. Optionally a single string joining container id's with commas | ||||||
|  | * network_disabled (bool): Disable networking | ||||||
|  | * name (str): A name for the container | ||||||
|  | * entrypoint (str or list): An entrypoint | ||||||
|  | * cpu_shares (int or float): CPU shares (relative weight) | ||||||
|  | * working_dir (str): Path to the working directory | ||||||
|  | * domainname (str or list): Set custom DNS search domains | ||||||
|  | * memswap_limit: | ||||||
|  | 
 | ||||||
|  | **Returns** (dict): A dictionary with an image 'Id' key and a 'Warnings' key. | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | >>> from docker import Client | ||||||
|  | >>> cli = Client(base_url='tcp://127.0.0.1:2375') | ||||||
|  | >>> container = cli.create_container(image='busybox:latest', command='/bin/sleep 30') | ||||||
|  | >>> print(container) | ||||||
|  | {'Id': '8a61192da2b3bb2d922875585e29b74ec0dc4e0117fcbf84c962204e97564cd7', | ||||||
|  |  'Warnings': None} | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## diff | ||||||
|  | 
 | ||||||
|  | Inspect changes on a container's filesystem | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * container (str): The container to diff | ||||||
|  | 
 | ||||||
|  | **Returns** (str): | ||||||
|  | 
 | ||||||
|  | ## export | ||||||
|  | 
 | ||||||
|  | Export the contents of a filesystem as a tar archive to STDOUT | ||||||
|  | 
 | ||||||
|  | **Params**:  | ||||||
|  | 
 | ||||||
|  | * container (str): The container to export | ||||||
|  | 
 | ||||||
|  | **Returns** (str): The filesystem tar archive as a str | ||||||
|  | 
 | ||||||
|  | ## history | ||||||
|  | 
 | ||||||
|  | Show the history of an image | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * image (str): The image to show history for | ||||||
|  | 
 | ||||||
|  | **Returns** (str): The history of the image | ||||||
|  | 
 | ||||||
|  | ## images | ||||||
|  | 
 | ||||||
|  | List images. Identical to the `docker images` command. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * name (str): Optional filter for a name | ||||||
|  | * quiet (bool): Only show numeric Ids. Returns a list | ||||||
|  | * all (bool): Show all images (by default filter out the intermediate image | ||||||
|  | layers) | ||||||
|  | * viz: *Depreciated* | ||||||
|  | 
 | ||||||
|  | **Returns** (dict or list): A list if `quiet=True`, otherwise a dict. | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | [{'Created': 1401926735, | ||||||
|  | 'Id': 'a9eb172552348a9a49180694790b33a1097f546456d041b6e82e4d7716ddb721', | ||||||
|  | 'ParentId': '120e218dd395ec314e7b6249f39d2853911b3d6def6ea164ae05722649f34b16', | ||||||
|  | 'RepoTags': ['busybox:buildroot-2014.02', 'busybox:latest'], | ||||||
|  | 'Size': 0, | ||||||
|  | 'VirtualSize': 2433303}, | ||||||
|  | ... | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## import_image | ||||||
|  | 
 | ||||||
|  | Identical to the `docker import` command. If `src` is a string or unicode  | ||||||
|  | string, it will be treated as a URL to fetch the image from. To import an image  | ||||||
|  | from the local machine, `src` needs to be a file-like object or bytes  | ||||||
|  | collection.  To import from a tarball use your absolute path to your tarball.  | ||||||
|  | To load arbitrary data as tarball use whatever you want as src and your  | ||||||
|  | tarball content in data. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * src (str or file): Path to tarfile or URL | ||||||
|  | * repository (str): The repository to create | ||||||
|  | * tag (str): The tag to apply | ||||||
|  | * image (str): Use another image like the `FROM` Dockerfile parameter | ||||||
|  | 
 | ||||||
|  | ## info | ||||||
|  | 
 | ||||||
|  | Display system-wide information. Identical to the `docker info` command. | ||||||
|  | 
 | ||||||
|  | **Returns** (dict): The info as a dict | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | >>> from docker import Client | ||||||
|  | >>> cli = Client(base_url='tcp://127.0.0.1:2375') | ||||||
|  | >>> cli.info() | ||||||
|  | {'Containers': 3, | ||||||
|  |  'Debug': 1, | ||||||
|  |  'Driver': 'aufs', | ||||||
|  |  'DriverStatus': [['Root Dir', '/mnt/sda1/var/lib/docker/aufs'], | ||||||
|  |   ['Dirs', '225']], | ||||||
|  |  'ExecutionDriver': 'native-0.2', | ||||||
|  |  'IPv4Forwarding': 1, | ||||||
|  |  'Images': 219, | ||||||
|  |  'IndexServerAddress': 'https://index.docker.io/v1/', | ||||||
|  |  'InitPath': '/usr/local/bin/docker', | ||||||
|  |  'InitSha1': '', | ||||||
|  |  'KernelVersion': '3.16.1-tinycore64', | ||||||
|  |  'MemoryLimit': 1, | ||||||
|  |  'NEventsListener': 0, | ||||||
|  |  'NFd': 11, | ||||||
|  |  'NGoroutines': 12, | ||||||
|  |  'OperatingSystem': 'Boot2Docker 1.2.0 (TCL 5.3);', | ||||||
|  |  'SwapLimit': 1} | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## insert | ||||||
|  | *DEPRECATED* | ||||||
|  | 
 | ||||||
|  | ## inspect_container | ||||||
|  | 
 | ||||||
|  | Identical to the `docker inspect` command, but only for containers. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * container (str): The container to inspect | ||||||
|  | 
 | ||||||
|  | **Returns** (dict): Nearly the same output as `docker inspect`, just as a  | ||||||
|  | single dict | ||||||
|  | 
 | ||||||
|  | ## inspect_image | ||||||
|  | 
 | ||||||
|  | Identical to the `docker inspect` command, but only for images | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * image_id (str): The image to inspect | ||||||
|  | 
 | ||||||
|  | **Returns** (dict): Nearly the same output as `docker inspect`, just as a  | ||||||
|  | single dict | ||||||
|  | 
 | ||||||
|  | ## kill | ||||||
|  | 
 | ||||||
|  | Kill a container or send a signal to a container | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * container (str): The container to kill | ||||||
|  | * signal (str or int): The singal to send. Defaults to `SIGKILL` | ||||||
|  | 
 | ||||||
|  | ## login | ||||||
|  | 
 | ||||||
|  | Nearly identical to the `docker login` command, but non-interactive. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * username (str): The registry username | ||||||
|  | * password (str): The plaintext password | ||||||
|  | * email (str): The email for the registry account | ||||||
|  | * registry (str): URL to the registry. Ex:`https://index.docker.io/v1/` | ||||||
|  | * reauth (bool): Whether refresh existing authentication on the docker server. | ||||||
|  | 
 | ||||||
|  | **Returns** (dict): The response from the login request | ||||||
|  | 
 | ||||||
|  | ## logs | ||||||
|  | 
 | ||||||
|  | Identical to the `docker logs` command. The `stream` parameter makes the `logs` | ||||||
|  | function return a blocking generator you can iterate over to retrieve log  | ||||||
|  | output as it happens. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * container (str): The container to get logs from | ||||||
|  | * stdout (bool): Get STDOUT | ||||||
|  | * stderr (bool): Get STDERR | ||||||
|  | * stream (bool): Stream the response | ||||||
|  | * timestamps (bool): Show timestamps | ||||||
|  | 
 | ||||||
|  | **Returns** (generator or str): | ||||||
|  | 
 | ||||||
|  | ## ping | ||||||
|  | 
 | ||||||
|  | Hits the `/_ping` endpoint of the remote API and returns the result. An  | ||||||
|  | exception will be raised if the endpoint isn't responding. | ||||||
|  | 
 | ||||||
|  | **Returns** (bool) | ||||||
|  | 
 | ||||||
|  | ## port | ||||||
|  | Lookup the public-facing port that is NAT-ed to `private_port`. Identical to  | ||||||
|  | the `docker port` command. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * container (str): The container to look up | ||||||
|  | * private_port (int): The private port to inspect | ||||||
|  | 
 | ||||||
|  | **Returns** (list of dict): The mapping for the host ports | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | $ docker run -d -p 80:80 ubuntu:14.04 /bin/sleep 30 | ||||||
|  | 7174d6347063a83f412fad6124c99cffd25ffe1a0807eb4b7f9cec76ac8cb43b | ||||||
|  | ``` | ||||||
|  | ```python | ||||||
|  | >>> cli.port('7174d6347063', 80) | ||||||
|  | [{'HostIp': '0.0.0.0', 'HostPort': '80'}] | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## pull | ||||||
|  | 
 | ||||||
|  | Identical to the `docker pull` command. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * repository (str): The repository to pull | ||||||
|  | * tag (str): The tag to pull | ||||||
|  | * stream (bool): Stream the output as a generator | ||||||
|  | * insecure_registry (bool): Use an insecure registry | ||||||
|  | 
 | ||||||
|  | **Returns** (generator or str): The output | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | >>> from docker import Client | ||||||
|  | >>> cli = Client(base_url='tcp://127.0.0.1:2375') | ||||||
|  | >>> for line in cli.pull('busybox', stream=True): | ||||||
|  | ...     print(json.dumps(json.loads(line), indent=4)) | ||||||
|  | { | ||||||
|  |     "status": "Pulling image (latest) from busybox", | ||||||
|  |     "progressDetail": {}, | ||||||
|  |     "id": "e72ac664f4f0" | ||||||
|  | } | ||||||
|  | { | ||||||
|  |     "status": "Pulling image (latest) from busybox, endpoint: ...", | ||||||
|  |     "progressDetail": {}, | ||||||
|  |     "id": "e72ac664f4f0" | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## push | ||||||
|  | 
 | ||||||
|  | Push an image or a repository to the registry. Identical to the `docker push`  | ||||||
|  | command | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * repository (str): The repository to push to | ||||||
|  | * tag (str): An optional tag to push | ||||||
|  | * stream (bool): Stream the output as a blocking generator | ||||||
|  | * insecure_registry (bool): Use `http://` to connect to the registry | ||||||
|  | 
 | ||||||
|  | **Returns** (generator or str): The output of the upload | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | >>> from docker import Client | ||||||
|  | >>> cli = Client(base_url='tcp://127.0.0.1:2375') | ||||||
|  | >>> response = [line for line in cli.push('yourname/app', stream=True)] | ||||||
|  | >>> response | ||||||
|  | ['{"status":"Pushing repository yourname/app (1 tags)"}\\n', | ||||||
|  |  '{"status":"Pushing","progressDetail":{},"id":"511136ea3c5a"}\\n', | ||||||
|  |  '{"status":"Image already pushed, skipping","progressDetail":{}, | ||||||
|  |     "id":"511136ea3c5a"}\\n', | ||||||
|  |  ... | ||||||
|  |  '{"status":"Pushing tag for rev [918af568e6e5] on { | ||||||
|  |     https://cdn-registry-1.docker.io/v1/repositories/ | ||||||
|  |     yourname/app/tags/latest}"}\\n'] | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## remove_container | ||||||
|  | 
 | ||||||
|  | Remove a container. Similar to the `docker rm` command. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * container (str): The container to remove | ||||||
|  | * v (bool): Remove the volumes associated with the container | ||||||
|  | * link (bool): Remove the specified link and not the underlying container | ||||||
|  | * force (bool): Force the removal of a running container (uses SIGKILL) | ||||||
|  | 
 | ||||||
|  | ## remove_image | ||||||
|  | 
 | ||||||
|  | Remove an image. Similar to the `docker rmi` command. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * image (str): The image to remove | ||||||
|  | * force (bool): Force removal of the image | ||||||
|  | * noprune (bool): Do not delete untagged parents | ||||||
|  | 
 | ||||||
|  | ## restart | ||||||
|  | 
 | ||||||
|  | Restart a container. Similar to the `docker restart` command. | ||||||
|  | 
 | ||||||
|  | If `container` a dict, the `Id` key is used. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * container (str or dict): The container to restart | ||||||
|  | * timeout (int): Number of seconds to try to stop for before killing the  | ||||||
|  | container. Once killed it will then be restarted. Default is 10 seconds. | ||||||
|  | 
 | ||||||
|  | ## search | ||||||
|  | Identical to the `docker search` command. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * term (str): A term to search for | ||||||
|  | 
 | ||||||
|  | **Returns** (list of dicts): The response of the search | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | >>> from docker import Client | ||||||
|  | >>> cli = Client(base_url='tcp://127.0.0.1:2375') | ||||||
|  | >>> response = cli.search('nginx') | ||||||
|  | >>> response[:2] | ||||||
|  | [{'description': 'Official build of Nginx.', | ||||||
|  |   'is_official': True, | ||||||
|  |   'is_trusted': False, | ||||||
|  |   'name': 'nginx', | ||||||
|  |   'star_count': 266}, | ||||||
|  |  {'description': 'Trusted automated Nginx (http://nginx.org/) ...', | ||||||
|  |   'is_official': False, | ||||||
|  |   'is_trusted': True, | ||||||
|  |   'name': 'dockerfile/nginx', | ||||||
|  |   'star_count': 60}, | ||||||
|  |   ... | ||||||
|  | ``` | ||||||
|  |   | ||||||
|  | ## start | ||||||
|  |   | ||||||
|  | Similar to the `docker start` command, but doesn't support attach options. Use | ||||||
|  | `.logs()` to recover `stdout`/`stderr`. | ||||||
|  | 
 | ||||||
|  | `binds` allows to bind a directory in the host to the container. See [Using  | ||||||
|  | volumes](volumes.md) for more information. `port_bindings` exposes container  | ||||||
|  | ports to the host. See [Port bindings](port-bindings.md) for more information. | ||||||
|  | `lxc_conf` allows to pass LXC configuration options using a dictionary.  | ||||||
|  | `privileged` starts the container in privileged mode. | ||||||
|  | 
 | ||||||
|  | [Links](http://docs.docker.io/en/latest/use/working_with_links_names/) can be  | ||||||
|  | specified with the `links` argument. They can either be specified as a  | ||||||
|  | dictionary mapping name to alias or as a list of `(name, alias)` tuples. | ||||||
|  | 
 | ||||||
|  | `dns` and `volumes_from` are only available if they are used with version v1.10 | ||||||
|  | of docker remote API. Otherwise they are ignored. | ||||||
|  | 
 | ||||||
|  | `network_mode` is available since v1.11 and sets the Network mode for the  | ||||||
|  | container ('bridge': creates a new network stack for the container on the  | ||||||
|  | Docker bridge, 'none': no networking for this container, 'container:[name|id]':  | ||||||
|  | reuses another container network stack), 'host': use the host network stack  | ||||||
|  | inside the container. | ||||||
|  | 
 | ||||||
|  | `restart_policy` is available since v1.2.0 and sets the RestartPolicy for how a | ||||||
|  | container should or should not be restarted on exit. By default the policy is  | ||||||
|  | set to no meaning do not restart the container when it exits. The user may  | ||||||
|  | specify the restart policy as a dictionary for example: | ||||||
|  | ```python | ||||||
|  | { | ||||||
|  |     "MaximumRetryCount": 0, | ||||||
|  |     "Name": "always" | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | For always restarting the container on exit or can specify to restart the  | ||||||
|  | container to restart on failure and can limit number of restarts. For example: | ||||||
|  | ```python | ||||||
|  | { | ||||||
|  |     "MaximumRetryCount": 5, | ||||||
|  |     "Name": "on-failure" | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | `cap_add` and `cap_drop` are available since v1.2.0 and can be used to add or  | ||||||
|  | drop certain capabilities. The user may specify the capabilities as an array  | ||||||
|  | for example: | ||||||
|  | ```python | ||||||
|  | [ | ||||||
|  |     "SYS_ADMIN", | ||||||
|  |     "MKNOD" | ||||||
|  | ] | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * container (str): The container to start | ||||||
|  | * binds: Volumes to bind | ||||||
|  | * port_bindings (dict): Port bindings. See note above | ||||||
|  | * lxc_conf (dict): LXC config | ||||||
|  | * publish_all_ports (bool): Whether to publish all ports to the host | ||||||
|  | * links (dict or list of tuples): See note above | ||||||
|  | * privileged (bool): Give extended privileges to this container | ||||||
|  | * dns (list): Set custom DNS servers | ||||||
|  | * dns_search (list): DNS search  domains | ||||||
|  | * volumes_from (str or list): List of container names or Ids to get volumes  | ||||||
|  | from. Optionally a single string joining container id's with commas | ||||||
|  | * network_mode (str): One of `['bridge', None, 'container:<name|id>', | ||||||
|  | 'host']` | ||||||
|  | * restart_policy (dict): See note above. "Name" param must be one of  | ||||||
|  | `['on-failure', 'always']` | ||||||
|  | * cap_add (list of str): See note above | ||||||
|  | * cap_drop (list of str): See note above | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | >>> from docker import Client | ||||||
|  | >>> cli = Client(base_url='tcp://127.0.0.1:2375') | ||||||
|  | >>> container = cli.create_container( | ||||||
|  | ...     image='busybox:latest', | ||||||
|  | ...     command='/bin/sleep 30') | ||||||
|  | >>> response = cli.start(container=container.get('Id')) | ||||||
|  | >>> print(response) | ||||||
|  | None | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## stop | ||||||
|  | 
 | ||||||
|  | Stops a container. Similar to the `docker stop` command. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * container (str): The container to stop | ||||||
|  | * timeout (int): Timeout in seconds to wait for the container to stop before  | ||||||
|  | sending a `SIGKILL` | ||||||
|  | 
 | ||||||
|  | ## tag | ||||||
|  | 
 | ||||||
|  | Tag an image into a repository. Identical to the `docker tag` command. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * image (str): The image to tag | ||||||
|  | * repository (str): The repository to set for the tag | ||||||
|  | * tag (str): The tag name | ||||||
|  | * force (bool): Force | ||||||
|  | 
 | ||||||
|  | **Returns** (bool): True if successful | ||||||
|  | 
 | ||||||
|  | ## top | ||||||
|  | Display the running processes of a container | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * container (str): The container to inspect | ||||||
|  | 
 | ||||||
|  | **Returns** (str): The output of the top | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | >>> from docker import Client | ||||||
|  | >>> cli = Client(base_url='tcp://127.0.0.1:2375') | ||||||
|  | >>> cli.create_container('busybox:latest', '/bin/sleep 30', name='sleeper') | ||||||
|  | >>> cli.start('sleeper') | ||||||
|  | >>> cli.top('sleeper') | ||||||
|  | {'Processes': [['952', 'root', '/bin/sleep 30']], | ||||||
|  |  'Titles': ['PID', 'USER', 'COMMAND']} | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## version | ||||||
|  | Nearly identical to the `docker version` command.  | ||||||
|  | 
 | ||||||
|  | **Returns** (dict): The server version information | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | >>> from docker import Client | ||||||
|  | >>> cli = Client(base_url='tcp://127.0.0.1:2375') | ||||||
|  | >>> cli.version() | ||||||
|  | { | ||||||
|  |     "KernelVersion": "3.16.4-tinycore64",  | ||||||
|  |     "Arch": "amd64",  | ||||||
|  |     "ApiVersion": "1.15",  | ||||||
|  |     "Version": "1.3.0",  | ||||||
|  |     "GitCommit": "c78088f",  | ||||||
|  |     "Os": "linux",  | ||||||
|  |     "GoVersion": "go1.3.3" | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## wait | ||||||
|  | Identical to the `docker wait` command. Block until a container stops, then  | ||||||
|  | print its exit code. Returns the value `-1` if no `StatusCode` is returned by  | ||||||
|  | the API. | ||||||
|  | 
 | ||||||
|  | If `container` a dict, the `Id` key is used. | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * container (str or dict): The container to wait on | ||||||
|  | 
 | ||||||
|  | **Returns** (int): The exit code of the container | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <!--- | ||||||
|  | TODO: | ||||||
|  | 
 | ||||||
|  | * events | ||||||
|  | * get_image | ||||||
|  | * load_image | ||||||
|  | * resize | ||||||
|  | 
 | ||||||
|  | --> | ||||||
|  | @ -1,5 +1,10 @@ | ||||||
| ChangeLog | Change Log | ||||||
| ========= | ========== | ||||||
|  | 
 | ||||||
|  | 0.5.4 | ||||||
|  | ----- | ||||||
|  | 
 | ||||||
|  | * Added MkDocs documentation. | ||||||
| 
 | 
 | ||||||
| 0.5.3 | 0.5.3 | ||||||
| ----- | ----- | ||||||
|  | @ -0,0 +1,36 @@ | ||||||
|  | # Contributing | ||||||
|  | See the [Docker contributing guidelines](https://github.com/docker/docker/blob/master/CONTRIBUTING.md).  | ||||||
|  | The following is specific to docker-py. | ||||||
|  | 
 | ||||||
|  | ## Running the tests & Code Quality | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | To get the source source code and run the unit tests, run: | ||||||
|  | ``` | ||||||
|  | $ git clone git://github.com/docker/docker-py.git | ||||||
|  | $ cd docker-py | ||||||
|  | $ pip install tox | ||||||
|  | $ tox | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Building the docs | ||||||
|  | Docs are built with [MkDocs](http://www.mkdocs.org/). For development, you can  | ||||||
|  | run the following in the project directory: | ||||||
|  | ``` | ||||||
|  | $ pip install -r docs-requirements.txt | ||||||
|  | $ mkdocs serve | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Release Checklist | ||||||
|  | 
 | ||||||
|  | Before a new release, please go through the following checklist: | ||||||
|  | 
 | ||||||
|  | * Bump version in docker/version.py | ||||||
|  | * Add a release note in docs/change_log.md | ||||||
|  | * Git tag the version | ||||||
|  | * Upload to pypi | ||||||
|  | 
 | ||||||
|  | ## Vulnerability Reporting | ||||||
|  | For any security issues, please do NOT file an issue or pull request on github! | ||||||
|  | Please contact [security@docker.com](mailto:security@docker.com) or read [the  | ||||||
|  | Docker security page](https://www.docker.com/resources/security/). | ||||||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.4 KiB | 
|  | @ -0,0 +1,16 @@ | ||||||
|  | # docker-py documentation | ||||||
|  | 
 | ||||||
|  | An API client for docker written in Python | ||||||
|  | 
 | ||||||
|  | ## Installation | ||||||
|  | 
 | ||||||
|  | Our latest stable is always available on PyPi. | ||||||
|  | 
 | ||||||
|  |     pip install docker-py | ||||||
|  | 
 | ||||||
|  | ## Documentation | ||||||
|  | Full documentation is available in the `/docs/` directory. | ||||||
|  | 
 | ||||||
|  | ## License | ||||||
|  | Docker is licensed under the Apache License, Version 2.0. See LICENSE for full  | ||||||
|  | license text | ||||||
|  | @ -0,0 +1,38 @@ | ||||||
|  | # Port bindings | ||||||
|  | Port bindings is done in two parts. Firstly, by providing a list of ports to | ||||||
|  | open inside the container in the `Client().create_container()` method. | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | c.create_container('busybox', 'ls', ports=[1111, 2222]) | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Bindings are then declared in the `Client.start` method. | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | c.start(container_id, port_bindings={1111: 4567, 2222: None}) | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | You can limit the host address on which the port will be exposed like such: | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | c.start(container_id, port_bindings={1111: ('127.0.0.1', 4567)}) | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Or without host port assignment: | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | c.start(container_id, port_bindings={1111: ('127.0.0.1',)}) | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | If you wish to use UDP instead of TCP (default), you need to declare it | ||||||
|  | like such in both the `create_container()` and `start()` calls: | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | container_id = c.create_container( | ||||||
|  | 	'busybox',  | ||||||
|  | 	'ls',  | ||||||
|  | 	ports=[(1111, 'udp'), 2222] | ||||||
|  | ) | ||||||
|  | c.start(container_id, port_bindings={'1111/udp': 4567, 2222: None}) | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | @ -0,0 +1,85 @@ | ||||||
|  | ## Connection to daemon using HTTPS | ||||||
|  | 
 | ||||||
|  | **Note:** *These instructions are docker-py specific. Please refer to | ||||||
|  | [http://docs.docker.com/articles/https/](http://docs.docker.com/articles/https/) | ||||||
|  | first.* | ||||||
|  | 
 | ||||||
|  | ## TLSConfig | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * client_cert (tuple of str): Path to client cert, path to client key | ||||||
|  | * ca_cert (str): Path to CA cert file | ||||||
|  | * verify (bool or str): This can be `False` or a path to a CA Cert file | ||||||
|  | * ssl_version (int): A valid [SSL version]( | ||||||
|  | https://docs.python.org/3.4/library/ssl.html#ssl.PROTOCOL_TLSv1) | ||||||
|  | * assert_hostname (bool): Verify hostname of docker daemon | ||||||
|  | 
 | ||||||
|  | ### configure_client | ||||||
|  | 
 | ||||||
|  | **Params**: | ||||||
|  | 
 | ||||||
|  | * client: ([Client](api.md#client-api)): A client to apply this config to | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Authenticate server based on public/default CA pool | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | client = docker.Client(base_url='<https_url>', tls=True) | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Equivalent CLI options:  | ||||||
|  | ```bash | ||||||
|  | docker --tls ... | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | If you want to use TLS but don't want to verify the server certificate | ||||||
|  | (for example when testing with a self-signed certificate): | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | tls_config = docker.tls.TLSConfig(verify=False) | ||||||
|  | client = docker.Client(base_url='<https_url>', tls=tls_config) | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Authenticate server based on given CA | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | tls_config = docker.tls.TLSConfig(ca_cert='/path/to/ca.pem') | ||||||
|  | client = docker.Client(base_url='<https_url>', tls=tls_config) | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Equivalent CLI options:  | ||||||
|  | ```bash | ||||||
|  | docker --tlsverify --tlscacert /path/to/ca.pem ...` | ||||||
|  | 
 | ||||||
|  | ## Authenticate with client certificate, do not authenticate server based on given CA | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | tls_config = docker.tls.TLSConfig( | ||||||
|  |   client_cert=('/path/to/client-cert.pem', '/path/to/client-key.pem') | ||||||
|  | ) | ||||||
|  | client = docker.Client(base_url='<https_url>', tls=tls_config) | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Equivalent CLI options: | ||||||
|  | ```bash | ||||||
|  | docker --tls --tlscert /path/to/client-cert.pem --tlskey /path/to/client-key.pem ... | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Authenticate with client certificate, authenticate server based on given CA | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | tls_config = docker.tls.TLSConfig( | ||||||
|  |   client_cert=('/path/to/client-cert.pem', '/path/to/client-key.pem'), | ||||||
|  |   ca_cert='/path/to/ca.pem' | ||||||
|  | ) | ||||||
|  | client = docker.Client(base_url='<https_url>', tls=tls_config) | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Equivalent CLI options: | ||||||
|  | ```bash | ||||||
|  | docker --tlsverify \ | ||||||
|  | 	--tlscert /path/to/client-cert.pem \ | ||||||
|  |    --tlskey /path/to/client-key.pem \ | ||||||
|  |    --tlscacert /path/to/ca.pem ... | ||||||
|  | ``` | ||||||
|  | @ -0,0 +1,25 @@ | ||||||
|  | # Using volumes | ||||||
|  | 
 | ||||||
|  | Volume declaration is done in two parts. First, you have to provide a list of  | ||||||
|  | mountpoints to the `Client().create_container()` method. | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | c.create_container('busybox', 'ls', volumes=['/mnt/vol1', '/mnt/vol2']) | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Volume mappings are then declared inside the `Client.start` method like this: | ||||||
|  | 
 | ||||||
|  | ```python | ||||||
|  | c.start(container_id, binds={ | ||||||
|  |     '/home/user1/': | ||||||
|  |         { | ||||||
|  |             'bind': '/mnt/vol2', | ||||||
|  |             'ro': False | ||||||
|  |         }, | ||||||
|  |     '/var/www': | ||||||
|  |         { | ||||||
|  |             'bind': '/mnt/vol1', | ||||||
|  |             'ro': True | ||||||
|  |         } | ||||||
|  | }) | ||||||
|  | ``` | ||||||
|  | @ -0,0 +1,14 @@ | ||||||
|  | site_name: docker-py Documentation | ||||||
|  | site_description: An API client for Docker written in Python | ||||||
|  | site_favicon: favicon_whale.png | ||||||
|  | # site_url: docker-py.readthedocs.org | ||||||
|  | repo_url: https://github.com/docker/docker-py/ | ||||||
|  | theme: readthedocs | ||||||
|  | pages: | ||||||
|  | - [index.md, Home] | ||||||
|  | - [api.md, Client API] | ||||||
|  | - [port-bindings.md, Port Bindings] | ||||||
|  | - [volumes.md, Using Volumes] | ||||||
|  | - [tls.md, Using TLS] | ||||||
|  | - [change_log.md, Change Log] | ||||||
|  | - [contributing.md, Contributing] | ||||||
		Loading…
	
		Reference in New Issue