Container Instantiation via Union File System Layer Mounts
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing container instantiation methods are slow due to the need to download and unpack all layer content before launching a container process, which can be time-consuming and inefficient, especially for cold-start containers without local caching.
Innovation Solution
Implementing a method that uses layer mounts to provide access to container image layers without downloading all layer content initially, creating a union file system spanning the layers, and launching the container process based on this system, thereby reducing the time required for instantiation.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If all layer content is downloaded and unpacked before launching a container process, then the container can be fully operational, but the instantiation time becomes excessively long
Solution Approach 1:
The container image is segmented into multiple layers, and instead of downloading all layers upfront, the system selectively mounts only the necessary layers (e.g., executable layers) from the registry. This segmentation allows the container to become operational with minimal layer content, significantly reducing instantiation time while maintaining reliability through on-demand layer loading.
Solution Approach 2:
The container registry pre-prepares layer mounts by maintaining layers in a mounted state within the registry itself. When a container needs to be instantiated, the runtime can immediately access pre-mounted layers without waiting for download and unpacking, achieving fast container startup while ensuring all necessary layers are available when needed.
2Productivity
If layer content is transmitted through the network before container launch, then the container has all necessary files, but network bandwidth is consumed and instantiation is delayed
Solution Approach 1:
The system extracts only the essential layer content needed for container execution from the full container image. By identifying and mounting only the critical layers (such as executable layers) directly from the registry, the system avoids transmitting unnecessary layer content over the network, reducing bandwidth consumption while maintaining container productivity.
Solution Approach 2:
The container registry acts as an intermediary that holds layer content in a mounted state, allowing the container runtime to access layers directly without full network transmission. This intermediary approach enables selective layer mounting where only necessary layers are accessed through the registry, minimizing network bandwidth usage while ensuring container startup speed.
3Adaptability or versatility
If a union file system is created spanning all layers, then the container can access all necessary files, but the complexity of managing layer mounts increases
Solution Approach 1:
The container registry provides a universal layer mounting interface that handles multiple layer types and formats through a single standardized mechanism. This multi-functional approach allows the same layer mount infrastructure to serve different container images, layer configurations, and access patterns, reducing the complexity of managing union file systems while maintaining adaptability across diverse container scenarios.
Data Source
AI summary
Computing system enhancements make container instantiation faster, reduce layer content storage demands, and make more container image formats available. A container instantiation location sends a container image pull request to a container registry, receives an image manifest, sends a layer mount request to the registry instead of a layer content download request, receives a layer mount, optionally repeats for additional layers, creates a union file system spanning the layers, and launches a container process based on the union file system without first downloading all the layer content. Inefficiencies and technical limitations of some other approaches are avoided, such as loopback mounts for snapshot expansion, creation or transmission of extra snapshots or extra container image clones, cluttering layer content with virtual machine settings, container system vendor lock-in, lack of container instantiation at a local system due to insufficient local storage, and lack of syscall optimization due to storage driver plugin usage.


