1 // Copyright 2018 Google LLC All Rights Reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 // Package name defines structured types for representing image references. 16 // 17 // What's in a name? For image references, not nearly enough! 18 // 19 // Image references look a lot like URLs, but they differ in that they don't 20 // contain the scheme (http or https), they can end with a :tag or a @digest 21 // (the latter being validated), and they perform defaulting for missing 22 // components. 23 // 24 // Since image references don't contain the scheme, we do our best to infer 25 // if we use http or https from the given hostname. We allow http fallback for 26 // any host that looks like localhost (localhost, 127.0.0.1, ::1), ends in 27 // ".local", or is in the "private" address space per RFC 1918. For everything 28 // else, we assume https only. To override this heuristic, use the Insecure 29 // option. 30 // 31 // Image references with a digest signal to us that we should verify the content 32 // of the image matches the digest. E.g. when pulling a Digest reference, we'll 33 // calculate the sha256 of the manifest returned by the registry and error out 34 // if it doesn't match what we asked for. 35 // 36 // For defaulting, we interpret "ubuntu" as 37 // "index.docker.io/library/ubuntu:latest" because we add the missing repo 38 // "library", the missing registry "index.docker.io", and the missing tag 39 // "latest". To disable this defaulting, use the StrictValidation option. This 40 // is useful e.g. to only allow image references that explicitly set a tag or 41 // digest, so that you don't accidentally pull "latest". 42 package name 43