diff --git a/SOURCES/Containerfile.5.md b/SOURCES/Containerfile.5.md index 48374c7..49720c5 100644 --- a/SOURCES/Containerfile.5.md +++ b/SOURCES/Containerfile.5.md @@ -49,7 +49,7 @@ A Containerfile is similar to a Makefile. to a new image if necessary, before finally outputting the ID of the new image. - Container engines re-use intermediate images whenever possible. This significantly + Container engines reuse intermediate images whenever possible. This significantly accelerates the *build* process. # FORMAT diff --git a/SOURCES/containers-policy.json.5.md b/SOURCES/containers-policy.json.5.md index 6aa5f80..909d04a 100644 --- a/SOURCES/containers-policy.json.5.md +++ b/SOURCES/containers-policy.json.5.md @@ -61,18 +61,41 @@ The global `default` set of policy requirements is mandatory; all of the other f ## Supported transports and their scopes +See containers-transports(5) for general documentation about the transports and their reference syntax. + ### `atomic:` -The `atomic:` transport refers to images in an Atomic Registry. +The deprecated `atomic:` transport refers to images in an Atomic Registry. Supported scopes use the form _hostname_[`:`_port_][`/`_namespace_[`/`_imagestream_ [`:`_tag_]]], i.e. either specifying a complete name of a tagged image, or prefix denoting -a host/namespace/image stream or a wildcarded expression for matching all +a host/namespace/image stream, or a wildcarded expression starting with `*.` for matching all subdomains. For wildcarded subdomain matching, `*.example.com` is a valid case, but `example*.*.com` is not. *Note:* The _hostname_ and _port_ refer to the container registry host and port (the one used e.g. for `docker pull`), _not_ to the OpenShift API host and port. +### `containers-storage:` + +Supported scopes have the form `[`_storage-specifier_`]`_image-scope_. + +`[`_storage-specifier_`]` is usually `[`_graph-driver-name_`@`_graph-root_`]`, e.g. `[overlay@/var/lib/containers/storage]`. + +_image-scope_ matching the individual image is +- a named Docker reference *in the fully expanded form*, either using a tag or digest. For example, `docker.io/library/busybox:latest` (*not* `busybox:latest`) +- and/or (depending on which one the user’s input provides) `@`_image-id_ + +More general scopes are prefixes of individual-image scopes, and specify a less-precisely-specified image, or a repository +(by omitting first the image ID, if any; then the digest, if any; and finally a tag, if any), +a repository namespace, or a registry host (by only specifying the host name and possibly a port number). + +Finally, two full-store specifiers matching all images in the store are valid scopes: +- `[`_graph-driver-name_`@`_graph-root_`]` and +- `[`_graph-root_`]` + +Note that some tools like Podman and Buildah hard-code overrides of the signature verification policy for “push” operations, +allowing these operations regardless of configuration in `policy.json`. + ### `dir:` The `dir:` transport refers to images stored in local directories. @@ -80,10 +103,10 @@ The `dir:` transport refers to images stored in local directories. Supported scopes are paths of directories (either containing a single image or subdirectories possibly containing images). -*Note:* The paths must be absolute and contain no symlinks. Paths violating these requirements may be silently ignored. - -The top-level scope `"/"` is forbidden; use the transport default scope `""`, -for consistency with other transports. +*Note:* +- The paths must be absolute and contain no symlinks. Paths violating these requirements may be silently ignored. +- The top-level scope `"/"` is forbidden; use the transport default scope `""`, + for consistency with other transports. ### `docker:` @@ -93,24 +116,73 @@ Scopes matching individual images are named Docker references *in the fully expa using a tag or digest. For example, `docker.io/library/busybox:latest` (*not* `busybox:latest`). More general scopes are prefixes of individual-image scopes, and specify a repository (by omitting the tag or digest), -a repository namespace, or a registry host (by only specifying the host name) -or a wildcarded expression for matching all subdomains. For wildcarded subdomain +a repository namespace, or a registry host (by only specifying the host name and possibly a port number) +or a wildcarded expression starting with `*.`, for matching all subdomains (not including a port number). For wildcarded subdomain +matching, `*.example.com` is a valid case, but `example*.*.com` is not. + +### `docker-archive:` + +Only the default `""` scope is supported. + +### `docker-daemon:` + +For references using the _algo:digest_ format (referring to an image ID), only the default `""` scope is used. + +For images using a named reference, scopes matching individual images are *in the fully expanded form*, either +using a tag or digest. For example, `docker.io/library/busybox:latest` (*not* `busybox:latest`). + +More general named scopes are prefixes of individual-image scopes, and specify a repository (by omitting the tag or digest), +a repository namespace, or a registry host (by only specifying the host name and possibly a port number) +or a wildcarded expression starting with `*.`, for matching all subdomains (not including a port number). For wildcarded subdomain matching, `*.example.com` is a valid case, but `example*.*.com` is not. ### `oci:` The `oci:` transport refers to images in directories compliant with "Open Container Image Layout Specification". -Supported scopes use the form _directory_`:`_tag_, and _directory_ referring to -a directory containing one or more tags, or any of the parent directories. +Supported scopes are paths to directories +(either containing an OCI layout, or subdirectories possibly containing OCI layout directories). +The _reference_ annotation value, if any, is not used. -*Note:* See `dir:` above for semantics and restrictions on the directory paths, they apply to `oci:` equivalently. +*Note:* +- The paths must be absolute and contain no symlinks. Paths violating these requirements may be silently ignored. +- The top-level scope `"/"` is forbidden; use the transport default scope `""`, + for consistency with other transports. -### `tarball:` +### `oci-archive:` + +Supported scopes are paths to OCI archives, and their parent directories +(either containing a single archive, or subdirectories possibly containing archives). +The _reference_ annotation value, if any, is not used. + +*Note:* +- The paths must be absolute and contain no symlinks. Paths violating these requirements may be silently ignored. +- The top-level scope `"/"` is forbidden; use the transport default scope `""`, + for consistency with other transports. + +### `ostree`: -The `tarball:` transport refers to tarred up container root filesystems. +Supported scopes have the form _repo-path_`:`_image-scope_; _repo_path_ is the path to the OSTree repository. + +_image-scope_ is the _docker_reference_ part of the reference, with with a `:latest` tag implied if no tag is present, +and parent namespaces of the _docker_reference_ value (by omitting the tag, or a prefix specifying a higher-level namespace). + +*Note:* +- The _repo_path_ must be absolute and contain no symlinks. Paths violating these requirements may be silently ignored. + +### `sif:` + +Supported scopes are paths to Singularity images, and their parent directories +(either containing images, or subdirectories possibly containing images). + +*Note:* +- The paths must be absolute and contain no symlinks. Paths violating these requirements may be silently ignored. +- The top-level scope `"/"` is forbidden; use the transport default scope `""`, + for consistency with other transports. + +### `tarball:` -Scopes are ignored. +The `tarball:` transport is an implementation detail of some import workflows. Only the default `""` scope is supported. ## Policy Requirements diff --git a/SOURCES/containers-registries.conf.5.md b/SOURCES/containers-registries.conf.5.md index fdc2fa9..0263b79 100644 --- a/SOURCES/containers-registries.conf.5.md +++ b/SOURCES/containers-registries.conf.5.md @@ -73,16 +73,16 @@ internet without having to change `Dockerfile`s, or to add redundancy). : 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 +By default, this is 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" +location = "internal-registry-for-example.com/bar" ``` requests for the image `example.com/foo/myimage:latest` will actually work with the -`internal-registry-for-example.net/bar/myimage:latest` image. +`internal-registry-for-example.com/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, @@ -127,8 +127,9 @@ Referencing an image by digest ensures that the same is always used different images if the tag mapping is out of sync). -*Note*: Redirection and mirrors are currently processed only when reading images, not when pushing -to a registry; that may change in the future. +*Note*: Redirection and mirrors are currently processed only when reading a single image, +not when pushing to a registry nor when doing any other kind of lookup/search on a on a registry. +This may change in the future. #### Short-Name Aliasing The use of unqualified-search registries entails an ambiguity as it is @@ -247,7 +248,7 @@ 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` +3. `internal-registry-for-example.com/bar/image:latest` in order, and use the first one that exists. diff --git a/SOURCES/containers-storage.conf.5.md b/SOURCES/containers-storage.conf.5.md index 9d24e54..80306d9 100644 --- a/SOURCES/containers-storage.conf.5.md +++ b/SOURCES/containers-storage.conf.5.md @@ -56,9 +56,11 @@ $ restorecon -R -v /NEWSTORAGEPATH A common use case for this field is to provide a local storage directory when user home directories are NFS-mounted (podman does not support container storage over NFS). **imagestore**="" - Path of imagestore different from `graphroot`, by default storage library stores all images in `graphroot` but if `imagestore` is provided it will store newly pulled images in provided `imagestore` but will keep using `graphroot` for everything else. If user is using `overlay` driver then images which were already part of `graphroot` will still be accessible ( Internally storage library will mount `graphroot` as an `additionalImageStore` to allow this behaviour ). + The image storage path (the default is assumed to be the same as `graphroot`). Path of the imagestore, which is different from `graphroot`. By default, images in the storage library are stored in the `graphroot`. If `imagestore` is provided, newly pulled images will be stored in the `imagestore` location. All other storage continues to be stored in the `graphroot`. When using the `overlay` driver, images previously stored in the `graphroot` remain accessible. Internally, the storage library mounts `graphroot` as an `additionalImageStore` to allow this behavior. -A common use case for this field is for the users who want to split the file-system in different parts i.e disk which stores images vs disk used by the container created by the image. +A common use case for the `imagestore` field is users who need to split filesystems in different partitions. The `imagestore` partition stores images and the `graphroot` partition stores container content created from the images. + +Imagestore, if set, must be different from `graphroot`. **runroot**="" container storage run dir (default: "/run/containers/storage") @@ -104,6 +106,10 @@ containers/storage supports three keys Tells containers/storage where an ostree repository exists that might have previously pulled content which can be used when attempting to avoid pulling content from the container registry + * convert_images = "false" | "true" + If set to true, containers/storage will convert images to the a format compatible with + partial pulls in order to take advantage of local deduplication and hardlinking. It is an + expensive operation so it is not enabled by default. **remap-uids=**"" **remap-gids=**"" diff --git a/SOURCES/containers-transports.5.md b/SOURCES/containers-transports.5.md index 0f4cacf..481bdb7 100644 --- a/SOURCES/containers-transports.5.md +++ b/SOURCES/containers-transports.5.md @@ -16,6 +16,8 @@ they are evaluated. For example: if evaluated on a remote server, image names might refer to paths on that server; relative paths are relative to the current directory of the image consumer. + + ### **containers-storage**:[**[**storage-specifier**]**]{image-id|docker-reference[@image-id]} An image located in a local containers storage. @@ -38,10 +40,13 @@ By default, uses the authorization state in `$XDG_RUNTIME_DIR/containers/auth.js If the authorization state is not found there, `$HOME/.docker/config.json` is checked, which is set using docker-login(1). The containers-registries.conf(5) further allows for configuring various settings of a registry. -Note that a _docker-reference_ has the following format: `name[:tag|@digest]`. +Note that a _docker-reference_ has the following format: _name_[**:**_tag_ | **@**_digest_]. While the docker transport does not support both a tag and a digest at the same time some formats like containers-storage do. Digests can also be used in an image destination as long as the manifest matches the provided digest. + +The docker transport supports pushing images without a tag or digest to a registry when the image name is suffixed with **@@unknown-digest@@**. The _name_**@@unknown-digest@@** reference format cannot be used with a reference that has a tag or digest. The digest of images can be explored with skopeo-inspect(1). + If `name` does not contain a slash, it is treated as `docker.io/library/name`. Otherwise, the component before the first slash is checked if it is recognized as a `hostname[:port]` (i.e., it contains either a . or a :, or the component is exactly localhost). If the first component of name is not recognized as a `hostname[:port]`, `name` is treated as `docker.io/name`. @@ -54,7 +59,7 @@ Alternatively, for reading archives, @_source-index_ is a zero-based index in ar (to access untagged images). If neither _docker-reference_ nor @_source_index is specified when reading an archive, the archive must contain exactly one image. -It is further possible to copy data to stdin by specifying `docker-archive:/dev/stdin` but note that the used file must be seekable. +The _path_ can refer to a stream, e.g. `docker-archive:/dev/stdin`. ### **docker-daemon:**_docker-reference|algo:digest_ @@ -66,21 +71,31 @@ The _algo:digest_ refers to the image ID reported by docker-inspect(1). An image in a directory structure compliant with the "Open Container Image Layout Specification" at _path_. -_Path_ terminates at the first `:` character; any further `:` characters are not separators, but a part of _reference_. -Specify a _reference_ to allow storing multiple images within the same _path_. +The _path_ value terminates at the first `:` character; any further `:` characters are not separators, but a part of _reference_. +The _reference_ is used to set, or match, the `org.opencontainers.image.ref.name` annotation in the top-level index. +If _reference_ is not specified when reading an image, the directory must contain exactly one image. ### **oci-archive:**_path[:reference]_ An image in a tar(1) archive with contents compliant with the "Open Container Image Layout Specification" at _path_. -_Path_ terminates at the first `:` character; any further `:` characters are not separators, but a part of _reference_. -Specify a _reference_ to allow storing multiple images within the same _path_. +The _path_ value terminates at the first `:` character; any further `:` characters are not separators, but a part of _reference_. +The _reference_ is used to set, or match, the `org.opencontainers.image.ref.name` annotation in the top-level index. +If _reference_ is not specified when reading an archive, the archive must contain exactly one image. ### **ostree:**_docker-reference[@/absolute/repo/path]_ An image in the local ostree(1) repository. _/absolute/repo/path_ defaults to _/ostree/repo_. +### **sif:**_path_ + +An image using the Singularity image format at _path_. + +Only reading images is supported, and not all scripts can be represented in the OCI format. + + + ## Examples The following examples demonstrate how some of the containers transports can be used. diff --git a/SOURCES/containers.conf b/SOURCES/containers.conf index 1235c66..68bb255 100644 --- a/SOURCES/containers.conf +++ b/SOURCES/containers.conf @@ -119,7 +119,6 @@ default_sysctls = [ # #env = [ # "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", -# "TERM=xterm", #] # Pass all host environment variables into the container. @@ -150,6 +149,9 @@ default_sysctls = [ #init = false # Container init binary, if init=true, this is the init binary to be used for containers. +# If this option is not set catatonit is searched in the directories listed under +# the helper_binaries_dir option. It is recommended to just install catatonit +# there instead of configuring this option here. # #init_path = "/usr/libexec/podman/catatonit" @@ -196,6 +198,13 @@ default_sysctls = [ # #log_tag = "" +# List of mounts. Specified as +# "type=TYPE,source=,destination=,", for example: +# "type=bind,source=/var/lib/foobar,destination=/var/lib/foobar,ro". +# If it is empty or commented out, no mounts will be added +# +#mounts = [] + # Default way to to create a Network namespace for the container # Options are: # `private` Create private Network Namespace for the container. @@ -231,6 +240,18 @@ default_sysctls = [ # #prepare_volume_on_create = false +# Give extended privileges to all containers. A privileged container turns off +# the security features that isolate the container from the host. Dropped +# Capabilities, limited devices, read-only mount points, Apparmor/SELinux +# separation, and Seccomp filters are all disabled. Due to the disabled +# security features the privileged field should almost never be set as +# containers can easily break out of confinment. +# +# Containers running in a user namespace (e.g., rootless containers) cannot +# have more privileges than the user that launched them. +# +#privileged = false + # Run all containers with root file system mounted read-only # # read_only = false @@ -276,7 +297,7 @@ default_sysctls = [ # If it is empty or commented out, no volumes will be added # #volumes = [] -# + #[engine.platform_to_oci_runtime] #"wasi/wasm" = ["crun-wasm"] #"wasi/wasm32" = ["crun-wasm"] @@ -376,6 +397,26 @@ default_sysctls = [ # #active_service = "production" +#List of compression algorithms. If set makes sure that requested compression variant +#for each platform is added to the manifest list keeping original instance intact in +#the same manifest list on every `manifest push`. Supported values are (`gzip`, `zstd` and `zstd:chunked`). +# +#add_compression = ["gzip", "zstd", "zstd:chunked"] + +# Enforces using docker.io for completing short names in Podman's compatibility +# REST API. Note that this will ignore unqualified-search-registries and +# short-name aliases defined in containers-registries.conf(5). +#compat_api_enforce_docker_hub = true + +# Specify one or more external providers for the compose command. The first +# found provider is used for execution. Can be an absolute and relative path +# or a (file) name. +#compose_providers=[] + +# Emit logs on each invocation of the compose command indicating that an +# external compose provider is being executed. +#compose_warning_logs = true + # The compression format to use when pushing an image. # Valid options are: `gzip`, `zstd` and `zstd:chunked`. # @@ -416,10 +457,14 @@ default_sysctls = [ # short-name aliases defined in containers-registries.conf(5). #compat_api_enforce_docker_hub = true -# The database backend of Podman. Supported values are "boltdb" (default) and -# "sqlite". Please run `podman-system-reset` prior to changing the database +# The database backend of Podman. Supported values are "" (default), "boltdb" +# and "sqlite". An empty value means it will check whenever a boltdb already +# exists and use it when it does, otherwise it will use sqlite as default +# (e.g. new installs). This allows for backwards compatibility with older versions. +# Please run `podman-system-reset` prior to changing the database # backend of an existing deployment, to make sure Podman can operate correctly. -#database_backend="boltdb" +# +#database_backend = "" # Specify the keys sequence used to detach a container. # Format is a single character [a-Z] or a comma separated sequence of @@ -644,8 +689,8 @@ runtime = "crun" # [engine.service_destinations.production] # URI to access the Podman service # Examples: -# rootless "unix://run/user/$UID/podman/podman.sock" (Default) -# rootful "unix://run/podman/podman.sock (Default) +# rootless "unix:///run/user/$UID/podman/podman.sock" (Default) +# rootful "unix:///run/podman/podman.sock (Default) # remote rootless ssh://engineering.lab.company.com/run/user/1000/podman/podman.sock # remote rootful ssh://root@10.10.1.136:22/run/podman/podman.sock # @@ -670,6 +715,9 @@ runtime = "crun" # A value of 0 is treated as no timeout. #volume_plugin_timeout = 5 +# Default timeout in seconds for podmansh logins. +#podmansh_timeout = 30 + # Paths to look for a valid OCI runtime (crun, runc, kata, runsc, krun, etc) [engine.runtimes] #crun = [ @@ -776,3 +824,11 @@ runtime = "crun" # TOML does not provide a way to end a table other than a further table being # defined, so every key hereafter will be part of [machine] and not the # main config. + +[farms] +# +# the default farm to use when farming out builds +# default = "" +# +# map of existing farms +#[farms.list] diff --git a/SOURCES/containers.conf.5.md b/SOURCES/containers.conf.5.md index c9b399e..a96ebb5 100644 --- a/SOURCES/containers.conf.5.md +++ b/SOURCES/containers.conf.5.md @@ -30,6 +30,40 @@ Note, container engines also use other configuration files for configuring the e container images. * `policy.conf` for controlling which images can be pulled to the system. +## ENVIRONMENT VARIABLES +If the `CONTAINERS_CONF` environment variable is set, all system and user +config files are ignored and only the specified config file will be loaded. + +If the `CONTAINERS_CONF_OVERRIDE` path environment variable is set, the config +file will be loaded last even when `CONTAINERS_CONF` is set. + +The values of both environment variables may be absolute or relative paths, for +instance, `CONTAINERS_CONF=/tmp/my_containers.conf`. + +## MODULES +A module is a containers.conf file located directly in or a sub-directory of the following three directories: + - __$HOME/.config/containers/containers.conf.modules__ + - __/etc/containers/containers.conf.modules__ + - __/usr/share/containers/containers.conf.modules__ + +Files in those locations are not loaded by default but only on-demand. They are loaded after all system and user configuration files but before `CONTAINERS_CONF_OVERRIDE` hence allowing for overriding system and user configs. + +Modules are currently supported by podman(1). The `podman --module` flag allows for loading a module and can be specified multiple times. If the specified value is an absolute path, the config file will be loaded directly. Relative paths are resolved relative to the three module directories mentioned above and in the specified order such that modules in `$HOME` allow for overriding those in `/etc` and `/usr/share`. Modules in `$HOME` (or `$XDG_CONFIG_HOME` if specified) are only used for rootless users. + +## APPENDING TO STRING ARRAYS + +The default behavior during the loading sequence of multiple containers.conf files is to override previous data. To change the behavior from overriding to appending, you can set the `append` attribute as follows: `array=["item-1", "item=2", ..., {append=true}]`. Setting the append attribute instructs to append to this specific string array for the current and also subsequent loading steps. To change back to overriding, set `{append=false}`. + +Consider the following example: +``` +modules1.conf: env=["1=true"] +modules2.conf: env=["2=true"] +modules3.conf: env=["3=true", {append=true}] +modules3.conf: env=["4=true"] +``` + +After loading the files in the given order, the final contents are `env=["2=true", "3=true", "4=true"]`. If modules4.conf would set `{append=false}`, the final contents would be `env=["4=true"]`. + # FORMAT The [TOML format][toml] is used as the encoding of the configuration file. Every option is nested under its table. No bare options are used. The format of @@ -151,7 +185,7 @@ A list of dns servers to override the DNS configuration passed to the container. The special value “none” can be specified to disable creation of /etc/resolv.conf in the container. -**env**=["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "TERM=xterm"] +**env**=["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"] Environment variable list for the container process, used for passing environment variables to the container. @@ -185,6 +219,10 @@ Run an init inside the container that forwards signals and reaps processes. **init_path**="/usr/libexec/podman/catatonit" +If this option is not set catatonit is searched in the directories listed under +the **helper_binaries_dir** option. It is recommended to just install catatonit +there instead of configuring this option here. + Path to the container-init binary, which forwards signals and reaps processes within containers. Note that the container-init binary will only be used when the `--init` for podman-create and podman-run is set. @@ -229,6 +267,13 @@ limit is never exceeded. Default format tag for container log messages. This is useful for creating a specific tag for container log messages. Container log messages default to using the truncated container ID as a tag. +**mounts**=[] + +List of mounts. +Specified as "type=TYPE,source=,destination=," + +Example: [ "type=bind,source=/var/lib/foobar,destination=/var/lib/foobar,ro", ] + **netns**="private" Default way to to create a NET namespace for the container. @@ -262,6 +307,12 @@ is imposed. Copy the content from the underlying image into the newly created volume when the container is created instead of when it is started. If `false`, the container engine will not copy the content until the container is started. Setting it to `true` may have negative performance implications. +**privileged**=false + +Give extended privileges to all containers. A privileged container turns off the security features that isolate the container from the host. Dropped Capabilities, limited devices, read-only mount points, Apparmor/SELinux separation, and Seccomp filters are all disabled. Due to the disabled security features, the privileged field should almost never be set as containers can easily break out of confinment. + +Containers running in a user namespace (e.g., rootless containers) cannot have more privileges than the user that launched them. + **read_only**=true|false Run all containers with root file system mounted read-only. Set to false by default. @@ -417,11 +468,39 @@ The `engine` table contains configuration options used to set up container engin Name of destination for accessing the Podman service. See SERVICE DESTINATION TABLE below. +**add_compression**=[] + +List of compression algorithms. If set makes sure that requested compression variant +for each platform is added to the manifest list keeping original instance intact in +the same manifest list on every `manifest push`. Supported values are (`gzip`, `zstd` and `zstd:chunked`). + +Note: This is different from `compression_format` which allows users to select a default +compression format for `push` and `manifest push`, while `add_compression` is limited to +`manifest push` and allows users to append new instances to manifest list with specified compression +algorithms in `add_compression` for each platform. + **cgroup_manager**="systemd" The cgroup management implementation used for the runtime. Supports `cgroupfs` and `systemd`. +**compat_api_enforce_docker_hub**=true + +Enforce using docker.io for completing short names in Podman's compatibility +REST API. Note that this will ignore unqualified-search-registries and +short-name aliases defined in containers-registries.conf(5). + +**compose_providers**=[] + +Specify one or more external providers for the compose command. The first +found provider is used for execution. Can be an absolute and relative path or +a (file) name. + +**compose_warning_logs**=true + +Emit logs on each invocation of the compose command indicating that an external +compose provider is being executed. + **conmon_env_vars**=[] Environment variables to pass into Conmon. @@ -446,10 +525,13 @@ conmon_path=[ ] ``` -**database_backend**="boltdb" +**database_backend**="" -The database backend of Podman. Supported values are "boltdb" (default) and -"sqlite". Please run `podman-system-reset` prior to changing the database +The database backend of Podman. Supported values are "" (default), "boltdb" +and "sqlite". An empty value means it will check whenever a boltdb already +exists and use it when it does, otherwise it will use sqlite as default +(e.g. new installs). This allows for backwards compatibility with older versions. +Please run `podman-system-reset` prior to changing the database backend of an existing deployment, to make sure Podman can operate correctly. **detach_keys**="ctrl-p,ctrl-q" @@ -510,6 +592,17 @@ with detailed information about the container. Set to false by default. **helper_binaries_dir**=["/usr/libexec/podman", ...] A is a list of directories which are used to search for helper binaries. +The following binaries are searched in these directories: + - aardvark-dns + - catatonit + - netavark + - pasta + - slirp4netns + +Podman machine uses it for these binaries: + - gvproxy + - qemu + - vfkit The default paths on Linux are: @@ -730,6 +823,10 @@ depend on the compression format used. For gzip, valid options are 1-9, with a default of 5. For zstd, valid options are 1-20, with a default of 3. +**podmansh_timeout**=30 + +Number of seconds to wait for podmansh logins. + ## SERVICE DESTINATION TABLE The `engine.service_destinations` table contains configuration options used to set up remote connections to the podman service for the podman API. @@ -739,9 +836,9 @@ URI to access the Podman service Example URIs: -- **rootless local** - unix://run/user/1000/podman/podman.sock +- **rootless local** - unix:///run/user/1000/podman/podman.sock - **rootless remote** - ssh://user@engineering.lab.company.com/run/user/1000/podman/podman.sock -- **rootful local** - unix://run/podman/podman.sock +- **rootful local** - unix:///run/podman/podman.sock - **rootful remote** - ssh://root@10.10.1.136:22/run/podman/podman.sock **identity="~/.ssh/id_rsa** @@ -820,6 +917,17 @@ Virtualization provider to be used for running a podman-machine VM. Empty value is interpreted as the default provider for the current host OS. On Linux/Mac default is `QEMU` and on Windows it is `WSL`. +## FARMS TABLE +The `farms` table contains configuration options used to group up remote connections into farms that will be used when sending out builds to different machines in a farm via `podman buildfarm`. + +**default**="" + +The default farm to use when farming out builds. + +**[farms.list]** + +Map of farms created where the key is the farm name and the value is the list of system connections. + # FILES **containers.conf** @@ -832,15 +940,6 @@ __/etc/containers/containers.conf.d__ which will be loaded in alphanumeric order Rootless users can further override fields in the config by creating a config file stored in the __$HOME/.config/containers/containers.conf__ file or __.conf__ files in __$HOME/.config/containers/containers.conf.d__. -If the `CONTAINERS_CONF` environment variable is set, all system and user -config files are ignored and only the specified config file will be loaded. - -If the `CONTAINERS_CONF_OVERRIDE` path environment variable is set, the config -file will be loaded last even when `CONTAINERS_CONF` is set. - -The values of both environment variables may be absolute or relative paths, for -instance, `CONTAINERS_CONF=/tmp/my_containers.conf`. - Fields specified in a containers.conf file override the default options, as well as options in previously loaded containers.conf files. diff --git a/SOURCES/shortnames.conf b/SOURCES/shortnames.conf index 3500b2d..13cfac9 100644 --- a/SOURCES/shortnames.conf +++ b/SOURCES/shortnames.conf @@ -22,6 +22,8 @@ # Fedora "fedora-minimal" = "registry.fedoraproject.org/fedora-minimal" "fedora" = "registry.fedoraproject.org/fedora" + # Gentoo + "gentoo" = "docker.io/gentoo/stage3" # openSUSE "opensuse/tumbleweed" = "registry.opensuse.org/opensuse/tumbleweed" "opensuse/tumbleweed-dnf" = "registry.opensuse.org/opensuse/tumbleweed-dnf" @@ -54,10 +56,10 @@ "rhel7" = "registry.access.redhat.com/rhel7" "rhel7.9" = "registry.access.redhat.com/rhel7.9" "rhel-atomic" = "registry.access.redhat.com/rhel-atomic" - "rhel-minimal" = "registry.access.redhat.com/rhel-minimum" + "rhel-minimal" = "registry.access.redhat.com/rhel-minimal" "rhel-init" = "registry.access.redhat.com/rhel-init" "rhel7-atomic" = "registry.access.redhat.com/rhel7-atomic" - "rhel7-minimal" = "registry.access.redhat.com/rhel7-minimum" + "rhel7-minimal" = "registry.access.redhat.com/rhel7-minimal" "rhel7-init" = "registry.access.redhat.com/rhel7-init" "rhel7/rhel" = "registry.access.redhat.com/rhel7/rhel" "rhel7/rhel-atomic" = "registry.access.redhat.com/rhel7/rhel7/rhel-atomic" @@ -121,3 +123,12 @@ "rust" = "docker.io/library/rust" # node "node" = "docker.io/library/node" + # Grafana Labs + "grafana/agent" = "docker.io/grafana/agent" + "grafana/grafana" = "docker.io/grafana/grafana" + "grafana/k6" = "docker.io/grafana/k6" + "grafana/loki" = "docker.io/grafana/loki" + "grafana/mimir" = "docker.io/grafana/mimir" + "grafana/oncall" = "docker.io/grafana/oncall" + "grafana/pyroscope" = "docker.io/grafana/pyroscope" + "grafana/tempo" = "docker.io/grafana/tempo" diff --git a/SOURCES/storage.conf b/SOURCES/storage.conf index db5e541..72c50a4 100644 --- a/SOURCES/storage.conf +++ b/SOURCES/storage.conf @@ -27,6 +27,10 @@ runroot = "/run/containers/storage" # restorecon -R -v /NEWSTORAGEPATH graphroot = "/var/lib/containers/storage" +# Optional alternate location of image store if a location separate from the +# container store is required. If set, it must be different than graphroot. +# imagestore = "" + # Storage path for rootless users # diff --git a/SOURCES/update-vendored.sh b/SOURCES/update-vendored.sh index 4fd2054..d666611 100755 --- a/SOURCES/update-vendored.sh +++ b/SOURCES/update-vendored.sh @@ -23,7 +23,8 @@ for P in podman skopeo buildah; do else $PKG --release rhel-8 prep fi - DIR=`ls -d -- */ | grep "^$P"` + rm -rf *SPECPARTS + DIR=`ls -d -- */ | grep "$P"` grep github.com/containers/image $DIR/go.mod | cut -d\ -f2 | sed 's,-.*,,'>> /tmp/ver_image grep github.com/containers/common $DIR/go.mod | cut -d\ -f2 | sed 's,-.*,,' >> /tmp/ver_common grep github.com/containers/storage $DIR/go.mod | cut -d\ -f2 | sed 's,-.*,,' >> /tmp/ver_storage diff --git a/SOURCES/update.sh b/SOURCES/update.sh index 75b9cdc..986d630 100755 --- a/SOURCES/update.sh +++ b/SOURCES/update.sh @@ -59,3 +59,10 @@ fi "keyctl",' seccomp.json [ `grep \"socket\", seccomp.json | wc -l` == 0 ] && sed -i '/\"socketcall\",/i \ "socket",' seccomp.json +rhpkg clone redhat-release +cd redhat-release +rhpkg switch-branch rhel-9.4.0 +rhpkg prep +cp -f redhat-release-*/RPM-GPG* ../ +cd - +rm -rf redhat-release diff --git a/SPECS/containers-common.spec b/SPECS/containers-common.spec index 50e3764..4ba41d7 100644 --- a/SPECS/containers-common.spec +++ b/SPECS/containers-common.spec @@ -4,15 +4,15 @@ # pick the oldest version on c/image, c/common, c/storage vendored in # podman/skopeo/podman. %global skopeo_branch main -%global image_branch v5.26.1 -%global common_branch v0.55.1 -%global storage_branch v1.48.0 +%global image_branch v5.29.2 +%global common_branch v0.57.3 +%global storage_branch v1.51.0 %global shortnames_branch main Epoch: 2 Name: containers-common Version: 1 -Release: 55%{?dist}.inferit +Release: 61%{?dist}.inferit Summary: Common configuration and documentation for containers License: ASL 2.0 ExclusiveArch: %{go_arches} @@ -141,10 +141,37 @@ ln -s %{_sysconfdir}/yum.repos.d/redhat.repo %{buildroot}%{_datadir}/rhel/secret %{_datadir}/rhel/secrets/* %changelog +* Tue Apr 02 2024 Sergey Cherevko - 2:1-61.inferit +- Rebuilt for MSVSphere 9.4-beta + +* Thu Feb 08 2024 Jindrich Novy - 2:1-61 +- update vendored components +- Related: Jira:RHEL-2112 + +* Tue Jan 02 2024 Jindrich Novy - 2:1-60 +- Update vendored components +- Related: Jira:RHEL-2112 + +* Wed Oct 11 2023 Jindrich Novy - 2:1-59 +- fix shortnames +- Related: Jira:RHEL-2112 + * Mon Oct 09 2023 Sergey Cherevko - 2:1-55.inferit - MSVSphere debranding - Rebuilt for MSVSphere 9.3 +* Thu Sep 14 2023 Jindrich Novy - 2:1-58 +- implement GPG auto updating mechanism from redhat-release +- Resolves: #RHEL-3164 + +* Wed Sep 13 2023 Jindrich Novy - 2:1-57 +- update GPG keys to the current content of redhat-release +- Resolves: #RHEL-3164 + +* Fri Aug 25 2023 Jindrich Novy - 2:1-56 +- update vendored components and shortnames +- Related: #2176063 + * Wed Jul 19 2023 Jindrich Novy - 2:1-55 - fix vendoring script - Related: #2176063