Commit Graph

384 Commits

Author SHA1 Message Date
a08a354855 Add missing bounds in ContinueOnError
ContinueOnError assumes that something of type errcode.Errors contains
at least one error. This is generally true, but might not be true if the
remote registry returns an empty error body or invalid JSON. Add the
bounds check, and in the case where it fails, allow fallbacks to v1.

Fixes #18481

Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
Upstream-commit: 1ebfa299545e5c2273ce449d72b10745b9e38087
Component: engine
2015-12-08 09:54:20 -08:00
eed34f5bb0 Merge pull request #18105 from mishak87/registry-improvements
Registry tiny code improvements
Upstream-commit: f7c0d0ec5041ae32830a1edb79dfec55cba7b261
Component: engine
2015-12-07 13:35:02 +01:00
e0517ddf70 rename req to resp
Signed-off-by: mqliang <mqliang.zju@gmail.com>
Upstream-commit: 519236b47866cc77a3400b7905ffb97d79e39b0f
Component: engine
2015-12-02 20:38:54 +08:00
5d9dfb0ecc Check if CertsDir is not empty
Signed-off-by: Michal Gebauer <mishak@mishak.net>
Upstream-commit: bcd0f0cdc48180307d15c854f75e000b72f12ac8
Component: engine
2015-11-25 18:12:19 +01:00
5cc8cf959e move defer statement for readability
Signed-off-by: mqliang <mqliang.zju@gmail.com>
Upstream-commit: 302325a3aaaae030f58c84bdaf88a5c8266af12c
Component: engine
2015-11-25 22:33:15 +08:00
e105a29374 Update daemon and docker core to use new content addressable storage
Add distribution package for managing pulls and pushes. This is based on
the old code in the graph package, with major changes to work with the
new image/layer model.

Add v1 migration code.

