Merge branch 'migrate-aufs-containers' into v0.7-rc3
Conflicts:
runtime.go
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8b4f2dc..ed43d0a 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -3,6 +3,10 @@
Want to hack on Docker? Awesome! Here are instructions to get you started. They are probably not perfect, please let us know if anything feels
wrong or incomplete.
+## Build Environment
+
+For instructions on setting up your development environment, please see our dedicated [dev environment setup docs](http://docs.docker.io/en/latest/contributing/devenvironment/).
+
## Contribution guidelines
### Pull requests are always welcome
diff --git a/FIXME b/FIXME
index 6e14a08..91c8d92 100644
--- a/FIXME
+++ b/FIXME
@@ -15,23 +15,16 @@
* Run linter on codebase
* Unify build commands and regular commands
* Move source code into src/ subdir for clarity
-* Clean up the Makefile, it's a mess
* docker build: on non-existent local path for ADD, don't show full absolute path on the host
-* mount into /dockerinit rather than /sbin/init
* docker tag foo REPO:TAG
* use size header for progress bar in pull
* Clean up context upload in build!!!
* Parallel pull
-* Ensure /proc/sys/net/ipv4/ip_forward is 1
-* Force DNS to public!
* Always generate a resolv.conf per container, to avoid changing resolv.conf under thne container's feet
-* Save metadata with import/export
+* Save metadata with import/export (#1974)
* Upgrade dockerd without stopping containers
-* bring back git revision info, looks like it was lost
-* Simple command to remove all untagged images
+* Simple command to remove all untagged images (`docker rmi $(docker images | awk '/^<none>/ { print $3 }')`)
* Simple command to clean up containers for disk space
-* Caching after an ADD
-* entry point config
-* bring back git revision info, looks like it was lost
+* Caching after an ADD (#880)
* Clean up the ProgressReader api, it's a PITA to use
* Use netlink instead of iproute2/iptables (#925)
diff --git a/commands_test.go b/commands_test.go
index be5e807..2da1f8e 100644
--- a/commands_test.go
+++ b/commands_test.go
@@ -400,7 +400,7 @@
})
// wait for CmdRun to return
- setTimeout(t, "Waiting for CmdRun timed out", 5*time.Second, func() {
+ setTimeout(t, "Waiting for CmdRun timed out", 15*time.Second, func() {
<-ch
})
@@ -458,7 +458,7 @@
})
// wait for CmdRun to return
- setTimeout(t, "Waiting for CmdAttach timed out", 5*time.Second, func() {
+ setTimeout(t, "Waiting for CmdAttach timed out", 15*time.Second, func() {
<-ch
})
diff --git a/contrib/MAINTAINERS b/contrib/MAINTAINERS
index e6aeeeb..a710312 100644
--- a/contrib/MAINTAINERS
+++ b/contrib/MAINTAINERS
@@ -1,2 +1,2 @@
-Kawsar Saiyeed <kawsar.saiyeed@projiris.com> (@KSid)
Tianon Gravi <admwiggin@gmail.com> (@tianon)
+Kawsar Saiyeed <kawsar.saiyeed@projiris.com> (@KSid)
diff --git a/contrib/docker.bash b/contrib/docker.bash
index aa9fb3d..5a91ab0 100644
--- a/contrib/docker.bash
+++ b/contrib/docker.bash
@@ -341,7 +341,7 @@
_docker_push()
{
- return
+ __docker_image_repos
}
_docker_restart()
diff --git a/docs/sources/api/docker_remote_api_v1.5.rst b/docs/sources/api/docker_remote_api_v1.5.rst
index 2581059..9c8fa8c 100644
--- a/docs/sources/api/docker_remote_api_v1.5.rst
+++ b/docs/sources/api/docker_remote_api_v1.5.rst
@@ -28,543 +28,525 @@
.. http:get:: /containers/json
- List containers
+ List containers
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- GET /containers/json?all=1&before=8dfafdbc3a40&size=1 HTTP/1.1
-
- **Example response**:
+ GET /containers/json?all=1&before=8dfafdbc3a40&size=1 HTTP/1.1
- .. sourcecode:: http
+ **Example response**:
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- [
- {
- "Id": "8dfafdbc3a40",
- "Image": "ubuntu:latest",
- "Command": "echo 1",
- "Created": 1367854155,
- "Status": "Exit 0",
- "Ports":[{"PrivatePort": 2222, "PublicPort": 3333, "Type": "tcp"}],
- "SizeRw":12288,
- "SizeRootFs":0
- },
- {
- "Id": "9cd87474be90",
- "Image": "ubuntu:latest",
- "Command": "echo 222222",
- "Created": 1367854155,
- "Status": "Exit 0",
- "Ports":[],
- "SizeRw":12288,
- "SizeRootFs":0
- },
- {
- "Id": "3176a2479c92",
- "Image": "centos:latest",
- "Command": "echo 3333333333333333",
- "Created": 1367854154,
- "Status": "Exit 0",
- "Ports":[],
- "SizeRw":12288,
- "SizeRootFs":0
- },
- {
- "Id": "4cb07b47f9fb",
- "Image": "fedora:latest",
- "Command": "echo 444444444444444444444444444444444",
- "Created": 1367854152,
- "Status": "Exit 0",
- "Ports":[],
- "SizeRw":12288,
- "SizeRootFs":0
- }
- ]
-
- :query all: 1/True/true or 0/False/false, Show all containers. Only running containers are shown by default
- :query limit: Show ``limit`` last created containers, include non-running ones.
- :query since: Show only containers created since Id, include non-running ones.
- :query before: Show only containers created before Id, include non-running ones.
- :query size: 1/True/true or 0/False/false, Show the containers sizes
- :statuscode 200: no error
- :statuscode 400: bad parameter
- :statuscode 500: server error
+ .. sourcecode:: http
+ HTTP/1.1 200 OK
+ Content-Type: application/json
+
+ [
+ {
+ "Id": "8dfafdbc3a40",
+ "Image": "ubuntu:latest",
+ "Command": "echo 1",
+ "Created": 1367854155,
+ "Status": "Exit 0",
+ "Ports":[{"PrivatePort": 2222, "PublicPort": 3333, "Type": "tcp"}],
+ "SizeRw":12288,
+ "SizeRootFs":0
+ },
+ {
+ "Id": "9cd87474be90",
+ "Image": "ubuntu:latest",
+ "Command": "echo 222222",
+ "Created": 1367854155,
+ "Status": "Exit 0",
+ "Ports":[],
+ "SizeRw":12288,
+ "SizeRootFs":0
+ },
+ {
+ "Id": "3176a2479c92",
+ "Image": "centos:latest",
+ "Command": "echo 3333333333333333",
+ "Created": 1367854154,
+ "Status": "Exit 0",
+ "Ports":[],
+ "SizeRw":12288,
+ "SizeRootFs":0
+ },
+ {
+ "Id": "4cb07b47f9fb",
+ "Image": "fedora:latest",
+ "Command": "echo 444444444444444444444444444444444",
+ "Created": 1367854152,
+ "Status": "Exit 0",
+ "Ports":[],
+ "SizeRw":12288,
+ "SizeRootFs":0
+ }
+ ]
+
+ :query all: 1/True/true or 0/False/false, Show all containers. Only running containers are shown by default
+ :query limit: Show ``limit`` last created containers, include non-running ones.
+ :query since: Show only containers created since Id, include non-running ones.
+ :query before: Show only containers created before Id, include non-running ones.
+ :query size: 1/True/true or 0/False/false, Show the containers sizes
+ :statuscode 200: no error
+ :statuscode 400: bad parameter
+ :statuscode 500: server error
Create a container
******************
.. http:post:: /containers/create
- Create a container
+ Create a container
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- POST /containers/create HTTP/1.1
- Content-Type: application/json
+ POST /containers/create HTTP/1.1
+ Content-Type: application/json
- {
- "Hostname":"",
- "User":"",
- "Memory":0,
- "MemorySwap":0,
- "AttachStdin":false,
- "AttachStdout":true,
- "AttachStderr":true,
- "PortSpecs":null,
- "Privileged": false,
- "Tty":false,
- "OpenStdin":false,
- "StdinOnce":false,
- "Env":null,
- "Cmd":[
- "date"
- ],
- "Dns":null,
- "Image":"ubuntu",
- "Volumes":{},
- "VolumesFrom":"",
- "WorkingDir":""
+ {
+ "Hostname":"",
+ "User":"",
+ "Memory":0,
+ "MemorySwap":0,
+ "AttachStdin":false,
+ "AttachStdout":true,
+ "AttachStderr":true,
+ "PortSpecs":null,
+ "Privileged": false,
+ "Tty":false,
+ "OpenStdin":false,
+ "StdinOnce":false,
+ "Env":null,
+ "Cmd":[
+ "date"
+ ],
+ "Dns":null,
+ "Image":"ubuntu",
+ "Volumes":{},
+ "VolumesFrom":"",
+ "WorkingDir":""
+ }
- }
-
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 201 OK
- Content-Type: application/json
+ HTTP/1.1 201 OK
+ Content-Type: application/json
- {
- "Id":"e90e34656806"
- "Warnings":[]
- }
-
- :jsonparam config: the container's configuration
- :statuscode 201: no error
- :statuscode 404: no such container
- :statuscode 406: impossible to attach (container not running)
- :statuscode 500: server error
+ {
+ "Id":"e90e34656806"
+ "Warnings":[]
+ }
+ :jsonparam config: the container's configuration
+ :statuscode 201: no error
+ :statuscode 404: no such container
+ :statuscode 406: impossible to attach (container not running)
+ :statuscode 500: server error
Inspect a container
*******************
.. http:get:: /containers/(id)/json
- Return low-level information on the container ``id``
+ Return low-level information on the container ``id``
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- GET /containers/4fa6e0f0c678/json HTTP/1.1
-
- **Example response**:
+ GET /containers/4fa6e0f0c678/json HTTP/1.1
- .. sourcecode:: http
+ **Example response**:
- HTTP/1.1 200 OK
- Content-Type: application/json
+ .. sourcecode:: http
- {
- "Id": "4fa6e0f0c6786287e131c3852c58a2e01cc697a68231826813597e4994f1d6e2",
- "Created": "2013-05-07T14:51:42.041847+02:00",
- "Path": "date",
- "Args": [],
- "Config": {
- "Hostname": "4fa6e0f0c678",
- "User": "",
- "Memory": 0,
- "MemorySwap": 0,
- "AttachStdin": false,
- "AttachStdout": true,
- "AttachStderr": true,
- "PortSpecs": null,
- "Tty": false,
- "OpenStdin": false,
- "StdinOnce": false,
- "Env": null,
- "Cmd": [
- "date"
- ],
- "Dns": null,
- "Image": "ubuntu",
- "Volumes": {},
- "VolumesFrom": "",
- "WorkingDir":""
+ HTTP/1.1 200 OK
+ Content-Type: application/json
- },
- "State": {
- "Running": false,
- "Pid": 0,
- "ExitCode": 0,
- "StartedAt": "2013-05-07T14:51:42.087658+02:01360",
- "Ghost": false
- },
- "Image": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
- "NetworkSettings": {
- "IpAddress": "",
- "IpPrefixLen": 0,
- "Gateway": "",
- "Bridge": "",
- "PortMapping": null
- },
- "SysInitPath": "/home/kitty/go/src/github.com/dotcloud/docker/bin/docker",
- "ResolvConfPath": "/etc/resolv.conf",
- "Volumes": {}
- }
+ {
+ "Id": "4fa6e0f0c6786287e131c3852c58a2e01cc697a68231826813597e4994f1d6e2",
+ "Created": "2013-05-07T14:51:42.041847+02:00",
+ "Path": "date",
+ "Args": [],
+ "Config": {
+ "Hostname": "4fa6e0f0c678",
+ "User": "",
+ "Memory": 0,
+ "MemorySwap": 0,
+ "AttachStdin": false,
+ "AttachStdout": true,
+ "AttachStderr": true,
+ "PortSpecs": null,
+ "Tty": false,
+ "OpenStdin": false,
+ "StdinOnce": false,
+ "Env": null,
+ "Cmd": [
+ "date"
+ ],
+ "Dns": null,
+ "Image": "ubuntu",
+ "Volumes": {},
+ "VolumesFrom": "",
+ "WorkingDir":""
+ },
+ "State": {
+ "Running": false,
+ "Pid": 0,
+ "ExitCode": 0,
+ "StartedAt": "2013-05-07T14:51:42.087658+02:01360",
+ "Ghost": false
+ },
+ "Image": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
+ "NetworkSettings": {
+ "IpAddress": "",
+ "IpPrefixLen": 0,
+ "Gateway": "",
+ "Bridge": "",
+ "PortMapping": null
+ },
+ "SysInitPath": "/home/kitty/go/src/github.com/dotcloud/docker/bin/docker",
+ "ResolvConfPath": "/etc/resolv.conf",
+ "Volumes": {}
+ }
- :statuscode 200: no error
- :statuscode 404: no such container
- :statuscode 500: server error
-
+ :statuscode 200: no error
+ :statuscode 404: no such container
+ :statuscode 500: server error
List processes running inside a container
*****************************************
.. http:get:: /containers/(id)/top
- List processes running inside the container ``id``
+ List processes running inside the container ``id``
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- GET /containers/4fa6e0f0c678/top HTTP/1.1
+ GET /containers/4fa6e0f0c678/top HTTP/1.1
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 200 OK
- Content-Type: application/json
+ HTTP/1.1 200 OK
+ Content-Type: application/json
- {
- "Titles":[
- "USER",
- "PID",
- "%CPU",
- "%MEM",
- "VSZ",
- "RSS",
- "TTY",
- "STAT",
- "START",
- "TIME",
- "COMMAND"
- ],
- "Processes":[
- ["root","20147","0.0","0.1","18060","1864","pts/4","S","10:06","0:00","bash"],
- ["root","20271","0.0","0.0","4312","352","pts/4","S+","10:07","0:00","sleep","10"]
- ]
- }
+ {
+ "Titles":[
+ "USER",
+ "PID",
+ "%CPU",
+ "%MEM",
+ "VSZ",
+ "RSS",
+ "TTY",
+ "STAT",
+ "START",
+ "TIME",
+ "COMMAND"
+ ],
+ "Processes":[
+ ["root","20147","0.0","0.1","18060","1864","pts/4","S","10:06","0:00","bash"],
+ ["root","20271","0.0","0.0","4312","352","pts/4","S+","10:07","0:00","sleep","10"]
+ ]
+ }
- :query ps_args: ps arguments to use (eg. aux)
- :statuscode 200: no error
- :statuscode 404: no such container
- :statuscode 500: server error
-
+ :query ps_args: ps arguments to use (eg. aux)
+ :statuscode 200: no error
+ :statuscode 404: no such container
+ :statuscode 500: server error
Inspect changes on a container's filesystem
*******************************************
.. http:get:: /containers/(id)/changes
- Inspect changes on container ``id`` 's filesystem
+ Inspect changes on container ``id`` 's filesystem
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- GET /containers/4fa6e0f0c678/changes HTTP/1.1
+ GET /containers/4fa6e0f0c678/changes HTTP/1.1
-
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- [
- {
- "Path":"/dev",
- "Kind":0
- },
- {
- "Path":"/dev/kmsg",
- "Kind":1
- },
- {
- "Path":"/test",
- "Kind":1
- }
- ]
+ HTTP/1.1 200 OK
+ Content-Type: application/json
- :statuscode 200: no error
- :statuscode 404: no such container
- :statuscode 500: server error
+ [
+ {
+ "Path":"/dev",
+ "Kind":0
+ },
+ {
+ "Path":"/dev/kmsg",
+ "Kind":1
+ },
+ {
+ "Path":"/test",
+ "Kind":1
+ }
+ ]
+ :statuscode 200: no error
+ :statuscode 404: no such container
+ :statuscode 500: server error
Export a container
******************
.. http:get:: /containers/(id)/export
- Export the contents of container ``id``
+ Export the contents of container ``id``
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- GET /containers/4fa6e0f0c678/export HTTP/1.1
+ GET /containers/4fa6e0f0c678/export HTTP/1.1
-
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 200 OK
- Content-Type: application/octet-stream
-
- {{ STREAM }}
+ HTTP/1.1 200 OK
+ Content-Type: application/octet-stream
- :statuscode 200: no error
- :statuscode 404: no such container
- :statuscode 500: server error
+ {{ STREAM }}
+ :statuscode 200: no error
+ :statuscode 404: no such container
+ :statuscode 500: server error
Start a container
*****************
.. http:post:: /containers/(id)/start
- Start the container ``id``
+ Start the container ``id``
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- POST /containers/(id)/start HTTP/1.1
- Content-Type: application/json
+ POST /containers/(id)/start HTTP/1.1
+ Content-Type: application/json
- {
- "Binds":["/tmp:/tmp"],
- "LxcConf":[{"Key":"lxc.utsname","Value":"docker"}]
- }
+ {
+ "Binds":["/tmp:/tmp"],
+ "LxcConf":[{"Key":"lxc.utsname","Value":"docker"}]
+ }
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 204 No Content
- Content-Type: text/plain
+ HTTP/1.1 204 No Content
+ Content-Type: text/plain
- :jsonparam hostConfig: the container's host configuration (optional)
- :statuscode 204: no error
- :statuscode 404: no such container
- :statuscode 500: server error
-
+ :jsonparam hostConfig: the container's host configuration (optional)
+ :statuscode 204: no error
+ :statuscode 404: no such container
+ :statuscode 500: server error
Stop a container
****************
.. http:post:: /containers/(id)/stop
- Stop the container ``id``
+ Stop the container ``id``
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- POST /containers/e90e34656806/stop?t=5 HTTP/1.1
-
- **Example response**:
+ POST /containers/e90e34656806/stop?t=5 HTTP/1.1
- .. sourcecode:: http
+ **Example response**:
- HTTP/1.1 204 OK
-
- :query t: number of seconds to wait before killing the container
- :statuscode 204: no error
- :statuscode 404: no such container
- :statuscode 500: server error
+ .. sourcecode:: http
+ HTTP/1.1 204 OK
+
+ :query t: number of seconds to wait before killing the container
+ :statuscode 204: no error
+ :statuscode 404: no such container
+ :statuscode 500: server error
Restart a container
*******************
.. http:post:: /containers/(id)/restart
- Restart the container ``id``
+ Restart the container ``id``
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- POST /containers/e90e34656806/restart?t=5 HTTP/1.1
-
- **Example response**:
+ POST /containers/e90e34656806/restart?t=5 HTTP/1.1
- .. sourcecode:: http
+ **Example response**:
- HTTP/1.1 204 OK
-
- :query t: number of seconds to wait before killing the container
- :statuscode 204: no error
- :statuscode 404: no such container
- :statuscode 500: server error
+ .. sourcecode:: http
+ HTTP/1.1 204 OK
+
+ :query t: number of seconds to wait before killing the container
+ :statuscode 204: no error
+ :statuscode 404: no such container
+ :statuscode 500: server error
Kill a container
****************
.. http:post:: /containers/(id)/kill
- Kill the container ``id``
+ Kill the container ``id``
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- POST /containers/e90e34656806/kill HTTP/1.1
-
- **Example response**:
+ POST /containers/e90e34656806/kill HTTP/1.1
- .. sourcecode:: http
+ **Example response**:
- HTTP/1.1 204 OK
-
- :statuscode 204: no error
- :statuscode 404: no such container
- :statuscode 500: server error
+ .. sourcecode:: http
+ HTTP/1.1 204 OK
+
+ :statuscode 204: no error
+ :statuscode 404: no such container
+ :statuscode 500: server error
Attach to a container
*********************
.. http:post:: /containers/(id)/attach
- Attach to the container ``id``
+ Attach to the container ``id``
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- POST /containers/16253994b7c4/attach?logs=1&stream=0&stdout=1 HTTP/1.1
-
- **Example response**:
+ POST /containers/16253994b7c4/attach?logs=1&stream=0&stdout=1 HTTP/1.1
- .. sourcecode:: http
+ **Example response**:
- HTTP/1.1 200 OK
- Content-Type: application/vnd.docker.raw-stream
+ .. sourcecode:: http
- {{ STREAM }}
-
- :query logs: 1/True/true or 0/False/false, return logs. Default false
- :query stream: 1/True/true or 0/False/false, return stream. Default false
- :query stdin: 1/True/true or 0/False/false, if stream=true, attach to stdin. Default false
- :query stdout: 1/True/true or 0/False/false, if logs=true, return stdout log, if stream=true, attach to stdout. Default false
- :query stderr: 1/True/true or 0/False/false, if logs=true, return stderr log, if stream=true, attach to stderr. Default false
- :statuscode 200: no error
- :statuscode 400: bad parameter
- :statuscode 404: no such container
- :statuscode 500: server error
+ HTTP/1.1 200 OK
+ Content-Type: application/vnd.docker.raw-stream
+ {{ STREAM }}
+
+ :query logs: 1/True/true or 0/False/false, return logs. Default false
+ :query stream: 1/True/true or 0/False/false, return stream. Default false
+ :query stdin: 1/True/true or 0/False/false, if stream=true, attach to stdin. Default false
+ :query stdout: 1/True/true or 0/False/false, if logs=true, return stdout log, if stream=true, attach to stdout. Default false
+ :query stderr: 1/True/true or 0/False/false, if logs=true, return stderr log, if stream=true, attach to stderr. Default false
+ :statuscode 200: no error
+ :statuscode 400: bad parameter
+ :statuscode 404: no such container
+ :statuscode 500: server error
Wait a container
****************
.. http:post:: /containers/(id)/wait
- Block until container ``id`` stops, then returns the exit code
+ Block until container ``id`` stops, then returns the exit code
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- POST /containers/16253994b7c4/wait HTTP/1.1
-
- **Example response**:
+ POST /containers/16253994b7c4/wait HTTP/1.1
- .. sourcecode:: http
+ **Example response**:
- HTTP/1.1 200 OK
- Content-Type: application/json
+ .. sourcecode:: http
- {"StatusCode":0}
-
- :statuscode 200: no error
- :statuscode 404: no such container
- :statuscode 500: server error
+ HTTP/1.1 200 OK
+ Content-Type: application/json
+ {"StatusCode":0}
+
+ :statuscode 200: no error
+ :statuscode 404: no such container
+ :statuscode 500: server error
Remove a container
*******************
.. http:delete:: /containers/(id)
- Remove the container ``id`` from the filesystem
+ Remove the container ``id`` from the filesystem
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- DELETE /containers/16253994b7c4?v=1 HTTP/1.1
+ DELETE /containers/16253994b7c4?v=1 HTTP/1.1
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 204 OK
+ HTTP/1.1 204 OK
- :query v: 1/True/true or 0/False/false, Remove the volumes associated to the container. Default false
- :statuscode 204: no error
- :statuscode 400: bad parameter
- :statuscode 404: no such container
- :statuscode 500: server error
-
+ :query v: 1/True/true or 0/False/false, Remove the volumes associated to the container. Default false
+ :statuscode 204: no error
+ :statuscode 400: bad parameter
+ :statuscode 404: no such container
+ :statuscode 500: server error
Copy files or folders from a container
**************************************
.. http:post:: /containers/(id)/copy
- Copy files or folders of container ``id``
+ Copy files or folders of container ``id``
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- POST /containers/4fa6e0f0c678/copy HTTP/1.1
- Content-Type: application/json
+ POST /containers/4fa6e0f0c678/copy HTTP/1.1
+ Content-Type: application/json
- {
- "Resource":"test.txt"
- }
+ {
+ "Resource":"test.txt"
+ }
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 200 OK
- Content-Type: application/octet-stream
-
- {{ STREAM }}
+ HTTP/1.1 200 OK
+ Content-Type: application/octet-stream
- :statuscode 200: no error
- :statuscode 404: no such container
- :statuscode 500: server error
+ {{ STREAM }}
+ :statuscode 200: no error
+ :statuscode 404: no such container
+ :statuscode 500: server error
2.2 Images
----------
@@ -574,370 +556,360 @@
.. http:get:: /images/(format)
- List images ``format`` could be json or viz (json default)
+ List images ``format`` could be json or viz (json default)
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- GET /images/json?all=0 HTTP/1.1
+ GET /images/json?all=0 HTTP/1.1
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- [
- {
- "Repository":"ubuntu",
- "Tag":"precise",
- "Id":"b750fe79269d",
- "Created":1364102658,
- "Size":24653,
- "VirtualSize":180116135
- },
- {
- "Repository":"ubuntu",
- "Tag":"12.04",
- "Id":"b750fe79269d",
- "Created":1364102658,
- "Size":24653,
- "VirtualSize":180116135
- }
- ]
+ HTTP/1.1 200 OK
+ Content-Type: application/json
+ [
+ {
+ "Repository":"ubuntu",
+ "Tag":"precise",
+ "Id":"b750fe79269d",
+ "Created":1364102658,
+ "Size":24653,
+ "VirtualSize":180116135
+ },
+ {
+ "Repository":"ubuntu",
+ "Tag":"12.04",
+ "Id":"b750fe79269d",
+ "Created":1364102658,
+ "Size":24653,
+ "VirtualSize":180116135
+ }
+ ]
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- GET /images/viz HTTP/1.1
+ GET /images/viz HTTP/1.1
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 200 OK
- Content-Type: text/plain
+ HTTP/1.1 200 OK
+ Content-Type: text/plain
- digraph docker {
- "d82cbacda43a" -> "074be284591f"
- "1496068ca813" -> "08306dc45919"
- "08306dc45919" -> "0e7893146ac2"
- "b750fe79269d" -> "1496068ca813"
- base -> "27cf78414709" [style=invis]
- "f71189fff3de" -> "9a33b36209ed"
- "27cf78414709" -> "b750fe79269d"
- "0e7893146ac2" -> "d6434d954665"
- "d6434d954665" -> "d82cbacda43a"
- base -> "e9aa60c60128" [style=invis]
- "074be284591f" -> "f71189fff3de"
- "b750fe79269d" [label="b750fe79269d\nubuntu",shape=box,fillcolor="paleturquoise",style="filled,rounded"];
- "e9aa60c60128" [label="e9aa60c60128\ncentos",shape=box,fillcolor="paleturquoise",style="filled,rounded"];
- "9a33b36209ed" [label="9a33b36209ed\nfedora",shape=box,fillcolor="paleturquoise",style="filled,rounded"];
- base [style=invisible]
- }
-
- :query all: 1/True/true or 0/False/false, Show all containers. Only running containers are shown by default
- :statuscode 200: no error
- :statuscode 400: bad parameter
- :statuscode 500: server error
+ digraph docker {
+ "d82cbacda43a" -> "074be284591f"
+ "1496068ca813" -> "08306dc45919"
+ "08306dc45919" -> "0e7893146ac2"
+ "b750fe79269d" -> "1496068ca813"
+ base -> "27cf78414709" [style=invis]
+ "f71189fff3de" -> "9a33b36209ed"
+ "27cf78414709" -> "b750fe79269d"
+ "0e7893146ac2" -> "d6434d954665"
+ "d6434d954665" -> "d82cbacda43a"
+ base -> "e9aa60c60128" [style=invis]
+ "074be284591f" -> "f71189fff3de"
+ "b750fe79269d" [label="b750fe79269d\nubuntu",shape=box,fillcolor="paleturquoise",style="filled,rounded"];
+ "e9aa60c60128" [label="e9aa60c60128\ncentos",shape=box,fillcolor="paleturquoise",style="filled,rounded"];
+ "9a33b36209ed" [label="9a33b36209ed\nfedora",shape=box,fillcolor="paleturquoise",style="filled,rounded"];
+ base [style=invisible]
+ }
+ :query all: 1/True/true or 0/False/false, Show all containers. Only running containers are shown by default
+ :statuscode 200: no error
+ :statuscode 400: bad parameter
+ :statuscode 500: server error
Create an image
***************
.. http:post:: /images/create
- Create an image, either by pull it from the registry or by importing it
+ Create an image, either by pull it from the registry or by importing it
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- POST /images/create?fromImage=ubuntu HTTP/1.1
+ POST /images/create?fromImage=ubuntu HTTP/1.1
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 200 OK
- Content-Type: application/json
+ HTTP/1.1 200 OK
+ Content-Type: application/json
- {"status":"Pulling..."}
- {"status":"Pulling", "progress":"1/? (n/a)"}
- {"error":"Invalid..."}
- ...
+ {"status":"Pulling..."}
+ {"status":"Pulling", "progress":"1/? (n/a)"}
+ {"error":"Invalid..."}
+ ...
- When using this endpoint to pull an image from the registry,
- the ``X-Registry-Auth`` header can be used to include a
- base64-encoded AuthConfig object.
+ When using this endpoint to pull an image from the registry,
+ the ``X-Registry-Auth`` header can be used to include a
+ base64-encoded AuthConfig object.
- :query fromImage: name of the image to pull
- :query fromSrc: source to import, - means stdin
- :query repo: repository
- :query tag: tag
- :query registry: the registry to pull from
- :statuscode 200: no error
- :statuscode 500: server error
-
+ :query fromImage: name of the image to pull
+ :query fromSrc: source to import, - means stdin
+ :query repo: repository
+ :query tag: tag
+ :query registry: the registry to pull from
+ :statuscode 200: no error
+ :statuscode 500: server error
Insert a file in an image
*************************
.. http:post:: /images/(name)/insert
- Insert a file from ``url`` in the image ``name`` at ``path``
+ Insert a file from ``url`` in the image ``name`` at ``path``
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- POST /images/test/insert?path=/usr&url=myurl HTTP/1.1
+ POST /images/test/insert?path=/usr&url=myurl HTTP/1.1
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 200 OK
- Content-Type: application/json
+ HTTP/1.1 200 OK
+ Content-Type: application/json
- {"status":"Inserting..."}
- {"status":"Inserting", "progress":"1/? (n/a)"}
- {"error":"Invalid..."}
- ...
+ {"status":"Inserting..."}
+ {"status":"Inserting", "progress":"1/? (n/a)"}
+ {"error":"Invalid..."}
+ ...
- :statuscode 200: no error
- :statuscode 500: server error
-
+ :statuscode 200: no error
+ :statuscode 500: server error
Inspect an image
****************
.. http:get:: /images/(name)/json
- Return low-level information on the image ``name``
+ Return low-level information on the image ``name``
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- GET /images/centos/json HTTP/1.1
+ GET /images/centos/json HTTP/1.1
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 200 OK
- Content-Type: application/json
+ HTTP/1.1 200 OK
+ Content-Type: application/json
- {
- "id":"b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
- "parent":"27cf784147099545",
- "created":"2013-03-23T22:24:18.818426-07:00",
- "container":"3d67245a8d72ecf13f33dffac9f79dcdf70f75acb84d308770391510e0c23ad0",
- "container_config":
- {
- "Hostname":"",
- "User":"",
- "Memory":0,
- "MemorySwap":0,
- "AttachStdin":false,
- "AttachStdout":false,
- "AttachStderr":false,
- "PortSpecs":null,
- "Tty":true,
- "OpenStdin":true,
- "StdinOnce":false,
- "Env":null,
- "Cmd": ["/bin/bash"]
- ,"Dns":null,
- "Image":"centos",
- "Volumes":null,
- "VolumesFrom":"",
- "WorkingDir":""
- },
- "Size": 6824592
- }
+ {
+ "id":"b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
+ "parent":"27cf784147099545",
+ "created":"2013-03-23T22:24:18.818426-07:00",
+ "container":"3d67245a8d72ecf13f33dffac9f79dcdf70f75acb84d308770391510e0c23ad0",
+ "container_config":
+ {
+ "Hostname":"",
+ "User":"",
+ "Memory":0,
+ "MemorySwap":0,
+ "AttachStdin":false,
+ "AttachStdout":false,
+ "AttachStderr":false,
+ "PortSpecs":null,
+ "Tty":true,
+ "OpenStdin":true,
+ "StdinOnce":false,
+ "Env":null,
+ "Cmd": ["/bin/bash"]
+ ,"Dns":null,
+ "Image":"centos",
+ "Volumes":null,
+ "VolumesFrom":"",
+ "WorkingDir":""
+ },
+ "Size": 6824592
+ }
- :statuscode 200: no error
- :statuscode 404: no such image
- :statuscode 500: server error
-
+ :statuscode 200: no error
+ :statuscode 404: no such image
+ :statuscode 500: server error
Get the history of an image
***************************
.. http:get:: /images/(name)/history
- Return the history of the image ``name``
+ Return the history of the image ``name``
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- GET /images/fedora/history HTTP/1.1
+ GET /images/fedora/history HTTP/1.1
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 200 OK
- Content-Type: application/json
+ HTTP/1.1 200 OK
+ Content-Type: application/json
- [
- {
- "Id":"b750fe79269d",
- "Created":1364102658,
- "CreatedBy":"/bin/bash"
- },
- {
- "Id":"27cf78414709",
- "Created":1364068391,
- "CreatedBy":""
- }
- ]
+ [
+ {
+ "Id":"b750fe79269d",
+ "Created":1364102658,
+ "CreatedBy":"/bin/bash"
+ },
+ {
+ "Id":"27cf78414709",
+ "Created":1364068391,
+ "CreatedBy":""
+ }
+ ]
- :statuscode 200: no error
- :statuscode 404: no such image
- :statuscode 500: server error
-
+ :statuscode 200: no error
+ :statuscode 404: no such image
+ :statuscode 500: server error
Push an image on the registry
*****************************
.. http:post:: /images/(name)/push
- Push the image ``name`` on the registry
+ Push the image ``name`` on the registry
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- POST /images/test/push HTTP/1.1
+ POST /images/test/push HTTP/1.1
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
HTTP/1.1 200 OK
Content-Type: application/json
- {"status":"Pushing..."}
- {"status":"Pushing", "progress":"1/? (n/a)"}
- {"error":"Invalid..."}
- ...
+ {"status":"Pushing..."}
+ {"status":"Pushing", "progress":"1/? (n/a)"}
+ {"error":"Invalid..."}
+ ...
- The ``X-Registry-Auth`` header can be used to include a
- base64-encoded AuthConfig object.
+ The ``X-Registry-Auth`` header can be used to include a
+ base64-encoded AuthConfig object.
- :query registry: the registry you wan to push, optional
- :statuscode 200: no error
- :statuscode 404: no such image
- :statuscode 500: server error
-
+ :query registry: the registry you wan to push, optional
+ :statuscode 200: no error
+ :statuscode 404: no such image
+ :statuscode 500: server error
Tag an image into a repository
******************************
.. http:post:: /images/(name)/tag
- Tag the image ``name`` into a repository
+ Tag the image ``name`` into a repository
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
-
- POST /images/test/tag?repo=myrepo&force=0 HTTP/1.1
+ .. sourcecode:: http
- **Example response**:
+ POST /images/test/tag?repo=myrepo&force=0 HTTP/1.1
- .. sourcecode:: http
+ **Example response**:
- HTTP/1.1 200 OK
+ .. sourcecode:: http
- :query repo: The repository to tag in
- :query force: 1/True/true or 0/False/false, default false
- :statuscode 200: no error
- :statuscode 400: bad parameter
- :statuscode 404: no such image
- :statuscode 409: conflict
- :statuscode 500: server error
+ HTTP/1.1 200 OK
+ :query repo: The repository to tag in
+ :query force: 1/True/true or 0/False/false, default false
+ :statuscode 200: no error
+ :statuscode 400: bad parameter
+ :statuscode 404: no such image
+ :statuscode 409: conflict
+ :statuscode 500: server error
Remove an image
***************
.. http:delete:: /images/(name)
- Remove the image ``name`` from the filesystem
-
- **Example request**:
+ Remove the image ``name`` from the filesystem
- .. sourcecode:: http
+ **Example request**:
- DELETE /images/test HTTP/1.1
+ .. sourcecode:: http
- **Example response**:
+ DELETE /images/test HTTP/1.1
- .. sourcecode:: http
+ **Example response**:
- HTTP/1.1 200 OK
- Content-type: application/json
+ .. sourcecode:: http
- [
- {"Untagged":"3e2f21a89f"},
- {"Deleted":"3e2f21a89f"},
- {"Deleted":"53b4f83ac9"}
- ]
+ HTTP/1.1 200 OK
+ Content-type: application/json
- :statuscode 200: no error
- :statuscode 404: no such image
- :statuscode 409: conflict
- :statuscode 500: server error
+ [
+ {"Untagged":"3e2f21a89f"},
+ {"Deleted":"3e2f21a89f"},
+ {"Deleted":"53b4f83ac9"}
+ ]
+ :statuscode 200: no error
+ :statuscode 404: no such image
+ :statuscode 409: conflict
+ :statuscode 500: server error
Search images
*************
.. http:get:: /images/search
- Search for an image in the docker index
-
- **Example request**:
+ Search for an image in the docker index
- .. sourcecode:: http
+ **Example request**:
- GET /images/search?term=sshd HTTP/1.1
+ .. sourcecode:: http
- **Example response**:
+ GET /images/search?term=sshd HTTP/1.1
- .. sourcecode:: http
+ **Example response**:
- HTTP/1.1 200 OK
- Content-Type: application/json
-
- [
- {
- "Name":"cespare/sshd",
- "Description":""
- },
- {
- "Name":"johnfuller/sshd",
- "Description":""
- },
- {
- "Name":"dhrp/mongodb-sshd",
- "Description":""
- }
- ]
+ .. sourcecode:: http
- :query term: term to search
- :statuscode 200: no error
- :statuscode 500: server error
+ HTTP/1.1 200 OK
+ Content-Type: application/json
+ [
+ {
+ "Name":"cespare/sshd",
+ "Description":""
+ },
+ {
+ "Name":"johnfuller/sshd",
+ "Description":""
+ },
+ {
+ "Name":"dhrp/mongodb-sshd",
+ "Description":""
+ }
+ ]
+
+ :query term: term to search
+ :statuscode 200: no error
+ :statuscode 500: server error
2.3 Misc
--------
@@ -947,199 +919,192 @@
.. http:post:: /build
- Build an image from Dockerfile via stdin
+ Build an image from Dockerfile via stdin
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- POST /build HTTP/1.1
+ POST /build HTTP/1.1
- {{ STREAM }}
+ {{ STREAM }}
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 200 OK
+ HTTP/1.1 200 OK
- {{ STREAM }}
+ {{ STREAM }}
+ The stream must be a tar archive compressed with one of the following algorithms:
+ identity (no compression), gzip, bzip2, xz. The archive must include a file called
+ `Dockerfile` at its root. It may include any number of other files, which will be
+ accessible in the build context (See the ADD build command).
- The stream must be a tar archive compressed with one of the following algorithms:
- identity (no compression), gzip, bzip2, xz. The archive must include a file called
- `Dockerfile` at its root. It may include any number of other files, which will be
- accessible in the build context (See the ADD build command).
+ The Content-type header should be set to "application/tar".
- The Content-type header should be set to "application/tar".
-
- :query t: repository name (and optionally a tag) to be applied to the resulting image in case of success
- :query q: suppress verbose build output
- :query nocache: do not use the cache when building the image
- :query rm: remove intermediate containers after a successful build
- :statuscode 200: no error
- :statuscode 500: server error
-
+ :query t: repository name (and optionally a tag) to be applied to the resulting image in case of success
+ :query q: suppress verbose build output
+ :query nocache: do not use the cache when building the image
+ :query rm: remove intermediate containers after a successful build
+ :statuscode 200: no error
+ :statuscode 500: server error
Check auth configuration
************************
.. http:post:: /auth
- Get the default username and email
+ Get the default username and email
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- POST /auth HTTP/1.1
- Content-Type: application/json
+ POST /auth HTTP/1.1
+ Content-Type: application/json
- {
- "username":"hannibal",
- "password:"xxxx",
- "email":"hannibal@a-team.com",
- "serveraddress":"https://index.docker.io/v1/"
- }
+ {
+ "username":"hannibal",
+ "password:"xxxx",
+ "email":"hannibal@a-team.com",
+ "serveraddress":"https://index.docker.io/v1/"
+ }
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 200 OK
+ HTTP/1.1 200 OK
- :statuscode 200: no error
- :statuscode 204: no error
- :statuscode 500: server error
-
+ :statuscode 200: no error
+ :statuscode 204: no error
+ :statuscode 500: server error
Display system-wide information
*******************************
.. http:get:: /info
- Display system-wide information
-
- **Example request**:
+ Display system-wide information
- .. sourcecode:: http
+ **Example request**:
- GET /info HTTP/1.1
+ .. sourcecode:: http
- **Example response**:
+ GET /info HTTP/1.1
- .. sourcecode:: http
+ **Example response**:
- HTTP/1.1 200 OK
- Content-Type: application/json
+ .. sourcecode:: http
- {
- "Containers":11,
- "Images":16,
- "Debug":false,
- "NFd": 11,
- "NGoroutines":21,
- "MemoryLimit":true,
- "SwapLimit":false,
- "IPv4Forwarding":true
- }
+ HTTP/1.1 200 OK
+ Content-Type: application/json
- :statuscode 200: no error
- :statuscode 500: server error
+ {
+ "Containers":11,
+ "Images":16,
+ "Debug":false,
+ "NFd": 11,
+ "NGoroutines":21,
+ "MemoryLimit":true,
+ "SwapLimit":false,
+ "IPv4Forwarding":true
+ }
+ :statuscode 200: no error
+ :statuscode 500: server error
Show the docker version information
***********************************
.. http:get:: /version
- Show the docker version information
+ Show the docker version information
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- GET /version HTTP/1.1
+ GET /version HTTP/1.1
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 200 OK
- Content-Type: application/json
+ HTTP/1.1 200 OK
+ Content-Type: application/json
- {
- "Version":"0.2.2",
- "GitCommit":"5a2a5cc+CHANGES",
- "GoVersion":"go1.0.3"
- }
+ {
+ "Version":"0.2.2",
+ "GitCommit":"5a2a5cc+CHANGES",
+ "GoVersion":"go1.0.3"
+ }
- :statuscode 200: no error
- :statuscode 500: server error
-
+ :statuscode 200: no error
+ :statuscode 500: server error
Create a new image from a container's changes
*********************************************
.. http:post:: /commit
- Create a new image from a container's changes
+ Create a new image from a container's changes
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- POST /commit?container=44c004db4b17&m=message&repo=myrepo HTTP/1.1
+ POST /commit?container=44c004db4b17&m=message&repo=myrepo HTTP/1.1
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 201 OK
- Content-Type: application/vnd.docker.raw-stream
+ HTTP/1.1 201 OK
+ Content-Type: application/vnd.docker.raw-stream
- {"Id":"596069db4bf5"}
+ {"Id":"596069db4bf5"}
- :query container: source container
- :query repo: repository
- :query tag: tag
- :query m: commit message
- :query author: author (eg. "John Hannibal Smith <hannibal@a-team.com>")
- :query run: config automatically applied when the image is run. (ex: {"Cmd": ["cat", "/world"], "PortSpecs":["22"]})
- :statuscode 201: no error
- :statuscode 404: no such container
- :statuscode 500: server error
-
+ :query container: source container
+ :query repo: repository
+ :query tag: tag
+ :query m: commit message
+ :query author: author (eg. "John Hannibal Smith <hannibal@a-team.com>")
+ :query run: config automatically applied when the image is run. (ex: {"Cmd": ["cat", "/world"], "PortSpecs":["22"]})
+ :statuscode 201: no error
+ :statuscode 404: no such container
+ :statuscode 500: server error
Monitor Docker's events
***********************
.. http:get:: /events
- Get events from docker, either in real time via streaming, or via polling (using `since`)
+ Get events from docker, either in real time via streaming, or via polling (using `since`)
- **Example request**:
+ **Example request**:
- .. sourcecode:: http
+ .. sourcecode:: http
- POST /events?since=1374067924
+ POST /events?since=1374067924
- **Example response**:
+ **Example response**:
- .. sourcecode:: http
+ .. sourcecode:: http
- HTTP/1.1 200 OK
- Content-Type: application/json
+ HTTP/1.1 200 OK
+ Content-Type: application/json
- {"status":"create","id":"dfdf82bd3881","from":"ubuntu:latest","time":1374067924}
- {"status":"start","id":"dfdf82bd3881","from":"ubuntu:latest","time":1374067924}
- {"status":"stop","id":"dfdf82bd3881","from":"ubuntu:latest","time":1374067966}
- {"status":"destroy","id":"dfdf82bd3881","from":"ubuntu:latest","time":1374067970}
+ {"status":"create","id":"dfdf82bd3881","from":"ubuntu:latest","time":1374067924}
+ {"status":"start","id":"dfdf82bd3881","from":"ubuntu:latest","time":1374067924}
+ {"status":"stop","id":"dfdf82bd3881","from":"ubuntu:latest","time":1374067966}
+ {"status":"destroy","id":"dfdf82bd3881","from":"ubuntu:latest","time":1374067970}
- :query since: timestamp used for polling
- :statuscode 200: no error
- :statuscode 500: server error
-
+ :query since: timestamp used for polling
+ :statuscode 200: no error
+ :statuscode 500: server error
3. Going further
================
@@ -1151,14 +1116,13 @@
* Create the container
* If the status code is 404, it means the image doesn't exists:
- * Try to pull it
- * Then retry to create the container
+ * Try to pull it
+ * Then retry to create the container
* Start the container
* If you are not in detached mode:
- * Attach to the container, using logs=1 (to have stdout and stderr from the container's start) and stream=1
+ * Attach to the container, using logs=1 (to have stdout and stderr from the container's start) and stream=1
* If in detached mode or only stdin is attached:
- * Display the container's id
-
+ * Display the container's id
3.2 Hijacking
-------------
@@ -1172,5 +1136,4 @@
.. code-block:: bash
- docker -d -H="192.168.1.9:4243" -api-enable-cors
-
+ docker -d -H="192.168.1.9:4243" -api-enable-cors
diff --git a/docs/sources/use/builder.rst b/docs/sources/use/builder.rst
index 61c7fcc..fedae17 100644
--- a/docs/sources/use/builder.rst
+++ b/docs/sources/use/builder.rst
@@ -321,7 +321,7 @@
# VERSION 0.0.1
FROM ubuntu
- MAINTAINER Guillaume J. Charmes "guillaume@dotcloud.com"
+ MAINTAINER Guillaume J. Charmes <guillaume@dotcloud.com>
# make sure the package repository is up to date
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
diff --git a/docs/theme/docker/layout.html b/docs/theme/docker/layout.html
index 19c35f4..e415e97 100755
--- a/docs/theme/docker/layout.html
+++ b/docs/theme/docker/layout.html
@@ -6,6 +6,9 @@
<title>{{ meta['title'] if meta and meta['title'] else title }} - Docker Documentation</title>
<meta name="description" content="{{ meta['description'] if meta }}" />
<meta name="keywords" content="{{ meta['keywords'] if meta }}" />
+ <!-- Swiftype tags: https://swiftype.com/documentation/meta_tags -->
+ <meta property='st:popularity' content='4' />
+ <meta property='st:type' content='docker_doc' />
{%- set url_root = pathto('', 1) %}
{%- if url_root == '#' %}{% set url_root = '' %}{% endif %}
@@ -168,6 +171,9 @@
Swiftype.resultContainingElement = '#st-results-container';
Swiftype.attachElement = '#st-search-input';
Swiftype.renderStyle = "overlay";
+ // from https://swiftype.com/questions/how-can-i-make-more-popular-content-rank-higher
+ // Use "page" for now -- they don't subgroup by document type yet.
+ Swiftype.searchFunctionalBoosts = {"page": {"popularity": "linear"}};
var script = document.createElement('script');
script.type = 'text/javascript';
diff --git a/registry/registry.go b/registry/registry.go
index e7bc5fe..0079215 100644
--- a/registry/registry.go
+++ b/registry/registry.go
@@ -160,16 +160,16 @@
}
req.Header.Set("Authorization", "Token "+strings.Join(token, ", "))
res, err := doWithCookies(r.client, req)
- if err != nil || res.StatusCode != 200 {
- if res != nil {
- if res.StatusCode == 401 {
- return nil, ErrLoginRequired
- }
- return nil, utils.NewHTTPRequestError(fmt.Sprintf("Internal server error: %d trying to fetch remote history for %s", res.StatusCode, imgID), res)
- }
+ if err != nil {
return nil, err
}
defer res.Body.Close()
+ if res.StatusCode != 200 {
+ if res.StatusCode == 401 {
+ return nil, ErrLoginRequired
+ }
+ return nil, utils.NewHTTPRequestError(fmt.Sprintf("Server error: %d trying to fetch remote history for %s", res.StatusCode, imgID), res)
+ }
jsonString, err := ioutil.ReadAll(res.Body)
if err != nil {
@@ -240,6 +240,7 @@
return nil, err
}
if res.StatusCode != 200 {
+ res.Body.Close()
return nil, fmt.Errorf("Server error: Status %d while fetching image layer (%s)",
res.StatusCode, imgID)
}