docker-py/docs/user_guides/swarm_services.md

1.9 KiB

Swarm services

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 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.

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.

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.

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.

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.

client.remove_service('my_service_name')