IP Library Granted Patent US 12,443,401
Granted Patent B2
US 12,443,401 · App. 18/343,458 · Granted Oct 14, 2025

Hybrid approach to performing a lazy pull of container images

Inventor: Giuseppe Scrivano (Milan, IT)
Assignee: Red Hat, Inc.
G06F8/63G06F16/1865
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,443,401
App. No.
18/343,458
Granted
Oct 14, 2025
Kind
B2
Abstract

Embodiments of the present disclosure provide a hybrid approach to performing a lazy pull of a container image. A file system in user space (FUSE) is utilized to lazy pull the container image, and manage file requests from the container while the container image is being fetched locally. During the retrieving, the FUSE may receive from the container, one or more file requests, and may temporarily block each of the one or more file requests until it can process them. Once the container image is fully fetched locally, the overlay structure of the container image expected by a file system in the kernel (e.g., Overlay FS) is created and control is passed to the file system in the kernel. The FUSE may then unmount itself, to expose the container to the underlying mount point.

Claims (61)

1. A method comprising:

retrieving, by a processing device and a first file system in user space (FUSE), a plurality of files corresponding to an image file to build, in a mount point implemented in an operating system kernel, one or more base layers for running a container;

during the retrieving and while the one or more base layers are being built, receiving, by the processing device, from the container, one or more file requests, wherein the FUSE acts as a proxy between the container and the image file;

processing, by the processing device, using the FUSE, each of the one or more file requests by:

determining, by the processing device, whether the requested file is one of the plurality of files;

in response to determining that the requested file is one of the plurality of files, retrieving, by the processing device, based on whether the requested file has been retrieved by the FUSE, the requested file from the mount point or retrieving, by the processing device, the requested file from a registry server and writing, by the processing device, the requested file to the mount point; and

providing, by the processing device, the requested file to the container; and

in response to determining that all of the plurality of files have been retrieved or requested:

processing, by the processing device, any outstanding file requests; and

instructing, by the processing device, the mount point to run the container using the one or more base layers built in the mount point.

2. The method of claim 1 , wherein the mount point is initially generated with a set of empty layers, and wherein the FUSE is mounted at a FUSE mount point that is overlaid on top of the mount point as part of a second file system implemented in the operating system kernel.

3. The method of claim 2 , wherein the mount point and the FUSE mount point are combined into a single mount point by the second file system implemented in the operating system kernel.

4. The method of claim 2 , further comprising:

unmounting, by the processing device, the FUSE to expose the container to the mount point comprising the one or more base layers.

5. The method of claim 1 , wherein:

in response to determining that the requested file has been retrieved by the FUSE, retrieving, by the processing device, the requested file from the mount point; and

in response to determining that the requested file has not been retrieved by the FUSE, retrieving, by the processing device, the requested file from the registry server and writing the requested file to the mount point.

6. The method of claim 5 , wherein processing a file request further comprises:

in response to determining that the requested file is not one of the plurality of files, creating, by the processing device, an empty file in a write layer of the mount point.

7. The method of claim 1 , wherein the FUSE retrieves the plurality of files as a background process.

8. A system comprising:

a memory; and

a processing device, operatively coupled to the memory, the processing device to:

retrieve, by a first file system in user space (FUSE), a plurality of files corresponding to an image file to build, in a mount point implemented in an operating system kernel, one or more base layers for running a container;

during the retrieving and while the one or more base layers are being built, receive from the container, one or more file requests, wherein the FUSE acts as a proxy between the container and the image file;

process, using the FUSE, each of the one or more file requests by:

determining whether the requested file is one of the plurality of files;

in response to determining that the requested file is one of the plurality of files, retrieving, based on whether the requested file has been retrieved by the FUSE, the requested file from the mount point or retrieving the requested file from a registry server and writing the requested file to the mount point; and

providing the requested file to the container; and

in response to determining that all of the plurality of files have been retrieved or requested:

process any outstanding file requests; and

instruct the mount point to run the container using the one or more base layers built in the mount point.

9. The system of claim 8 , wherein the mount point is initially generated with a set of empty layers, and wherein the FUSE is mounted at a FUSE mount point that is overlaid on top of the mount point as part of a second file system implemented in the operating system kernel.

10. The system of claim 9 , wherein the mount point and the FUSE mount point are combined into a single mount point by the second file system implemented in the operating system kernel.

11. The system of claim 9 , wherein the processing device is further to:

unmount the FUSE to expose the container to the mount point comprising the one or more base layers.

12. The system of claim 8 , wherein:

in response to determining that the requested file has been retrieved by the FUSE, the processing device retrieves the requested file from the mount point; and

in response to determining that the requested file has not been retrieved by the FUSE, the processing device retrieves the requested file from the registry server and writes the requested file to the mount point.

13. The system of claim 12 , wherein to process a file request, the processing device is further to:

in response to determining that the requested file is not one of the plurality of files, create an empty file in a write layer of the mount point.

14. The system of claim 8 , wherein the FUSE retrieves the plurality of files as a background process.

