Provided by: golang-github-containers-image_5.16.0-3_all bug

NAME

       containers-registries.conf - Syntax of System Registry Configuration File

DESCRIPTION

       The  CONTAINERS-REGISTRIES  configuration  file  is  a  system-wide configuration file for
       container image registries. The file format is TOML.

       Container engines will use  the  $HOME/.config/containers/registries.conf  if  it  exists,
       otherwise they will use /etc/containers/registries.conf

   GLOBAL SETTINGS
       unqualified-search-registries
              An  array  of  host[:port]  registries to try when pulling an unqualified image, in
              order.

       credential-helpers
              An array of default credential helpers used as external  credential  stores.   Note
              that  "containers-auth.json"  is a reserved value to use auth files as specified in
              containers-auth.json(5).      The     credential     helpers     are     set     to
              ["containers-auth.json"] if none are specified.

   NAMESPACED [[registry]] SETTINGS
       The  bulk of the configuration is represented as an array of [[registry]] TOML tables; the
       settings may therefore differ among  different  registries  as  well  as  among  different
       namespaces/repositories within a registry.

   Choosing a [[registry]] TOML table
       Given an image name, a single [[registry]] TOML table is chosen based on its prefix field.

       prefix:  A  prefix  of  the  user-specified  image  name,  i.e. using one of the following
       formats:
         - host[:port]
         - host[:port]/namespace[/_namespace_…]
         - host[:port]/namespace[/_namespace_…]/repo
         - host[:port]/namespace[/_namespace_…]/repo(:_tag|@digest)
         - [*.]host

       The user-specified image name must start with the specified prefix (and continue with  the
       appropriate  separator)  for a particular [[registry]] TOML table to be considered; (only)
       the TOML table with the longest match is used. It can also include  wildcarded  subdomains
       in  the  format  *.example.com.   The  wildcard should only be present at the beginning as
       shown in the formats above. Other cases will not work. For example, *.example.com is valid
       but example.*.com, *.example.com/foo and *.example.com:5000/foo/bar:baz are not.

       As a special case, the prefix field can be missing; if so, it defaults to the value of the
       location field (described below).

   Per-namespace settings
       insecure
              true or false.  By default, container runtimes require TLS when  retrieving  images
              from  a  registry.   If  insecure  is  set to true, unencrypted HTTP as well as TLS
              connections with untrusted certificates are allowed.

       blocked
              true or false.  If true, pulling images with matching names is forbidden.

   Remapping and mirroring registries
       The user-specified image reference is, primarily, a "logical" image name, always used  for
       naming  the  image.   By default, the image reference also directly specifies the registry
       and repository to use, but the following options can be used to  redirect  the  underlying
       accesses  to  different registry servers or locations (e.g. to support configurations with
       no access to the internet without having to change Dockerfiles, or to add redundancy).

       location
              Accepts the same format as the prefix field, and specifies the physical location of
              the prefix-rooted namespace.

       By default, this equal to prefix (in which case prefix can be omitted and the [[registry]]
       TOML table can only specify location).

       Example: Given

              prefix = "example.com/foo"
              location = "internal-registry-for-example.net/bar"

       requests  for  the  image  example.com/foo/myimage:latest  will  actually  work  with  the
       internal-registry-for-example.net/bar/myimage:latest image.

       With a prefix containing a wildcard in the format: "*.example.com" for subdomain matching,
       the location can be empty. In such a case, prefix matching will occur,  but  no  reference
       rewrite  will  occur.  The  original  requested image string will be used as-is. But other
       settings like insecure / blocked / mirrors will be applied to matching images.

       Example: Given

              prefix = "*.example.com"

       requests for the image blah.example.com/foo/myimage:latest will be used as-is.  But  other
       settings like insecure/blocked/mirrors will be applied to matching images

       mirror An array of TOML tables specifying (possibly-partial) mirrors for the prefix-rooted
              namespace.

       The mirrors are attempted in the specified order; the first one that can be contacted  and
       contains  the  image  will  be  used  (and  if none of the mirrors contains the image, the
       primary location specified  by  the  registry.location  field,  or  using  the  unmodified
       user-specified reference, is tried last).

       Each  TOML  table  in  the  mirror  array  can contain the following fields, with the same
       semantics as if specified in the [[registry]] TOML table directly: - location - insecure

       mirror-by-digest-only
              true or false.  If true, mirrors will only be used  during  pulling  if  the  image
              reference  includes a digest.  Referencing an image by digest ensures that the same
              is always used  (whereas  referencing  an  image  by  a  tag  may  cause  different
              registries to return different images if the tag mapping is out of sync).

       Note  that if this is true, images referenced by a tag will only use the primary registry,
       failing if that registry is not accessible.

       Note: Redirection and mirrors are currently processed only when reading images,  not  when
       pushing to a registry; that may change in the future.

   Short-Name Aliasing
       The  use of unqualified-search registries entails an ambiguity as it is unclear from which
       registry a given image, referenced by a short name, may be pulled from.

       As mentioned in the note at the end of this man page, using short names is subject to  the
       risk  of  hitting  squatted registry namespaces.  If the unqualified-search registries are
       set to ["registry1.com", "registry2.com"]  an  attacker  may  take  over  a  namespace  of
       registry1.com  such that an image may be pulled from registry1.com instead of the intended
       source registry2.com.

       While it is highly recommended to always use fully-qualified  image  references,  existing
       deployments using short names may not be easily changed.  To circumvent the aforementioned
       ambiguity, so called short-name aliases can be configured that point to a  fully-qualified
       image reference.

       Short-name  aliases can be configured in the [aliases] table in the form of "name"="value"
       with the left-hand name being the short name (e.g.,  "image")  and  the  right-hand  value
       being  the  fully-qualified  image reference (e.g., "registry.com/namespace/image").  Note
       that neither "name" nor "value" can include a tag or digest.  Moreover, "name" must  be  a
       short name and hence cannot include a registry domain or refer to localhost.

       When  pulling  a  short  name, the configured aliases table will be used for resolving the
       short name.  If a matching alias is found, it will be used without further consulting  the
       unqualified-search  registries  list.   If no matching alias is found, the behavior can be
       controlled via the short-name-mode option as described below.

       Note that tags and digests  are  stripped  off  a  user-specified  short  name  for  alias
       resolution.   Hence, "image", "image:tag" and "image@digest" all resolve to the same alias
       (i.e., "image").  Stripped off tags and digests are later appended to the resolved alias.

       Further note that drop-in configuration files  (see  containers-registries.conf.d(5))  can
       override  aliases  in the specific loading order of the files.  If the "value" of an alias
       is empty (i.e., ""), the alias will be erased.   However,  a  given  "name"  may  only  be
       specified once in a single config file.

   Short-Name Aliasing: Modes
       The  short-name-mode  option  supports  three modes to control the behaviour of short-name
       resolution.

              • enforcing: If only one unqualified-search registry is set, use it as there is  no
                ambiguity.  If there is more than one registry and the user program is running in
                a terminal (i.e., stdout  stdin are a TTY), prompt the user to select one of  the
                specified  search  registries.   If the program is not running in a terminal, the
                ambiguity cannot be resolved which will lead to an error.

              • permissive: Behaves as enforcing but does not lead to an error if the program  is
                not  running  in  a  terminal.  Instead, fallback to using all unqualified-search
                registries.

              • disabled: Use all unqualified-search registries without prompting.

       If short-name-mode is not specified at all or left empty, default to the permissive  mode.
       If  the  user-specified  short  name was not aliased already, the enforcing and permissive
       mode if prompted, will record a new alias after a successful pull.  Note that the recorded
       alias  will be written to /var/cache/containers/short-name-aliases.conf for root to have a
       clear  separation  between   possibly   human-edited   registries.conf   files   and   the
       machine-generated  short-name-aliases-conf.   Note  that $HOME/.cache is used for rootless
       users.  If an alias is specified in a registries.conf file and also the  machine-generated
       short-name-aliases.conf, the short-name-aliases.conf file has precedence.

   Normalization of docker.io references
       The  Docker  Hub docker.io is handled in a special way: every push and pull operation gets
       internally normalized with /library if no other specific namespace is defined (for example
       on docker.io/namespace/image).

       (Note that the above-described normalization happens to match the behavior of Docker.)

       This   means   that   a   pull  of  docker.io/alpine  will  be  internally  translated  to
       docker.io/library/alpine. A pull of docker.io/user/alpine will not  be  rewritten  because
       this is already the correct remote path.

       Therefore, to remap or mirror the docker.io images in the (implied) /library namespace (or
       that whole namespace), the prefix and location fields  in  this  configuration  file  must
       explicitly     include     that    /library    namespace.    For    example    prefix    =
       "docker.io/library/alpine" and not prefix = "docker.io/alpine". The latter would match the
       docker.io/alpine/* repositories but not the docker.io/[library/]alpine image).

   EXAMPLE
              unqualified-search-registries = ["example.com"]

              [[registry]]
              prefix = "example.com/foo"
              insecure = false
              blocked = false
              location = "internal-registry-for-example.com/bar"

              [[registry.mirror]]
              location = "example-mirror-0.local/mirror-for-foo"

              [[registry.mirror]]
              location = "example-mirror-1.local/mirrors/foo"
              insecure = true

       Given the above, a pull of example.com/foo/image:latest will try:
           1. example-mirror-0.local/mirror-for-foo/image:latest
           2. example-mirror-1.local/mirrors/foo/image:latest
           3. internal-registry-for-example.net/bar/image:latest

       in order, and use the first one that exists.

VERSION 1 FORMAT - DEPRECATED

       VERSION  1  format  is  still  supported  but  it does not support using registry mirrors,
       longest-prefix matches, or location rewriting.

       The TOML format is used to build a simple  list  of  registries  under  three  categories:
       registries.search,  registries.insecure,  and  registries.block.   You  can  list multiple
       registries using a comma separated list.

       Search registries are used when the caller of a container runtime does not  fully  specify
       the  container  image  that they want to execute.  These registries are prepended onto the
       front of the specified container image until the named image is found at a registry.

       Note that insecure registries can be used for any registry, not just the registries listed
       under search.

       The  registries.insecure  and registries.block lists have the same meaning as the insecure
       and blocked fields in the current version.

   EXAMPLE
       The following example  configuration  defines  two  searchable  registries,  one  insecure
       registry, and two blocked registries.

              [registries.search]
              registries = ['registry1.com', 'registry2.com']

              [registries.insecure]
              registries = ['registry3.com']

              [registries.block]
              registries = ['registry.untrusted.com', 'registry.unsafe.com']

NOTE: RISK OF USING UNQUALIFIED IMAGE NAMES

       We  recommend always using fully qualified image names including the registry server (full
       dns name), namespace, image name, and tag (e.g., registry.redhat.io/ubi8/ubi:latest). When
       using  short  names, there is always an inherent risk that the image being pulled could be
       spoofed. For example, a user wants to pull an image  named  foobar  from  a  registry  and
       expects it to come from myregistry.com. If myregistry.com is not first in the search list,
       an attacker could place a different foobar image at a registry earlier in the search list.
       The  user  would  accidentally  pull and run the attacker's image and code rather than the
       intended content. We recommend only adding registries which are completely  trusted,  i.e.
       registries  which don't allow unknown or anonymous users to create accounts with arbitrary
       names. This will prevent an image from being spoofed, squatted or otherwise made insecure.
       If  it  is  necessary to use one of these registries, it should be added at the end of the
       list.

       It is recommended to use fully-qualified images for pulling as the destination registry is
       unambiguous.  Pulling  by digest (i.e., quay.io/repository/name@digest) further eliminates
       the ambiguity of tags.

SEE ALSO

       containers-auth.json(5) containers-certs.d(5)

HISTORY

       Dec 2019, Warning added for unqualified image names  by  Tom  Sweeney  tsweeney@redhat.commailto:tsweeney@redhat.com⟩

       Mar  2019,  Added  additional  configuration  format  by  Sascha Grunert sgrunert@suse.commailto:sgrunert@suse.com⟩

       Aug 2018, Renamed to containers-registries.conf(5) by Valentin Rothberg vrothberg@suse.commailto:vrothberg@suse.com⟩

       Jun 2018, Updated by Tom Sweeney tsweeney@redhat.commailto:tsweeney@redhat.com⟩

       Aug 2017, Originally compiled by Brent Baude bbaude@redhat.commailto:bbaude@redhat.com