mirror of https://github.com/docker/docker-py.git
70 lines
2.0 KiB
Markdown
70 lines
2.0 KiB
Markdown
# Swarm services
|
|
|
|
> Warning:
|
|
> This is a stale document and may contain outdated information.
|
|
> Refer to the API docs for updated classes and method signatures.
|
|
|
|
Starting with Engine version 1.12 (API 1.24), it is possible to manage services
|
|
using the Docker Engine API. Note that the engine needs to be part of a
|
|
[Swarm cluster](../swarm.html) before you can use the service-related methods.
|
|
|
|
## Creating a service
|
|
|
|
The `APIClient.create_service` method lets you create a new service inside the
|
|
cluster. The method takes several arguments, `task_template` being mandatory.
|
|
This dictionary of values is most easily produced by instantiating a
|
|
`TaskTemplate` object.
|
|
|
|
```python
|
|
container_spec = docker.types.ContainerSpec(
|
|
image='busybox', command=['echo', 'hello']
|
|
)
|
|
task_tmpl = docker.types.TaskTemplate(container_spec)
|
|
service_id = client.create_service(task_tmpl, name=name)
|
|
```
|
|
|
|
## Listing services
|
|
|
|
List all existing services using the `APIClient.services` method.
|
|
|
|
```python
|
|
client.services(filters={'name': 'mysql'})
|
|
```
|
|
|
|
## Retrieving service configuration
|
|
|
|
To retrieve detailed information and configuration for a specific service, you
|
|
may use the `APIClient.inspect_service` method using the service's ID or name.
|
|
|
|
```python
|
|
client.inspect_service(service='my_service_name')
|
|
```
|
|
|
|
## Updating service configuration
|
|
|
|
The `APIClient.update_service` method lets you update a service's configuration.
|
|
The mandatory `version` argument (used to prevent concurrent writes) can be
|
|
retrieved using `APIClient.inspect_service`.
|
|
|
|
```python
|
|
container_spec = docker.types.ContainerSpec(
|
|
image='busybox', command=['echo', 'hello world']
|
|
)
|
|
task_tmpl = docker.types.TaskTemplate(container_spec)
|
|
|
|
svc_version = client.inspect_service(svc_id)['Version']['Index']
|
|
|
|
client.update_service(
|
|
svc_id, svc_version, name='new_name', task_template=task_tmpl
|
|
)
|
|
```
|
|
|
|
## Removing a service
|
|
|
|
A service may be removed simply using the `APIClient.remove_service` method.
|
|
Either the service name or service ID can be used as argument.
|
|
|
|
```python
|
|
client.remove_service('my_service_name')
|
|
```
|