15. A non-transitory machine-readable storage medium having instructions stored thereon which, when executed by a processing device, cause the processing device to:

retrieve, by a first file system in user space (FUSE), a plurality of files corresponding to an image file to build, in a mount point implemented in an operating system kernel, one or more base layers for running a container;

during the retrieving and while the one or more base layers are being built, receive from the container, one or more file requests, wherein the FUSE acts as a proxy between the container and the image file;

process, using the FUSE, each of the one or more file requests by:

determining whether the requested file is one of the plurality of files;

in response to determining that the requested file is one of the plurality of files, retrieving, based on whether the requested file has been retrieved by the FUSE, the requested file from the mount point or retrieving the requested file from a registry server and writing the requested file to the mount point; and

providing the requested file to the container; and

in response to determining that all of the plurality of files have been retrieved or requested:

process any outstanding file requests; and

instruct the mount point to run the container using the one or more base layers built in the mount point.

16. The non-transitory machine-readable storage medium of claim 15 , wherein the mount point is initially generated with a set of empty layers, and wherein the FUSE is mounted at a FUSE mount point that is overlaid on top of the mount point as part of a second file system implemented in the operating system kernel.

17. The non-transitory machine-readable storage medium of claim 16 , wherein the mount point and the FUSE mount point are combined into a single mount point by the second file system implemented in the operating system kernel.

18. The non-transitory machine-readable storage medium of claim 16 , wherein the processing device is further to:

unmount the FUSE to expose the container to the mount point comprising the one or more base layers.

19. The non-transitory machine-readable storage medium of claim 15 , wherein:

in response to determining that the requested file has been retrieved by the FUSE, the processing device retrieves the requested file from the mount point; and

in response to determining that the requested file has not been retrieved by the FUSE, the processing device retrieves the requested file from the registry server and writes the requested file to the mount point.

20. The non-transitory machine-readable storage medium of claim 19 , wherein to process a file request, the processing device is further to:

in response to determining that the requested file is not one of the plurality of files, create an empty file in a write layer of the mount point.

Assignments (2)
CHANGE OF NAME Recorded Mar 3, 2026
From: RED HAT, INC.
To: RED HAT, LLC
Reel/Frame 074913/0759 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 27, 2023
From: SCRIVANO, GIUSEPPE
To: RED HAT, INC.
Reel/Frame 065666/0531 →
Continuity (2)
Continuation 17220850 · Apr 1, 2021
Related Publication 20230342134A1 · Oct 26, 2023
References Cited (31)
US 9766915B1 · Emelyanov · 2017 [cited by examiner]
US 10055219B1 · Olderdissen et al. · 2018 [cited by applicant]
US 10430378B1 · Harter · 2019 [cited by examiner]
US 10606646B1 · Christensen · 2020 [cited by applicant]
US 10659533B1 · Zhao et al. · 2020 [cited by applicant]
US 10768961B2 · Bradshaw et al. · 2020 [cited by applicant]
US 10860536B2 · Jobi et al. · 2020 [cited by applicant]
US 20120179730A1 · Slegers · 2012 [cited by examiner]
US 20160072888A1 · Jung et al. · 2016 [cited by applicant]
US 20190347121A1 · Luo et al. · 2019 [cited by applicant]
US 20190354382A1 · Ross et al. · 2019 [cited by applicant]
US 20190384495A1 · Balcha · 2019 [cited by applicant]
US 20200004977A1 · Araujo et al. · 2020 [cited by applicant]
US 20200012511A1 · Li et al. · 2020 [cited by applicant]
US 20200082094A1 · Mcallister · 2020 [cited by examiner]
US 20200285609A1 · Guo · 2020 [cited by examiner]
US 20200409921A1 · Starks · 2020 [cited by examiner]
US 20210311759A1 · Corrie · 2021 [cited by examiner]
US 20220114037A1 · Jobi et al. · 2022 [cited by applicant]
US 20220171648A1 · Rodriguez et al. · 2022 [cited by applicant]
CN 107454188A · 2017 [cited by applicant]
CN 109005232A · 2018 [cited by applicant]
CN 111813742A · 2020 [cited by applicant]
CN 112019643A · 2020 [cited by applicant]
EP 3977274A1 · 2022 [cited by applicant]
WO WO2010131023A1 · 2010 [cited by examiner]
WO 2020232713A1 · 2020 [cited by applicant]
Thalheim et al., “CNTR: Lightweight OS Containers”, Jul. 2018, USENIX (Year: 2018). [cited by applicant]
Ma et al., “Efficient Service Handoff Across Edge Servers via Docker Container Migration”, 2017, ACM (Year: 2017). [cited by applicant]
Chazapis et al., “Global-scale peer-to-peer file services with DFS”, 2007, IEEE (Year: 2007). [cited by applicant]
Berzano et al., “Lightweight scheduling of elastic analysis containers in a competitive cloud environment: a Docked Analysis Facility for ALICE”, 2015, IOP Publishing Ltd (Year: 2015). [cited by applicant]