Update registry, api/*, and daemon packages to use the reference
package's types where applicable.

Update daemon package to use image/layer/tag stores instead of the graph
package

Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Upstream-commit: 4352da7803d182a6013a5238ce20a7c749db979a
Component: engine
2015-11-24 09:40:25 -08:00
8b4eae12b3 registry/registry.go: simplify logical expression
Signed-off-by: Alexander Morozov <lk4d4@docker.com>
Upstream-commit: 90e2459ecb82c9cd0f231a04776272c6ffe435e4
Component: engine
2015-11-17 16:12:11 -08:00
ebcb6dad25 Merge pull request #17617 from askb/17168_pull_error_fix
Fix for #17168 issue
Upstream-commit: e2417e3e926d2b45049a663bc62828a70fbfab2a
Component: engine
2015-11-17 16:10:44 -08:00
f8169b65c3 Make NormalizeLocalName to not reach the network to normalize names.
Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: b665730d2c76cf991c123ad3387d6ba736a7515a
Component: engine
2015-11-17 03:31:32 -05:00
5ad61db1c1 Fix for #17168 misleading pull error
This fix avoids overwritting the previous error messages, ensures the client gets the correct error messages and not just the most recent message during the pull request.
For this `var lastErr` replaced with a slice which acts as a temp place holder for the list of returned error messages for every attempt.
The slice is later joined and returned to the caller function after searching for the image with diffirent versions(v2,v1,v0).

Updated the code with check for no space left on device error occurance and prevent the
daemon on falling back to v1,v0.

Incorporated the comments from @calavera, @RichardScothern, @cpuguy83

Signed-off-by: Anil Belur <askb23@gmail.com>
Upstream-commit: 31cdc63419a29badad2d79590db83fe617ee8e03
Component: engine
2015-11-14 16:24:45 +05:30
48001c30bb dockerversion placeholder for library import
- Add a *version* file placeholder.
- Update autogen and builds to use it and an autogen build flag

Signed-off-by: Vincent Demeester <vincent@sbr.pm>
Upstream-commit: 8054a303870b81eebe05e38261c1b68197b68558
Component: engine
2015-11-09 19:32:46 +01:00
9aef196743 Merge pull request #17614 from LK4D4/fix_golint
Update linting tools to latest versions
Upstream-commit: e704182c9c5bea1655791d11d13878b6a5ec949c
Component: engine
2015-11-03 15:32:12 -08:00
bf1b372cbc Vendor updated version of docker/distribution
This updates the vendored docker/distribution to the current master
branch.

Note the following changes:

- The manifest package was split into manifest/schema1. Most references
  to the manifest package in the engine needed to be updated to use
  schema1 instead.

- Validation functions in api/v2 were replaced by the
  distribution/reference package. The engine code has been updated to
  use the reference package for validation where necessary. A future PR
  will change the engine to use the types defined in
  distribution/reference more comprehensively.

- The reference package explicitly allows double _ characters in
  repository names. registry_test.go was updated for this.

- TestPullFailsWithAlteredManifest was corrupting the manifest JSON, now
  that the schema1 package unmarshals the correct payload. The test is
  being changed to modify the JSON without affecting its length, which
  allows the pull to succeed to the point where digest validation
  happens.

Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
Upstream-commit: 257c59251bd9a03aea4f3188a8160c54f37950ae
Component: engine
2015-11-02 12:40:18 -08:00
c077a5edb4 Fix go vet warnings
Signed-off-by: Alexander Morozov <lk4d4@docker.com>
Upstream-commit: 7aa28b6bdd86b0ad8ca119fb8fc2f864f219a0dd
Component: engine
2015-11-02 08:28:34 -08:00
cc55863497 Revert "dockerversion placeholder for library-import"
This reverts commit d5cd032a86617249eadd7142227c5355ba9164b4.

Commit caused issues on systems with case-insensitive filesystems.
Revert for now

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: b78ca243d9fc25d81c1b50008ee69f3e71e940f6
Component: engine
2015-10-27 21:23:53 -04:00
4d261096ec dockerversion placeholder for library-import
- Move autogen/dockerversion to version
- Update autogen and "builds" to use this package and a build flag

Signed-off-by: Vincent Demeester <vincent@sbr.pm>
Upstream-commit: d5cd032a86617249eadd7142227c5355ba9164b4
Component: engine
2015-10-27 20:36:07 +01:00
505ac314c6 Update distribution package
Pick up name regexp change in distribution to allow matching of hostnames as a valid component of a repository.

Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
Upstream-commit: b5b0da5fec235df864f5d84292b277aee80e5e3a
Component: engine
2015-10-08 17:16:43 -07:00
3ba7e5f650 change flag name to better follow the other flags that start with disable;
Signed-off-by: Jessica Frazelle <acidburn@docker.com>
Upstream-commit: c559d8ebf7df5f7b7cb912c34e2f9056fa1b32e5
Component: engine
2015-10-07 10:16:37 -07:00
a3a78e3ce4 Merge pull request #16509 from HuKeping/search-problem
Fix docker search problem
Upstream-commit: b78f66c472399bf56bd5110dbdaac5e5676396c8
Component: engine
2015-10-04 18:21:32 +02:00
a66830822a Fix docker search problem
Search terms shouldn't be restricted to only full valid repository
names. It should be perfectly valid to search using a part of a name,
even if it ends with a period, dash or underscore.

Signed-off-by: Hu Keping <hukeping@huawei.com>
Upstream-commit: f04e8fdb9bbcdad28de5c328b7de3f3abdae0b5a
Component: engine
2015-10-04 23:23:43 +08:00
a0f9fee301 Prevent push and pull to v1 registries by filtering the available endpoints.
Add a daemon flag to control this behaviour.  Add a warning message when pulling
an image from a v1 registry.  The default order of pull is slightly altered
with this changset.

Previously it was:
https v2, https v1, http v2, http v1

now it is:
https v2, http v2, https v1, http v1

Prevent login to v1 registries by explicitly setting the version before ping to
prevent fallback to v1.

Add unit tests for v2 only mode.  Create a mock server that can register
handlers for various endpoints.  Assert no v1 endpoints are hit with legacy
registries disabled for the following commands:  pull, push, build, run and
login.  Assert the opposite when legacy registries are not disabled.

Signed-off-by: Richard Scothern <richard.scothern@gmail.com>
Upstream-commit: 39f2f15a35121f348e1a87db4203bcb72e632b16
Component: engine
2015-09-25 15:59:42 -07:00
f91e0804c7 Make RegistryConfig a typed value in the api.
Remove possible circular dependency that prevented us from using a real
type.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 719886d4352cba3f2cd0092e052bb4cb67d51417
Component: engine
2015-09-07 19:29:33 -04:00
b8a7d29c01 Merge pull request #15389 from aidanhs/aphs-simpler-pull-codepath
Remove unnecessary function parameter, add mirror endpoint test
Upstream-commit: 137df3048c4aac0e5e22118f8e9f2c46717b9f64
Component: engine
2015-08-24 11:03:01 -07:00
ccb1fbf0e4 Merge pull request #15417 from icecrime/update_windows_registry_endpoint
Update Windows TP3 registry endpoints
Upstream-commit: 3dc30d47e196b19a364eed46ecfdde8550f1b9f6
Component: engine
2015-08-18 20:35:02 -07:00
2c6e673ce7 typofix - https://github.com/vlajos/misspell_fixer
Signed-off-by: Veres Lajos <vlajos@gmail.com>
Upstream-commit: 514623272398574c8fd7ef3fe42c5b2ae161349a
Component: engine
2015-08-07 23:25:49 +01:00
3ab9629bd8 Update Windows TP3 registry endpoints
Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
Upstream-commit: c7e1f91a9efc44a65e70913373e014abfb16f057
Component: engine
2015-08-07 14:03:46 -07:00
b0a38c37db Merge pull request #15370 from cpuguy83/better_error_on_client_connect
Better/more specific error messages on connect
Upstream-commit: 0262d40ba7d2edc67077a17aebbcdca1e2472a1e
Component: engine
2015-08-07 13:00:44 -07:00
8e338445b7 Remove unnecessary func parameter, add mirror endpoint test
Signed-off-by: Aidan Hobson Sayers <aidanhs@cantab.net>
Upstream-commit: c016d2defdd640f0dcba384999482e3c80602c30
Component: engine
2015-08-07 02:25:41 +01:00
9970a2eed5 registry: Do not push to mirrors
This patch splits LookupEndpoints into LookupPullEndpoints and
LookupPushEndpoints so that mirrors added with --registry-mirror are
skipped in the list returned by LookupPushEndpoints.

Fixes https://github.com/docker/distribution/issues/823

Signed-off-by: Tibor Vass <tibor@docker.com>
Upstream-commit: b899977ee283d6bccf35ad9a079ed92a291ad34c
Component: engine
2015-08-06 17:41:59 -04:00
13560065bd Better/more specific error messages on connect
Closes #15309

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: 9994a35b5d4af281304b5146f88a225b9237712e
Component: engine
2015-08-06 16:41:37 -04:00
d750e0c75b Windows: Fix certificate directory for registry
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: 831b00303f1979dda6ed66980fc32a65f9229768
Component: engine
2015-08-05 13:25:41 -07:00
761b152e62 Fix uses of "int" where "int64" should be used instead
Some structures use int for sizes and UNIX timestamps. On some
platforms, int is 32 bits, so this can lead to the year 2038 issues and
overflows when dealing with large containers or layers.

Consistently use int64 to store sizes and UNIX timestamps in
api/types/types.go. Update related to code accordingly (i.e.
strconv.FormatInt instead of strconv.Itoa).

Use int64 in progressreader package to avoid integer overflow when
dealing with large quantities. Update related code accordingly.

Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
Upstream-commit: 1f61084d83aea37b212468aaa975020094b7f7c9
Component: engine
2015-07-31 16:31:40 -07:00
c85fe1e185 Merge pull request #14970 from tiborvass/windows-registry-endpoint
registry: Change default endpoint on windows to a windows-specific one
Upstream-commit: ad96fc310b52b41463ecc52f0a03c2022866e867
Component: engine
2015-07-30 22:41:34 -04:00
b3ca0f119a registry: allow fallback on unknown errors
This patch fixes a bug where a user specifies a v1 mirror for
--registry-mirror and pull an image from the Hub.

It used to not fallback because of an unexpected error returned when
trying to JSON marshal nginx output.

We now ensure that any unexpected error falls back to the next endpoint
in the list.

Signed-off-by: Tibor Vass <tibor@docker.com>
Upstream-commit: a21ba12f4e7f11c17e6d665716f3060b9923b11c
Component: engine
2015-07-30 19:03:38 -04:00
3216ae6bbb registry: Change default endpoint on windows to a windows-specific one
Signed-off-by: Tibor Vass <tibor@docker.com>
Upstream-commit: 4a92b8a0ef355aec76fcaedb62c573e3a7fa21a7
Component: engine
2015-07-30 14:52:41 -04:00
d620a32c7b Fix login and search TLS configuration
Currently login and search do not load per registry certificates.
This is a regression caused by the last refactor since this was recently fixed.

Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
Upstream-commit: e863a07b89599fd4a03d34491d67c09c6bc84444
Component: engine
2015-07-28 10:36:57 -07:00
7e6fe45a4f Use notary library for trusted image fetch and signing
Add a trusted flag to force the cli to resolve a tag into a digest via the notary trust library and pull by digest.
On push the flag the trust flag will indicate the digest and size of a manifest should be signed and push to a notary server.
If a tag is given, the cli will resolve the tag into a digest and pull by digest.
After pulling, if a tag is given the cli makes a request to tag the image.

Use certificate directory for notary requests

Read certificates using same logic used by daemon for registry requests.

Catch JSON syntax errors from Notary client

When an uncaught error occurs in Notary it may show up in Docker as a JSON syntax error, causing a confusing error message to the user.
Provide a generic error when a JSON syntax error occurs.

Catch expiration errors and wrap in additional context.

Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
Upstream-commit: ed13c3abfb242905ec012e8255dc6f26dcf122f6
Component: engine
2015-07-24 14:08:20 -07:00
4d9279a3fb Improve documentation and golint compliance of registry package
* Add godoc documentation where it was missing

* Change identifier names that don't match Go style, such as INDEX_NAME

* Rename RegistryInfo to PingResult, which more accurately describes
  what this structure is for. It also has the benefit of making the name
  not stutter if used outside the package.

Updates #14756

Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
Upstream-commit: 4fcb9ac40ce33c4d6e08d5669af6be5e076e2574
Component: engine
2015-07-24 11:55:07 -07:00
12234c67d4 cli: new daemon command and new cli package
This patch creates a new cli package that allows to combine both client
and daemon commands (there is only one daemon command: docker daemon).

The `-d` and `--daemon` top-level flags are deprecated and a special
message is added to prompt the user to use `docker daemon`.

Providing top-level daemon-specific flags for client commands result
in an error message prompting the user to use `docker daemon`.

This patch does not break any old but correct usages.

This also makes `-d` and `--daemon` flags, as well as the `daemon`
command illegal in client-only binaries.

Signed-off-by: Tibor Vass <tibor@docker.com>
Upstream-commit: 96ce3a194aab2807fdd638825b9ea7cb9ba55c36
Component: engine
2015-07-23 19:44:46 -04:00
a17d5470f0 better i/o timeout error on pull
Signed-off-by: Jessica Frazelle <princess@docker.com>
Upstream-commit: ca3dae523bd910bb0cbfa77b0f442a5177f2b04e
Component: engine
2015-07-21 19:08:15 -07:00
5898d8c33d Merge pull request #14829 from RichardScothern/registry-tls
Configure TLS for private v2 registry mirrors.
Upstream-commit: 42533e323cc6f996cd3eda41172dfdc6affeacd9
Component: engine
2015-07-21 19:23:39 -04:00
82b193c1f9 Remove v1 registry mirror configuration from LookupEndpoints.
V1 mirrors do not mirror the index and those endpoints should
only be indexes.

Signed-off-by: Richard Scothern <richard.scothern@gmail.com>
Upstream-commit: 6b36a488e77c9d91c8eacb07053bff263bda04f3
Component: engine
2015-07-21 15:21:41 -07:00
62d1021452 Configure TLS for private registry mirrors.
If a registry mirror is using TLS, ensure that certs for it
are picked up from /etc/docker/certs.d

Signed-off-by: Richard Scothern <richard.scothern@gmail.com>
Upstream-commit: cb57b256892b7d6c046cf28e45b9114f28f07aa3
Component: engine
2015-07-21 15:21:25 -07:00
87771732a3 Remove unused types in registry package
Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
Upstream-commit: 9e76e184e4c4b7df90c594b5323b2e423688e490
Component: engine
2015-07-21 11:53:57 -07:00
17583ad6dc Remove dead code in registry package
The only uses of RequestAuthorization and its associated functions were
removed in 19515a7ad859b28c474d81e756ac245afcd968e3 ("Update graph to
use vendored distribution client for the v2 codepath")

Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
Upstream-commit: 962dc622d94a17a30a5926e8155da87a7e39e933
Component: engine
2015-07-21 11:45:53 -07:00
66d10b96a0 golint for cliconfig
- fully capitalize HTTP in HTTPHeaders
 - comment for CONFIGFILE
 - camelcase and privatize oldConfigfile, defaultIndexserver
 - remove unused var errConfigFileMissing
 - comments for methods and functions throughout
 - external references to renamed variables changed

Signed-off-by: Morgan Bauer <mbauer@us.ibm.com>
Upstream-commit: dea49b7474f0efcefe4618b6133330f0bb5e2c84
Component: engine
2015-07-20 16:48:58 -07:00
371476f565 fix 8926: rmi dangling is unsafe when pulling
Signed-off-by: Ma Shimiao <mashimiao.fnst@cn.fujitsu.com>
Signed-off-by: Tibor Vass <tibor@docker.com>
Upstream-commit: 1b67c38f6f4a709e1d159445b56f0beee8cfad3a
Component: engine
2015-07-17 11:39:57 -04:00
1492d5ce64 Update graph to use vendored distribution client for the v2 codepath
Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
Signed-off-by: Tibor Vass <tibor@docker.com>
Upstream-commit: 19515a7ad859b28c474d81e756ac245afcd968e3
Component: engine
2015-07-16 13:13:47 -04:00
0a78587632 remove pkg/transport and use the one from distribution
Signed-off-by: Tibor Vass <tibor@docker.com>
Upstream-commit: 276c640be4b4335e3b8d684cb3562a56d3337b39
Component: engine
2015-07-16 13:13:46 -04:00
f26a2613c1 Fix issue where Search API endpoint would panic due to empty AuthConfig
Signed-off-by: Tibor Vass <tibor@docker.com>
Upstream-commit: b32c4cb4594bb27496e4f75163b7a1ed93fd06bd
Component: engine
2015-07-16 12:38:44 -04:00