You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: spec.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -67,15 +67,15 @@ The key words "unspecified", "undefined", and "implementation-defined" are to be
67
67
An implementation is not compliant if it fails to satisfy one or more of the MUST, MUST NOT, REQUIRED, SHALL, or SHALL NOT requirements for the protocols it implements.
68
68
An implementation is compliant if it satisfies all the MUST, MUST NOT, REQUIRED, SHALL, and SHALL NOT requirements for the protocols it implements.
69
69
70
-
###Historical Context
70
+
## Historical Context
71
71
72
72
For relevant details and a history leading up to this specification, please see the following issues:
This specification covers URL layout and protocols for interaction between a registry and registry client.
81
81
Registry implementations MAY implement other API endpoints, but they are not covered by this specification.
@@ -87,7 +87,7 @@ This specification includes the following features:
87
87
- Resumable layer PUSH support
88
88
- V2 Client library implementation
89
89
90
-
####Future
90
+
### Future
91
91
92
92
The following is an incomplete list of features, discussed during the process of cutting this specification, which MAY be out of the scope of this specification, MAY be the purview of another specification, or MAY be deferred to a future version:
93
93
@@ -96,38 +96,38 @@ The following is an incomplete list of features, discussed during the process of
96
96
- Multiple architecture support
97
97
- Migration from v2compatibility representation
98
98
99
-
###Use Cases
99
+
## Use Cases
100
100
101
-
####Image Verification
101
+
### Image Verification
102
102
103
103
A docker engine instance would like to run verified image named "library/ubuntu", with the tag "latest".
104
104
The engine contacts the registry, requesting the manifest for "library/ubuntu:latest".
105
105
An untrusted registry returns a manifest.
106
106
Before proceeding to download the individual layers, the engine verifies the manifest's signature, ensuring that the content was produced from a trusted source and no tampering has occurred.
107
107
After each layer is downloaded, the engine verifies the digest of the layer, ensuring that the content matches that specified by the manifest.
108
108
109
-
####Resumable Push
109
+
### Resumable Push
110
110
111
111
Company X's build servers lose connectivity to docker registry before completing an image layer transfer.
112
112
After connectivity returns, the build server attempts to re-upload the image.
113
113
The registry notifies the build server that the upload has already been partially attempted.
114
114
The build server responds by only sending the remaining data to complete the image file.
115
115
116
-
####Resumable Pull
116
+
### Resumable Pull
117
117
118
118
Company X is having more connectivity problems but this time in their deployment datacenter.
119
119
When downloading an image, the connection is interrupted before completion.
120
120
The client keeps the partial data and uses http `Range` requests to avoid downloading repeated data.
121
121
122
-
####Layer Upload De-duplication
122
+
### Layer Upload De-duplication
123
123
124
124
Company Y's build system creates two identical docker layers from build processes A and B.
125
125
Build process A completes uploading the layer before B.
126
126
When process B attempts to upload the layer, the registry indicates that its not necessary because the layer is already known.
127
127
128
128
If process A and B upload the same layer at the same time, both operations will proceed and the first to complete will be stored in the registry (Note: we may modify this to prevent dogpile with some locking mechanism).
129
129
130
-
###Changes
130
+
## Changes
131
131
132
132
The V2 specification has been written to work as a living document, specifying only what is certain and leaving what is not specified open or to future changes.
133
133
Only non-conflicting additions should be made to the API and accepted changes should avoid preventing future changes from happening.
0 commit comments