Docker Swarm API

The Docker Swarm API is mostly compatible with the Docker Remote API. This document is an overview of the differences between the Swarm API and the Docker Remote API.

Missing endpoints

Some endpoints have not yet been implemented and will return a 404 error.

POST "/images/create" : "docker import" flow not implement

Endpoints which behave differently

  • GET "/containers/{name:.*}/json": New field Node added:
"Node": {
	"Id": "ODAI:IC6Q:MSBL:TPB5:HIEE:6IKC:VCAM:QRNH:PRGX:ERZT:OK46:PMFX",
	"Ip": "0.0.0.0",
	"Addr": "http://0.0.0.0:4243",
	"Name": "vagrant-ubuntu-saucy-64",
    },
  • GET "/containers/{name:.*}/json": HostIP replaced by the the actual Node’s IP if HostIP is 0.0.0.0

  • GET "/containers/json": Node’s name prepended to the container name.

  • GET "/containers/json": HostIP replaced by the the actual Node’s IP if HostIP is 0.0.0.0

  • GET "/containers/json" : Containers started from the swarm official image are hidden by default, use all=1 to display them.

  • GET "/images/json" : Use ‘--filter node=<Node name>’ to show images of the specific node.

  • POST "/containers/create": CpuShares in HostConfig sets the number of CPU cores allocated to the container.

Registry Authentication

During container create calls, the swarm API will optionally accept a X-Registry-Config header. If provided, this header will be passed down to the engine if the image must be pulled to complete the create operation.

The following two examples demonstrate how to utilize this using the existing docker CLI

  • CLI usage example using username/password:

    ```bash

    Calculate the header

    REPO_USER=yourusername read -s PASSWORD HEADER=$(echo “{\“username\”:\“${REPO_USER}\“,\“password\”:\“${PASSWORD}\“}”|base64 -w 0 ) unset PASSWORD echo HEADER=$HEADER

Then add the following to your ~/.docker/config.json

“HttpHeaders”: { “X-Registry-Auth”: “

“ }

Now run a private image against swarm:

docker run --rm -it yourprivateimage:latest

* CLI usage example using registry tokens: (Requires engine 1.10 with new auth token support)

    ```bash
REPO=yourrepo/yourimage
REPO_USER=yourusername
read -s PASSWORD
AUTH_URL=https://auth.docker.io/token
TOKEN=$(curl -s -u "${REPO_USER}:${PASSWORD}" "${AUTH_URL}?scope=repository:${REPO}:pull&service=registry.docker.io" |
    jq -r ".token")
HEADER=$(echo "{\"registrytoken\":\"${TOKEN}\"}"|base64 -w 0 )
echo HEADER=$HEADER

# Update the docker config as above, but the token will expire quickly...

Docker Swarm documentation index

© 2017 Docker, Inc.
Licensed under the Apache License, Version 2.0.
Docker and the Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries.
Docker, Inc. and other parties may also have trademark rights in other terms used herein.
https://docs.docker.com/v1.10/swarm/swarm-api/