Skip to content

Commit f1c0624

Browse files
authored
Merge pull request #750 from cgwalters/more-lbi-docs
docs/logically-bound: A bit more docs
2 parents 2b61c24 + 89b4f78 commit f1c0624

File tree

1 file changed

+36
-3
lines changed

1 file changed

+36
-3
lines changed

docs/src/experimental-logically-bound-images.md

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,18 @@ Tracking issue: <https://github.com/containers/bootc/issues/128>
77

88
## About logically bound images
99

10-
This experimental feature enables an association of container "app" images to a bootc system image. A similar approach to this is [physically bound](https://github.com/containers/bootc/issues/644) images. There are some trade-offs between the two approaches. Some benefits of logically bound images are:
10+
This experimental feature enables an association of container "app" images to a base bootc system image. Use cases for this include:
11+
12+
- Logging (e.g. journald->remote log forwarder container)
13+
- Monitoring (e.g. [Prometheus node_exporter](https://github.com/prometheus/node_exporter))
14+
- Configuration management agents
15+
- Security agents
16+
17+
These types of things are commonly not updated outside of the host, and there's a secondary important property: We *always* want them present and available on the host, possibly from very early on in the boot. In contrast with default usage of tools like `podman` or `docker`, images may be pulled dynamically *after* the boot starts; requiring functioning networking, etc. For example if the remote registry is unavailable temporarily, the host system may run for a longer period of time without log forwarding or monitoring, which can be very undesirable.
18+
19+
Another simple way to say this is that logically bound images allow you to reference container images with the same confidence you can with `ExecStart=` in a systemd unit.
20+
21+
The term "logically bound" was created to contrast with [physically bound](https://github.com/containers/bootc/issues/644) images. There are some trade-offs between the two approaches. Some benefits of logically bound images are:
1122

1223
- The bootc system image can be updated without re-downloading the app image bits.
1324
- The app images can be updated without modifying the bootc system image, this would be especially useful for development work
@@ -42,7 +53,29 @@ GlobalArgs=--storage-opt=additionalimagestore=/usr/lib/bootc/storage
4253

4354
Images are fetched using the global bootc pull secret by default (`/etc/ostree/auth.json`). It is not yet supported to configure `PullSecret` in these image definitions.
4455

56+
## Garbage collection
57+
58+
The bootc image store is owned by bootc; images will be garbage collected when they are no longer referenced
59+
by a file in `/usr/lib/bootc/bound-images.d`.
60+
61+
## Installation
62+
63+
Logically bound images must be present in the default container store (`/var/lib/containers`) when invoking
64+
[bootc install](bootc-install.md); the images will be copied into the target system and present
65+
directly at boot, alongside the bootc base image.
66+
4567
## Limitations
4668

47-
- Currently, only the Image field of a `.image` or `.container` file is used to pull the image; per above not even `PullSecret=` is supported.
48-
- Images are not yet garbage collected
69+
The *only* field parsed and honored by bootc currently is the `Image` field of a `.image` or `.container` file.
70+
71+
Other pull-relevant flags such as `PullSecret=` for example are not supported (see above).
72+
Another example unsupported flag is `Arch` (the default host architecture is always used).
73+
74+
There is no mechanism to inject arbitrary arguments to the `podman pull` (or equivalent)
75+
invocation used by bootc. However, many properties used for container registry interaction
76+
can be configured via [containers-registries.conf](https://github.com/containers/image/blob/main/docs/containers-registries.conf.5.md)
77+
and apply to all commands operating on that image.
78+
79+
### Distro/OS installer support
80+
81+
At the current time, logically bound images are [not supported by Anaconda](https://github.com/rhinstaller/anaconda/discussions/5197).

0 commit comments

Comments
 (0)