-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[RFC] Record installed slices in --root
and install only what's missing
#10
Comments
--root
--root
and install only what's missing
Additional piece of information wrt security monitoring:
|
I have a post which describes a workaround for this issue. |
#25 got closed with
Can't seem to find those smaller feature requests linked here though. |
Update: we added Chisel manifest support in #142. |
@rebornplusplus is there an ETA for a new release with this feature? |
I don't have the exact date, but I believe it should be within the next few weeks. We are currently fine-tuning a few stuffs (#150, #159, #162) in preparation to a v1.0.0 release. |
Indeed, v1.0.0 is out :) Closing this issue as:
|
@rebornplusplus @cjdcordeiro Where would a user go to learn how to use this new "Chisel manifest" feature?
Am I misunderstanding how this feature should work? |
@rebornplusplus is working on bootstrapping dedicated documentation pages for Chisel. We're hoping to get the first draft ready within the next 2 weeks. In the meantime, the manifest is an opt-in feature that you can solicit via the This post should help you: https://discourse.ubuntu.com/t/chisel-manifest-is-supported-in-newly-released-v1-0-0/48944 |
Hi @cjdcordeiro, Excellent, thanks! Adding the Thanks, |
Currently it's not efficient to use chisel for an image that's based on another image that was also built using chisel. This is related to the current lack of any metadata/database of installed slices in the final images.
There's a desire to have 2 kind of images for some programming language environments (for example .NET or Go):
runtime-deps
image: This image contains required dependencies to run self-contained applications compiled from an language SDK. Examples are self-contained application bundles in .NET or static binaries in Golang. These final products have no dependencies on the language runtime as they bundle it. But they still require libraries on which the language runtime depends.runtime
image: This image is super-set ofruntime-deps
containing language runtime in addition to its dependencies.The way we currently use chisel is something a little bit more complex than this illustrative example (that also pretends
chisel
is inPATH
):If we apply this for the 2 images described above, we would end up with something like the following 2 Dokcerfiles.
For
runtime-deps
image:For
runtime
image (here .NET is used as an example):Even though we base our final
runtime
image onruntime-deps
, we effectively overwrite everything that was installed inruntime-deps
. Chisel cannot know that dependencies ofdotnet-runtime-6.0
have already been installed so whole dependency tree is populated in/rootfs-dotnet
.In this simple example one could suggest to not base
runtime
image onruntime-deps
image but instead build it from scratch. But more complexruntime-deps
image could have something more in addition to root filesystem created by chisel, e.g.:Here it makes sense to base
runtime
image onruntime-deps
image (above) because of the additional files created outside of chisel andENV
directives. (There could be alsoHEALTHCHECK
,PORTS
and other directives that we would like to inherit inruntime
image.)It'd be nice if chisel had an ability to record what has already been installed, and install only missing dependencies that were not recorded. It's a bit complicated by the fact that we execute chisel in stage container that doesn't have access to the image on top of which we want to copy new slices. But that can be solved by copying the suggested chisel metadata/database into the stage container, e.g. like this:
Now chisel could read state of
/rootfs-dotnet
from/rootfs-dotnet/var/lib/chisel.db
(or wherever we decide to store the metadata).One major problem with this is that it'll probably break the assumption that scripts run in a closed world and will lead to non-determinism. Currently each chisel run creates new world from scratch and so scripts runs can be scheduled to produce deterministic output. With such split installation it would no longer hold.
The text was updated successfully, but these errors were encountered: