Docker image registry synchronization service
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- CONFLUENT INC
- Filing Date
- 2023-08-28
- Publication Date
- 2026-07-01
AI Technical Summary
Cloud computing systems face inefficiencies and increased costs due to repeated downloads of container images from remote sources, leading to potential execution of outdated versions and resource wastage.
A registry synchronization service that compares master copies of container images with cloud computing system lists, ensuring synchronization by downloading a single instance and replicating it across multiple repositories, while deleting outdated images.
This approach reduces network resource utilization, minimizes redundant downloads, and ensures all cloud computing systems have the latest container image versions, optimizing storage and network infrastructure.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical Field]
[0001] Embodiments relate generally to distributed computing environments and more particularly, but not exclusively, to data synchronization between different registers in a distributed computing environment. [Background technology]
[0002] (Priority Claim) This patent application claims the benefit of priority to U.S. Application Serial No. 17 / 900,477, filed August 31, 2022, which is incorporated herein by reference in its entirety.
[0003] Cloud computing systems, such as Amazon Web Services® (AWS®), Microsoft Azure®, and Google Cloud Platform®, are becoming increasingly popular as a way to provide computing resources. These cloud computing systems are enabled to provide services to various end users based on their needs. Cloud computing systems receive container images of programs captured in an executable state to provide the service from providers. The container images include files used to create instances of the application on end user devices deployed by various end users.
[0004] Typically, a cloud computing system downloads a container image from a provider to run the executable image locally. The provider downloads a copy of the container image from a remote source. For each instance that runs the container image, the provider downloads a copy of the container image from the remote source and uploads a copy of the container image to the cloud computing system. If the cloud computing system runs multiple instances of the container image, the provider accesses the remote source multiple times, one for each of the multiple instances. Furthermore, the provider downloads the container image to the cloud computing system multiple times. However, accessing the remote source multiple times increases costs, such as resource utilization, and increases the time associated with running instances that run the container image for various end users.
[0005] Furthermore, after the cloud computing system has received a container image from a remote source, the container image may be updated. The updated container image may then be pushed to the remote source. However, the cloud computing system may not have the updated container image. Therefore, the cloud computing system may allow an incorrect version of the container image to be executed. Furthermore, if the provider learns of the existence of an updated version, the provider not only accesses the remote source but also downloads and uploads the container image. The provider must repeat this process. This again leads to the above-mentioned problem. [Prior art documents] [Patent documents]
[0006] [Patent Document 1] International Publication No. 2021 / 232845 Summary of the Invention [Problem to be solved by the invention]
[0007] An improved Docker image registry sync service is required. [Means for solving the problem]
[0008] The various accompanying drawings merely illustrate examples of the present disclosure and should not be considered as limiting its scope. [Brief explanation of the drawings]
[0009] [Figure 1] 1 illustrates a computing environment in which embodiments may operate, according to some embodiments. [Figure 2] 1 illustrates a hierarchical structure of a cloud computing system registry associated with a cloud computing system, according to some embodiments. [Figure 3] 1 shows some example tags that may be attached to container images. [Figure 4] 4 illustrates a digest that may be attached to the tag of FIG. 3 according to some embodiments. [Figure 5] 1 illustrates a method for synchronizing a master list of remote sources with a container image list of a cloud computing system, according to some embodiments. [Figure 6] 1 illustrates tags that may be attached to a container image, according to some embodiments. [Figure 7] 1 illustrates tags that may be attached to a container image, according to some embodiments. [Figure 8] 1 illustrates tags that may be attached to a container image, according to some embodiments. [Figure 9] 8 illustrates digests that may be attached to the tags of FIGS. 6 and 7, according to some embodiments. [Figure 10] 8 illustrates digests that may be attached to the tags of FIGS. 6 and 7, according to some embodiments. [Figure 11] FIG. 1 is a block diagram illustrating the architecture of software used to implement displaying an interactive user interface, according to some embodiments. [Figure 12] FIG. 1 illustrates a machine as an exemplary computer system with instructions that cause the machine to display an interactive user interface, according to some examples. DETAILED DESCRIPTION OF THE INVENTION
[0010] The following description includes systems, methods, techniques, instruction sequences, and computing machine program products that embody exemplary embodiments of the present disclosure. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide an understanding of various embodiments of the inventive subject matter. However, it will be apparent to those skilled in the art that embodiments of the inventive subject matter may be practiced without these specific details. In general, well-known example instructions, protocols, structures, and techniques are not necessarily shown in detail.
[0011] As described above, container images are stored in remote sources and downloaded by providers, which are enabled to upload container images to cloud computing systems. In particular, registries are enabled to store master copies of container images that are downloaded to different cloud computing systems. However, if multiple cloud computing systems each use a container image thousands of times, the provider downloads the container image from the registry thousands of times. The provider then uploads the container image to the cloud computing systems thousands of times.
[0012] Therefore, a need exists for a system that can compare a container image on a master copy stored on a remote source with a container image stored in a registry of a cloud computing system. The system downloads a single instance of the container image based on the comparison. Further, the system should be able to provide multiple copies of the container image to the cloud computing system using the single instance.
[0013] An embodiment relates to a registry synchronization service. The registry synchronization service is configured to synchronize a master copy of a container image stored on a remote source with a list of container images stored in a cloud computing system registry. The registry synchronization service can read the master copy of the container image stored on the remote source and read the list of container images stored in the cloud computing system registry. In an example, the registry synchronization service is enabled to compare the master copy of the container image with the list of container images stored in the cloud computing system registry. Based on the comparison, the registry synchronization service can synchronize the list of container images stored in the cloud computing system registry with the master copy of the container image. The synchronization includes providing the container image stored in the cloud computing system and deleting the container image stored in the cloud computing system. In an example, the cloud computing system may not include any of the container images listed in the master copy. The registry synchronization service is enabled to ensure that all container images listed in the master copy also exist in the cloud computing system.
[0014] In an example, a registry synchronization service downloads a single instance of a container image from a remote source having a master copy of the container image. The registry synchronization service is further enabled to push copies of the single instance of the container image to multiple repositories associated with a registry of a cloud computing system. More specifically, using the downloaded single instance of the container image, the registry synchronization system creates multiple copies of the container image. The registry synchronization system is further enabled to push the multiple copies of the single instance to multiple repositories associated with the registry of a cloud computing system.
[0015] In an example, synchronization between a master copy of a container image and a list of container images in a cloud computing system registry can include comparing tags associated with the container image listed in the master copy with tags associated with the container image listed in the cloud computing system list. During synchronization, if a match between the tags is found, digests associated with the tags can be compared. In this manner, dual authorization can be implemented to determine that the container image listed in the cloud computing system list is the most recent version of the tag and digest associated with the tag. Furthermore, the registry synchronization service can determine where differences exist between the master copy of the container image and the list of container images in the cloud computing system registry.
[0016] An embodiment improves the functionality of a computing device. As described below, an embodiment relates to a computing device that implements a registry synchronization service. The registry synchronization service is enabled to compare a master registry with a remotely located registry. In particular, a computing device that implements the registry synchronization service accesses lists that list thousands of container images. The computing device is further enabled to compare these lists with lists stored in a remote cloud computing system. The computing device that implements the registry synchronization service can also synchronize lists stored in the remote cloud computing system by removing or adding container image lists from the stored lists. In other words, removing unnecessary container images frees up storage in the cloud computing system. The computing device is also enabled to push container images to multiple cloud computing systems, thereby conserving network resources and network infrastructure. In an example, thousands of container image lists across multiple lists are guaranteed to be synchronized with each other so that all lists contain similar information.
[0017] Referring now to FIG. 1 , an environment 100 in which an embodiment can operate is shown. The environment 100 can include a remote source 102. The remote source 102 can be a third-party container registry. For example, the remote source 102 can be a JFrog® Artifactory® container registry available from JFrog®, headquartered in Sunnyvale, California. In an example, the remote source 102 can include a registry that stores master copies 104A-104C of a container image list. Throughout this document, master copy 104 is used interchangeably with master copies 104A-104C. It should be noted that any discussion relating to master copy 104 is equally applicable to master copies 104A-104C, and vice versa.
[0018] Container images may comprise files used to create instances of applications on end-user devices implemented by various end users. In particular, container images may be snapshots of applications that can be loaded into executable environments for execution in the executable environments. Examples of applications that can be executed using container images include Apache Kafka®, Kafka® Structured Query Language (KSQL), Schema Registry, Connect, etc. Examples of environments in which applications can be executed include Kubernetes, Docker®, or other types of container environments. The environments in which applications can be executed may be hosted on cloud computing systems 106-110. Examples of cloud computing systems 106-110 may include Amazon Web Services® (AWS®), IBM Cloud®, Google Cloud Platform®, Microsoft Azure®, Elastic Container Registry available from AWS®, Google Container Registry available from Google, Azure Container Registry available from Microsoft®, etc.
[0019] Each of the cloud computing systems 106-110 may include a container image list. In particular, the cloud computing system 106 may include container image lists 112A-112C. The cloud computing system 108 may include container image lists 114A-114C. The cloud computing system 110 may include container image lists 116A-116C. In the example, the container image lists 112A-112C, 114A-114C, and 116A-116C are enabled to match the master copies 104A-104C. Thus, the information in the container image lists 112A-112C, 114A-114C, and 116A-116C mirrors the master copies 104A-104C.
[0020] The container image lists 112A-112C, 114A-114C, and 116A-116C may correspond to tags of container images implemented in containers associated with each of the cloud computing systems 106-110. More specifically, the container image lists 112A-112C, 114A-114C, and 116A-116C may correspond to a registry associated with each of the cloud computing systems 106-110. The registry may include a list of container images stored in a repository associated with the registry. An example of the association between a cloud computing system's registries and repositories is shown with reference to FIG. 2.
[0021] 2 illustrates a hierarchical structure of cloud computing system registries 200, 202, and 204 associated with cloud computing system 106. It should be noted that the hierarchical structure illustrated with reference to FIG. 2 is equally applicable to each of cloud computing systems 108 and 110. Cloud computing system registry 200 may have repositories 206A-206C associated with it. Cloud computing system registry 202 may have repositories 208A-208C associated with it. Meanwhile, repositories 210A-210C may be associated with cloud computing system registry 204. In an example, repositories 206A-206C, 208A-208C, and 210A-210C each store a list of container images. In the example, cloud computing system registries 202 and 204 are enabled to pull listings from each of repositories 206A-206C, 208A-208C, and 210A-210C and provide the pulled listings to cloud computing system 106. In the example, the pulled listings from repositories 206A-206C, 208A-208C, and 210A-210C are enabled to form container image lists 112A-112C.
[0022] The master copies 104A-104C are enabled to list the most recent versions of the container images. In an example, each of the container image lists in the master copies 104A-104C may include a tag 300. The tag 300 may be any type of text string that can be used to identify the container image. Further illustrating, as shown with reference to FIG. 3, the container images listed in the master copy 104A may have a tag 300 associated with the container image. The tag 300 may include an alphanumeric string 302. The alphanumeric string 302 includes identifiers 304-308, where identifiers 304 and 308 correspond to the number "1." The identifier 306 is enabled to correspond to the number "0." In an example, the alphanumeric string 302 may correspond to the version of the container image listed in the master copies 104A-104C. In an example, when a container image having alphanumeric string 302 is updated, any or all of identifiers 304-308 may be updated to reflect the updated version of the container image.
[0023] The tag 300 may have a digest 400 associated with it, as shown with reference to FIG. 4 . The digest 400 may comprise values 402-406. The values 402-406 may be generated via any type of message digest hash algorithm, such as the MD5 (a cryptographic hash function) message digest algorithm. In an example, the values 402-406 may correspond to a hash. The digest 400, having the values 402-406, may be unique to the tag 300. Thus, in an example, every instance of the tag 300 may have a digest 400, having the values 402-406. The digest 400 may be used to determine whether the tag 300 matches another tag, as described below. In the example, master copies 104A-104C and container image lists 112A-112C, 114A-114C, and 116A-116C each include a tag and a digest. In particular, each entry in a container image list has an associated tag and digest, such as tag 300 and digest 400.
[0024] Changes can be made to a container image, such as an update (upgrade). The updated container image should be transferred to the containers in the container environment. Therefore, the applications that can run in the container image and the environment that runs the container image must implement the updated container image. Furthermore, as container images are created, they can also be added to the master copies 104A-104C. Furthermore, a container may no longer need the container image.
[0025] In an example, when a container image is updated, the master copies 104A-104C are updated to reflect the updated container image. Similarly, when a container image is added, the master copies 104A-104C are updated to reflect the new container image. In an example where a container no longer implements a particular container image, the container image can be removed from the master copies 104A-104C.
[0026] To ensure that the container images listed on the master copies are present in the cloud computing systems 106-110, an embodiment may implement a registry synchronization service 118. The registry synchronization service 118 may be enabled to compare the container images on the master copies 104A-104C with the container image lists 112A-112C, 114A-114C, and 116A-116C. In the example, the registry synchronization service 118 may be enabled to retrieve the master copies 104A-104C from the remote source 102. The registry synchronization service 118 may also be enabled to retrieve the container image lists 112A-112C, 114A-114C, and 116A-116C from each of the cloud computing systems 106-110. The registry synchronization service 118 is enabled to compare the container images listed in the master copies 104A-104C with the container image lists 112A-112C, 114A-114C, and 116A-116C.
[0027] Based on the comparison, the registry synchronization service 118 can synchronize the container images listed in the master copies 104A-104C with the container image lists 112A-112C, 114A-114C, and 116A-116C. The registry synchronization service 118 downloads a single instance of the container image from the remote source 102. The registry synchronization service 118 is further enabled to push copies of the single instance of the container image to multiple repositories associated with a registry of the cloud computing system. More specifically, by using the downloaded single instance of the container image, the registry synchronization service (registry synchronization system) 118 creates multiple copies of the container image using the single instance. The registry synchronization service 118 is further enabled to push copies of the single instance to multiple repositories associated with the cloud computing system registry.
[0028] Use any type of tool that allows you to manage the contents of a remote registry, thereby listing container images from container image lists 112A-112C, 114A-114C, 116A-116C. An example is skopeo, which allows you to issue the following command: "skopeodelete docker: / / <registry> / <repository>:<tag>".
[0029] The registry synchronization service 118 can be configured to replicate container image lists, including tags and digests, such as tag 300 and digest 400, associated with each container image on the master copies 104A-104C, to registries associated with the cloud computing systems 106-110. Further illustrating, the repositories 206A-206C, 208A-208C, and 210A-210C may not list a container image listed on the master copies 104A-104C. In an example, the registry synchronization service 118 replicates container image lists, including tags and digests, such as tag 300 and digest 400, associated with each container image on the master copies 104A-104C. Additionally, the registry synchronization service 118 is enabled to replicate the container image lists to repositories associated with the cloud computing systems 106-110, such as repositories 206A-206C, 208A-208C, and 210A-210C, by pushing the replicated container image lists, along with tags and associated digests, to the cloud computing systems 106-110.
[0030] An example of a tool that can be used to replicate a registry can include the skopeo tool. An example that can be implemented with the skopeo tool is the skopeocopy tool, which can copy a container image from one repository to another. <source-image> <destination-image>Additionally, skopeosync allows you to copy all images found in a source repository to a destination repository. <source-repository> <destination-repository>". These can be thought of as helper commands, i.e. equivalent to using the "skopeolist-tags" command followed by multiple "skopeo copy" commands.
[0031] The concept of the registry synchronization service 118 will now be further described. The concept of the registry synchronization service 118 ensures that the container images listed in the master copies 104A-104C are present in the cloud computing systems 106-110. To that end, reference is now made to FIG. 5, which illustrates a method 500. The method 500 synchronizes the container images listed in the master copies with the container images in the cloud computing systems. During operation 502, a first container image list is accessed from a remote source. The first container image list lists container images, each having a first tag and a first digest associated with the first tag. Accordingly, the first tag and the first digest are also retrieved during operation 502. In an example, a single remote source is enabled for a single first container image list during operation 502. However, embodiments are not limited to accessing a single first container image list from a remote source during operation 502. Accordingly, multiple container image lists may be accessed from a remote source during operation 502.
[0032] After completing operation 502, method 500 performs operation 504. In operation 504, a second container image list is accessed from a cloud computing system. The second container image list lists container images, each having a second tag and a second digest associated with the second tag. Thus, similar to operation 502, the second tag and second digest are also searched during operation 504. While operation 504 is described as being performed after operation 502, it should be noted that operation 504 can be performed before operation 502 or simultaneously with operation 502. Regardless of when operation 504 is performed, any number of container image lists can be accessed from any number of cloud computing systems during operation 504. For example, container image lists can be obtained from 10 different cloud computing systems. Furthermore, multiple container image lists can be obtained from a single cloud computing system, or multiple container image lists can be obtained from each cloud computing system of multiple cloud computing systems.
[0033] To further illustrate method 500, herein referred to as the "illustration," reference is now made to Figure 1. During operation 502, registry synchronization service 118 is enabled to access remote source 102 and master copy 104A, as well as to access tags and digests associated with each container image on master copy 104A. Additionally, during operation 504, registry synchronization service 118 is enabled to access container image list 112A from cloud computing system 106, container image list 114A from cloud computing system 108, and container image list 116A from cloud computing system 110, as well as to access tags and digests associated with each container image on container image lists 112A-116A.
[0034] The registry synchronization service 118 uses various tools to access each of the remote sources 102 and the cloud computing systems 106-110. For example, the registry synchronization service 118 may be enabled to use the DockerRegistry HTTP API, where the registry synchronization service 118 is enabled to use the DockerRegistry HTTP API by a third-party code library that implements a client for the Docker Registry HTTP API. Additionally, container registry implementations may provide APIs specific to their registry implementations, where the implementation-specific APIs may provide additional operations (such as managing access permissions on repositories) or provide equivalent behavior to the DockerRegistry HTTP API.
[0035] Returning to FIG. 5 and method 500, after accessing the first container image list and the second container image list during operations 502 and 504, method 500 performs operation 506, in which a first tag associated with the first container image is compared to a second tag associated with the second container image. Operation 506 may be performed during, or as part of, a comparison between the first container image list and the second container image list. In an example, the first tag and the second tag may be used to determine whether the second container image is the latest version of the container image. Even if the first container image list and the second container image list each list the same container image, the version of the container image on the second list may not be the latest version, such as in a scenario where the container image on the first container image list has been updated. In an example, the first tag and the second tag may be used to determine whether the version of the container image on the second container image list is the latest version. More specifically, an initial determination can be made as to whether the container images listed in the second container image list are up to date by comparing the first tag with the second tag.
[0036] In some examples, the first list is obtained from a master registry, such as master copies 104A-104C, while the second list is obtained from a cloud computing system, such as container image lists 112A-112C, 114A-114C, and 116A-116C. In this case, there is a risk that container image lists 112A-112C, 114A-114C, and 116A-116C may list container images that are not included in master copies 104A-104C. As further described below, updating container image lists 112A-112C, 114A-114C, and 116A-116C may remove container images referenced in container image lists 112A-112C, 114A-114C, and 116A-116C.
[0037] In some embodiments, master copies 104A-104C are enabled to list container images that are not listed in container image lists 112A-112C, 114A-114C, and 116A-116C. Here, registry synchronization service 118 is enabled to download single instances of container images that are listed in master copies 104A-104C but are not listed in container image lists 112A-112C, 114A-114C, and 116A-116C. Furthermore, registry synchronization service 118 is enabled to push copies of the single instances of the container images to repositories 206A-206C, 208A-208C, and 210A-210C.
[0038] Returning to the illustration, the container image on master copy 104A may have tag 300, which has identifiers 304-308. Further illustrated, the container image in container image list 112A may have tag 600. Tag 600 has alphanumeric string 602 along with identifiers 604-608. Identifiers 604 and 608 correspond to the number "1." Identifier 606 is enabled to correspond to the number "0." Further illustrated, the container image in container image list 114A may have tag 700. Tag 700 has alphanumeric string 702 along with identifiers 704-708. Identifier 704 is enabled to correspond to the number "1." Identifiers 706 and 708 are enabled to correspond to the number "0." Further illustrated, the container image in container image list 116A may have tag 800. Tag 800 has alphanumeric string 802 along with identifiers 804-808. In the figure, identifier 804 and identifier 808 correspond to the number "1." Identifier 806 corresponds to the number "0."
[0039] During operation 506, registry synchronization service 118 compares tag 300, along with identifiers 304-308, with each of tags (600-800), identifiers 604-608, identifiers 704-708, and identifiers 804-808. More specifically, during operation 506, registry synchronization service 118 compares tag 300 with tag 600. When comparing tag 300 with tag 600, identifiers 304-308 may be compared with identifiers 604-608. In an example, any discrepancy between identifiers 304-308 and identifiers 604-608 may indicate a discrepancy between the container image associated with tag 300 and the container image associated with tag 600. As described above, a discrepancy may occur when the container image in master copy 104A has been updated, while the container image in the container associated with the repository listing the container image associated with tag 600 has not been updated. In the illustration, identifier 304 and identifier 604 each correspond to the number "1." Identifier 306 and identifier 606 each correspond to the number "0." Identifier 308 and identifier 608 each correspond to the number "1." In the illustrated example, a determination is made as to whether tags from master copy 104A are present in container image lists 112A-112C, 114A-114C, and 116A-116C.
[0040] Further, during operation 506, registry synchronization service 118 compares tag 300 with tag 700. During the comparison of tag 300 with tag 700, identifiers 304-308 are compared with identifiers 704-708. In the example, a difference between identifiers 304-308 and identifiers 704-708 may indicate a difference between the container image associated with tag 300 and the container image associated with tag 700. In the illustration, identifier 304 and identifier 704 each correspond to the number "1." Identifier 306 and identifier 706 each correspond to the number "0." Identifier 308 corresponds to identifier "1." Identifier 708 corresponds to the number "0." Thus, in the illustration, during operation 506, registry synchronization service 118 determines that tag 300 is different from tag 700.
[0041] Registry synchronization service 118 also compares tag 300 with tag 800 during operation 506. During the comparison of tag 300 with tag 800, identifiers 304-308 are compared with identifiers 804-808. In the example, any difference between identifiers 304-308 and identifiers 804-808 may indicate a difference between the container image associated with tag 300 and the container image associated with tag 800. In the illustration, identifiers 304 and 804 each correspond to the number "1." Identifiers 306 and 806 each correspond to the number "0." Identifiers 308 and 808 each correspond to the number "1."
[0042] Returning to method 500 and Figure 5, after the tags are compared during operation 506, method 500 determines whether there is a match between the first tag and the second tag during operation 508. In the example, if there is a match between the first tag and the second tag, method 500 performs operation 510. If not, method 500 performs operation 512.
[0043] During operation 510, a first digest associated with a first container image is compared to a second digest associated with a second container image. As described above, each tag associated with a container image listed in master copies (media copies) 104A-104C may have an associated digest, which may be generated via any type of message digest hash algorithm. In an example, the digest may be specific to a particular tag, such that if master copy 104A and a container image in a different list, such as each of container image lists 112A, 114A, 116A, have the same tag and digest, then the container image associated with the listed container image in master copy 104A is the same, i.e., the same version. In a further example, if the tags of the container image listed in master copy 104A and the container image listed in container image lists 112A, 114A, 116A match but the digests are different, then the container image associated with the container image listed in container image lists 112A, 114A, 116A is not identical, i.e., a different version, to the container image associated with the container image listed in master copy 104A. In an example, operation 510 is enabled to verify that the container image associated with the container image listed in the cloud computing system list is identical to the container image associated with the container image listed in the master list.
[0044] Returning to the figure, as described above, during the comparison in operation 506, registry synchronization service 118 determines that identifiers 604-608 of tag 600 and identifiers 804-808 of tag 800 are identical to identifiers 304-308 of tag 300. Thus, during operation 508, registry synchronization service 118 determines that tag 300 matches tag 600 and tag 800. Thus, registry synchronization service 118 performs operation 510.
[0045] Tag 600 includes digest 900, which has values 902-906. Similar to values 402-406, in the example, values 902-906 may be hashes created using a hashing algorithm. During operation 510, registry synchronization service 118 compares values 402-406 associated with digest 400 with values 902-906. Value 402 corresponds to "DAIS." Value 404 corresponds to "PATR." Value 406 corresponds to "PKJ2." Therefore, for digest 900 to match digest 400, values 902-906 must be the same as values 402-406. In the example, if values 902-906 are the same as values 402-406, this means that the container image associated with the container image list having tag 600 and digest 900 is the same as the container image associated with the container image list having tag 300 and digest 400. In the figure, value 902 corresponds to "1ZO6," value 904 corresponds to "E350," and value 906 corresponds to "FPLC." Values 402-406 are not the same as values 902-906. Therefore, digest 900 does not match (i.e., is mismatched with) digest 400. Therefore, in the figure, the container image associated with the container image list having tag 600 and digest 900 is different from the container image associated with the container image list of master copy 104A having tag 300 and digest 400. As will be appreciated, the dual authorization provided by the digests associated with the tags can be used to avoid situations where potential updates to a container image are missed because the tags match but the associated digests do not.
[0046] Tag 800 may have digest 1000 having values 1002-1006. Similar to values 402-406, in the example, values 1002-1006 may be hashes created with a hashing algorithm. During operation 510, registry synchronization service 118 compares values 402-406 associated with digest 400 with values 1002-1006. Again, value 402 corresponds to "DAIS." Value 404 corresponds to "PATR." Value 406 corresponds to "PKJ2." In the illustration, value 1002 corresponds to "DAIS." Value 1004 corresponds to "PATR." Value 1006 corresponds to "PKJ2." Because values 402-406 and values 1002-1006 are the same, digest 1000 matches digest 400. Thus, in the figure, the container image associated with the container image list having tag 800 and digest 1000 is the same as the container image associated with the container image list of master copy 104A having tag 300 and digest 400.
[0047] As shown, during the comparison in operation 506, as described above, the registry synchronization service 118 determined that the identifiers 704-708 are not identical to the identifiers 304-308 of the tag 300. Therefore, with respect to the tag 700, the registry synchronization service 118 skips operation 510 and instead performs operation 512.
[0048] Returning attention to FIG. 5 and method 500, upon completion of operation 510, method 500 performs operation 512, in which the second container image list is synchronized with the first container image list based on a comparison of the first and second container image lists. Operation 512 illustrates a scenario in which a tag associated with a container image listed in one of container image lists 112A-112C, 114A-114C, and 116A-116C does not match (i.e., is inconsistent with) the tag associated with the same container image in master copy 104A-104C. That is, if the version associated with container image list 112A-112C, 114A-114C, and 116A-116C is not the same as the version associated with master copy 104A-104C, the following is enabled: That is, the container images associated with the container images listed in the container image lists 112A-112C, 114A-114C, and 116A-116C can be updated with the container image associated with the master copy 104A.
[0049] Synchronization can also include deleting container images in registries associated with cloud computing systems 106-110. As an example, if container image lists 112A-112C, 114A-114C, and 116A-116C include container image lists that do not exist in master copies 104A-104C, then during synchronization, the container images may be deleted from cloud computing systems 106-110 and container image lists 112A-112C, 114A-114C, and 116A-116C. Additionally, tags and digests associated with the deleted container images may be deleted along with the container image lists 112A-112C, 114A-114C, and 116A-116C.
[0050] As illustrated, during operation 506, as described above, the registry synchronization service 118 determined that tag 300 is different from tag 700. Thus, during operation 508, the registry synchronization service 118 determines that tag 300 does not match (i.e., is a mismatch with) tag 700 and performs operation 512. The registry synchronization service 118 is enabled to delete an image / tag if a tag found in the destination list is not present in the source list. In particular, the registry synchronization service 118 is enabled to download the container image associated with tag 300 from the remote source 102. The registry synchronization service 118 is also enabled to push a copy of the container image to the cloud computing system 108. The container image list 114A is also enabled to be updated with a new tag corresponding to tag 300 and a digest associated with the new tag corresponding to digest 400. Thus, if no other updates or deletions occur in the master copy 104A, the tags and digests will match during subsequent comparisons.
[0051] Although tag 600 matches tag 300, the registry synchronization service 118 determines that digest 900 associated with tag 600 is different from digest 400 associated with tag 300. Therefore, during operation 512, the registry synchronization service 118 synchronizes the container image list 112A with the master copy 104A by deleting the container image from the cloud computing system 106 associated with tag 600 and digest 900, while pushing a copy of the container image to the cloud computing system 106. Now, instead of having to download another copy of the container image associated with tag 300 and digest 400, the registry synchronization service 118 creates another copy of the container image associated with tag 300 and digest 400 already downloaded from the remote source 102 for the cloud computing system 108. Furthermore, the registry synchronization service 118 is enabled to push the additional copy to the cloud computing system 106 during synchronization in operation 512. Further, container image list 112A is enabled to be updated with a new tag corresponding to tag 300 and a digest associated with the new tag corresponding to digest 400. Thus, unless other updates or deletions occur in master copy 104A, the tags and digests will match during subsequent comparisons. As may be appreciated, instead of registry synchronization service 118 having to download the same container image multiple times for dissemination across multiple cloud computing systems, such as cloud computing systems 106 and 108, registry synchronization service 118 is enabled to download the container image once, make multiple copies, and push one of the multiple copies to a different cloud computing system.
[0052] There were no differences between tag 300 and tag 800 along with digest 400 and digest 1000 with respect to container image list 116A and the container image associated with tag 800 and digest 1000. Therefore, no updates are required to container image list 116A with respect to the container image associated with tag 800 and digest 1000. Upon completion of operation 512, method 500 is complete.
[0053] In the example, the cadence is variable. The cadence relates to how often the registry synchronization service 118 executes the method 500. For example, the registry synchronization service 118 may be enabled to execute the method 500 every 5 minutes, every 15 minutes, every 30 minutes, every hour, or any other time interval. Additionally, the registry synchronization service 118 may be enabled to change the cadence, such as initially executing the method 500 at a 15-minute cadence but then switching to a 5-minute cadence. In the example, the number of container images compared and synchronized during the method 500 may also be controlled. An upper limit, e.g., 1000, may be set for the registry synchronization service 118 to compare and synchronize per repository.
[0054] In some examples, after the registry synchronization service 118 accesses the first and second lists during operations 502 and 504, the registry synchronization service 118 is enabled to sort the container image lists in the master copy (main copy) 104A-104C and the container image lists 112A-112C, 114A-114C, and 116A-116C. For example, the registry synchronization service 118 is enabled to sort the first and second lists according to the semantic versions of the container images associated with the container image lists. Further, the registry synchronization service 118 is enabled to sort the first and second lists according to timestamps by which more recently added or updated container images and the lists referencing the container images are compared and synchronized, as described in more detail above with reference to FIG. 5 and method 500.
[0055] Additionally, the registry synchronization service is enabled to select the optimal registry to copy an image from. In particular, when copying a container image to a destination registry, if the registry synchronization service 118 does not have a local copy of the container image, the registry synchronization service 118 is enabled to download the container image from any configured registry (master or one of the destinations) if the registry synchronization service 118 knows that the container image is available. The registry synchronization service 118 is enabled to select the registry from which to download the image based on a configured metric (called "cost" in the registry synchronization implementation). The selection prioritizes registries with the lowest metric. The registry synchronization service operator is enabled to define and specify a metric according to, for example, the relative monetary cost of transferring a container image from each registry. In this way, the registry synchronization service is enabled to optimize the costs associated with operating the service. Additional costs can include network usage, latency, jitter, etc.
[0056] In a further example, the registry synchronization service 118 is enabled to support the configuration of a “tag filter.” A filter may be a pattern (e.g., specified as a regular expression, or “regex”) that tags may be matched against before being considered for synchronization, as described above. To further illustrate, a user may be enabled to upload a production image having tags such as “1.0.0” and “1.0.1.” Additionally, a user may be enabled to upload an image having a development or test build using tags such as “1.0.1-rc1” or “my-test.” The registry synchronization service 118 may be enabled to configure a tag filter such as “^[0-9]+(\.[0-9]+){2}$.” "^[0-9]+(¥.[0-9]+){2}$" can be a regular expression that matches tags consisting of three numbers (where "number" is one or more digits between 0 and 9) separated by periods. Using this filter, the registry synchronization service 118 can synchronize the tags "1.0.0" and "1.0.1" while not synchronizing the tags "1.0.1-rc1" and "my-test." The tags 300, 600, 700, and 800 discussed above can be filtered as described herein. The comparison detailed herein above can comprise comparing these tag filters.
[0057] In a further example, the registry synchronization service 118 supports configuring a repository "prefix" for each registry, thereby enabling repositories to be renamed. The prefix service enables the registry synchronization service 118 to restrict the set of repositories that it considers for synchronization, such as repositories 206A-206C, 208A-208C, and 210A-210C. For example, by setting a prefix of "containers / release" in the source registry, the registry synchronization service 118 can synchronize tags from the repositories "containers / release / kafka" and "containers / release / ksql." However, it cannot synchronize tags from the repositories "containers / devel / kafka" and "images / kafka." The prefix service also supports renaming of repositories. Consider the case where a source registry, such as one of repositories 206A-206C, 208A-208C, or 210A-210C, is configured with a prefix of "containers / release" and a destination registry is configured with a prefix of "prod." When registry synchronization service 118 synchronizes the source registry's repository "containers / release / kafka," it can place those images in the destination registry's repository "prod / kafka." Here, repositories 206A-206C, 208A-208C, and 210A-210C may have prefixes, so that during operation 504 detailed above, repositories 206A-206C, 208A-208C, and 210A-210C from which the second container image list is retrieved may be filtered according to prefixes associated with repositories 206A-206C, 208A-208C, and 210A-210C. Repositories associated with cloud computing systems 106-108 may have prefixes.During operation 504 detailed above, the cloud computing systems 106-108 from which the second container image list is derived may be filtered according to prefixes associated with the cloud computing systems 106-108.
[0058] The registry synchronization service 118 is enabled to maintain a local cache of the contents (tags and digests) of each registry, such as repositories 206A-206C, 208A-208C, and 210A-210C. By referencing this cache and updating it as the registry synchronization service 118 makes changes to the registries (copying and deleting tags / images), the registry synchronization service 118 is enabled to avoid having to repeatedly fetch the contents of each registry, thereby reducing the amount of network requests sent to each registry, the amount of network traffic generated, and the time required for each synchronization cycle.
[0059] In the example, the registry synchronization service 118 is enabled to filter a set of repositories according to a prefix, filter a set of tags from each repository according to a tag filter, and replicate a set of source images to multiple destinations. The registry synchronization service 118 is further enabled to rename the repositories according to a configured prefix and select the optimal registry to copy the images to. The registry synchronization service 118 is further enabled to remove images from the destination that are not present in the source and cache repository content, such as repositories 206A-206C, 208A-208C, and 210A-210C, to optimize any future synchronization operations. In particular, the registry synchronization service 118 is enabled to cache images, as detailed above, so that the registry synchronization service 118 does not need to pull images from the source during subsequent synchronization operations.
[0060] Any of the machines, databases, or devices shown in FIGS. 1 and 2 may be implemented on a general-purpose computer that has been modified (e.g., configured or programmed) by software to become a special-purpose computer for performing the functions described herein for that machine, database, or device. For example, a computer system enabled to perform any one or more of the methodologies described herein is described below with respect to FIGS. 11 and 12. As used herein, a "database" is a data storage resource enabled to store data structured as a text file, a table, a spreadsheet, a relational database (e.g., an object-relational database), a triple store, a hierarchical data store, or any suitable combination thereof. Furthermore, any two or more of the machines, databases, or devices shown in FIG. 1 may be combined into a single machine, database, or device, and the functionality described herein for any single machine, database, or device may be subdivided among multiple machines, databases, or devices. In an embodiment, communication links between the elements shown in FIGS. 1 and 2 are implemented via one or more data communication networks. These data communication networks may utilize any wired or wireless communication protocol and any type of communication medium. In some embodiments, the data communications network is a combination of two or more data communications networks (or sub-networks) coupled together.
[0061] Certain embodiments are described herein as comprising logic or multiple components, modules, or mechanisms. A module may be configured as either a software module (e.g., code embodied on a machine-readable medium) or a hardware module. A "hardware module" is a tangible unit that is enabled to perform specific operations and that is configured or arranged in a specific physical manner. In various exemplary embodiments, one or more computer systems (e.g., a standalone computer system, a client computer system, or a server computer system), or one or more hardware modules (e.g., a processor or processors) of a computer system, are configured by software (e.g., an application or application portion) as hardware modules that operate to perform specific operations as described herein.
[0062] In some embodiments, a hardware module may be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware module may comprise dedicated circuitry or logic permanently configured to perform specific operations. For example, a hardware module may be a dedicated processor such as a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC). A hardware module may also comprise programmable logic or circuitry that is temporarily configured by software to perform specific operations. For example, a hardware module may comprise software executed by a general-purpose processor or other programmable processor. Once configured by such software, a hardware module becomes a specific machine (or a specific component of a machine) uniquely tailored to perform the configured function and is no longer a general-purpose processor. It will be appreciated that whether a hardware module is implemented mechanically, in dedicated, permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) is determined by cost and time considerations.
[0063] Thus, the phrase "hardware module" should be understood to encompass a tangible entity that is physically configured, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a particular manner or to perform particular operations as described herein. As used herein, a "hardware-implemented module" refers to a hardware module. Considering embodiments in which the hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, if a hardware module consists of a general-purpose processor configured by software to be a special-purpose processor, the general-purpose processor may be configured at different times as different special-purpose processors (e.g., consisting of different hardware modules). The software accordingly configures the particular processor or processors, e.g., to configure a particular hardware module at one instance of time and a different hardware module at a different instance of time.
[0064] Hardware modules are enabled to provide information to and receive information from other hardware modules. Thus, the described hardware modules can be considered to be communicatively coupled. When multiple hardware modules are simultaneously present, communication can be achieved by signal transmission (e.g., via appropriate circuits and buses) between or among two or more hardware modules. In embodiments in which multiple hardware modules are configured or instantiated at different times, communication between such hardware modules can be achieved, for example, through the storage and retrieval of information in a memory structure accessed by the multiple hardware modules. For example, one hardware module performs an operation and is enabled to store the output of that operation in a communicatively coupled memory device. A further hardware module then accesses the memory device at a later time and is enabled to retrieve and process the stored output. Hardware modules can also initiate communication with input and output devices and operate on resources (e.g., collections of information).
[0065] Various operations of the example methods described herein are enabled to be performed, at least in part, by one or more processors that are temporarily or permanently configured (e.g., by software) to perform the associated operations. Whether temporarily or permanently configured, such processors constitute processor-implemented modules that operate to perform one or more operations or functions described herein. As used herein, a "processor-implemented module" refers to a hardware module that is implemented using one or more processors.
[0066] Similarly, the methods described herein may be at least partially processor-implemented, with a particular processor or processors being an example of hardware. For example, at least some of the operations of the methods may be performed by one or more processors or processor-implemented modules. Furthermore, one or more processors may be enabled to operate to support the execution of related operations in a "cloud computing" environment or as "software as a service" (SaaS). For example, at least some of the operations may be performed by a group of computers (as examples of machines equipped with processors), and these operations may be made accessible via one or more suitable interfaces (e.g., application program interfaces (APIs)) over a network (e.g., the Internet).
[0067] Execution of certain operations may reside within a single machine, or may be distributed among processors deployed across multiple machines. In some exemplary embodiments, a processor or processor-implemented module may be located in a single geographic location (e.g., in a home environment, an office environment, or a server farm). In other exemplary embodiments, a processor or processor-implemented module is distributed across multiple geographic locations.
[0068] 1-9 are, in some embodiments, implemented in the context of machine and associated software architectures. The following sections describe exemplary software and machine (e.g., hardware) architectures suitable for use with the disclosed embodiments.
[0069] Software architectures have been used in combination with hardware architectures to create apparatuses or machines tailored for specific purposes. For example, combining a particular hardware architecture with a particular software architecture creates mobile devices such as mobile phones, tablet devices, etc. Minor variations in hardware and software architectures may result in smart devices used in the "Internet of Things." Yet another combination results in a server computer for use in a cloud computing architecture. Not all such combinations of software and hardware architectures are presented herein, as those skilled in the art will be enabled to readily understand how to implement the present subject matter in contexts different from the disclosure contained herein.
[0070] Example 1 is a method for synchronizing a first container image list with a second container image list. The method includes accessing a first container image list from a remote source if a first container image listed in the first container image list has a first tag and a first digest associated with the first tag. The method includes accessing a second container image list from a cloud computing system registry if a second container image listed in the second container image list has a second tag and a second digest associated with the second tag. The method includes comparing the first container image with the second container image. The step of comparing the first container image with the second container image includes a step of comparing a first tag associated with the first container image with the second tag associated with the second container image, the comparison including a step of comparing prefixes associated with the first tag and the second tag; a step of comparing the first tag with the second tag; a step of comparing a first digest associated with the first container image with the second digest associated with the second container image based on the comparison of the first tag with the second tag; and a step of synchronizing the first container image list with the second container image list based on the comparison of the first container image with the second container image.
[0071] In Example 2, the subject matter described in Example 1 includes the following features: the synchronizing includes downloading the container images listed in the first container image list from a remote source, creating multiple copies of the container images listed in the first container image list and downloaded, pushing a first copy of the multiple copies of the downloaded container images to a first repository associated with a cloud computing system registry, and pushing a second copy of the multiple copies of the downloaded container images to a second repository associated with the cloud computing system registry.
[0072] In Example 3, the subject matter of any one of Examples 1-2 includes the following features: A first digest of the plurality of first digests is compared to a second digest of the plurality of second digests when a match occurs between the first tag and the second tag during the comparison.
[0073] In Example 4, the subject matter described in Example 3 includes the following features: the first digest comprises a first digest hash as a hash; the second digest comprises a second digest hash as a hash that matches the first digest hash; and the synchronization is performed based on the first digest hash matching the second digest hash.
[0074] In Example 5, the subject matter of any one of Examples 1-4 includes the following features: Comparing the first container image with the second container image includes determining that the container images listed in the second container image list do not match the container images listed in the first container image list; and Synchronizing the first container image list with the second container image list includes, in response to determining that the container images listed in the second container image list do not match the container images listed in the first container image list, deleting the container images listed in the second container image list from a repository associated with the cloud computing system registry.
[0075] In Example 6, the subject matter of any one of Examples 1-5 includes the following features: comparing the first container image with the second container image further includes determining that the first container image list includes a container image that is not listed in the second container image list, and downloading, from a remote source, an instance of the container image that is listed in the first container image list but not listed in the second container image list. Synchronizing the first container image list with the second container image list includes, in response to determining that a container image listed in the first container image list is not listed in the second container image list, adding the container image that is listed in the first container image list but not listed in the second container image list to a repository associated with the cloud computing system registry.
[0076] In Example 7, the subject matter of any one of Examples 1-6 includes the following features: a first tag associated with the first container image has a first version number; a second tag associated with the second container image has a second version number; comparing the first container image with the second container image further includes comparing the first version number with a second version number and, in response to determining that the first version number differs from the second version number, downloading an instance of the first container image having the first version number from a remote source; and synchronizing the first container image list with the second container image list includes, in response to determining that the first version number differs from the second version number, adding the first container image to a repository associated with a cloud computing system registry.
[0077] In Example 8, the subject matter described in Example 7 includes the following features: the first version number corresponds to a first alphanumeric string; the second version number corresponds to a second alphanumeric string; and determining that the first version number differs from the second version number includes determining that characters of the first alphanumeric string differ from characters of the second alphanumeric string.
[0078] Example 9 is a system comprising at least one processor and at least one memory comprising instructions. The instructions, when executed by the at least one processor, are configured to cause the at least one processor to perform operations. The operations include accessing a first container image list from a remote source if a first container image listed in a first container image list comprises a first tag and a first digest associated with the first tag; accessing a second container image list from a cloud computing system registry if a second container image listed in a second container image list comprises a second tag and a second digest associated with the second tag; and comparing the first container image with the second container image. Comparing the first container image with the second container image comprises comparing a first tag associated with the first container image with the second tag associated with the second container image. The comparing comprises comparing prefixes associated with the first tag and the second tag. The step of comparing the first container image with the second container image includes a step of comparing a first digest associated with the first container image with the second digest associated with the second container image based on a comparison of the first tag with the second tag, and a step of synchronizing the first container image list with the second container image list based on the comparison of the first container image with the second container image.
[0079] In Example 10, the subject matter described in Example 9 includes the following features: the synchronizing includes downloading container images listed in the first container image list from a remote source, creating multiple copies of the container images listed in the first container image list and downloaded, pushing a first copy of the multiple copies of the downloaded container images to a first repository associated with a cloud computing system registry, and pushing a second copy of the multiple copies of the downloaded container images to a second repository associated with the cloud computing system registry.
[0080] In Example 11, the subject matter of any one of Examples 9-10 includes the following features: a first digest of the plurality of first digests has a first digest hash as its hash; a second digest of the plurality of second digests has a second digest hash as its hash; the first digest is compared to the second digest when a match occurs between the first tag and the second tag during the comparison; and synchronization is performed based on the first digest hash matching the second digest hash.
[0081] In Example 12, the subject matter of any one of Examples 9-11 includes the following features: Comparing the first container image with the second container image further includes determining that the container images listed in the second container image list do not match the container images listed in the first container image list; and Synchronizing the first container image list with the second container image list includes, in response to determining that the container images listed in the second container image list do not match the container images listed in the first container image list, deleting the container images listed in the second container image list from a repository associated with the cloud computing system registry.
[0082] In Example 13, the subject matter of any one of Examples 9-12 includes the following features: comparing the first container image with the second container image further includes determining that the first container image list includes a container image that is not listed in the second container image list; and downloading, from a remote source, an instance of the container image that is listed in the first container image list but not listed in the second container image list. Synchronizing the first container image list with the second container image list includes, in response to determining that a container image that is listed in the first container image list is not listed in the second container image list, adding the container image that is listed in the first container image list but not listed in the second container image list to a repository associated with the cloud computing system registry.
[0083] In Example 14, the subject matter of any one of Examples 9-13 includes the following features: a first tag associated with the first container image has a first version number corresponding to a first alphanumeric string; and a second tag associated with the second container image has a second version number corresponding to a second alphanumeric string. Comparing the first container image with the second container image further includes comparing the first version number with a second version number and determining that characters of the first alphanumeric string differ from characters of the second alphanumeric string such that the first version number differs from the second version number; and downloading an instance of the first container image having the first version number from a remote source in response to determining that the first version number differs from the second version number. Synchronizing the first container image list with the second container image list includes adding the first container image to a repository associated with a cloud computing system registry in response to determining that the first version number differs from the second version number.
[0084] Example 15 is a non-transitory machine-readable medium having instructions embodied thereon. The instructions are executable by a processor of a machine to perform operations. The operations include accessing a first container image list from a remote source if a first container image listed in a first container image list has a first tag and a first digest associated with the first tag; accessing a second container image list from a cloud computing system registry if a second container image listed in a second container image list has a second tag and a second digest associated with the second tag; and comparing the first container image with the second container image. Comparing the first container image with the second container image includes comparing a first tag associated with the first container image with the second tag associated with the second container image. The comparing includes comparing prefixes associated with the first tag and the second tag. The step of comparing the first container image with the second container image includes a step of comparing a first digest associated with the first container image with the second digest associated with the second container image based on a comparison of the first tag with the second tag, and a step of synchronizing the first container image list with the second container image list based on the comparison of the first container image with the second container image.
[0085] In Example 16, the subject matter described in Example 15 includes the following features: the synchronizing includes downloading the container images listed in the first container image list from a remote source, creating multiple copies of the container images listed in the first container image list and downloaded, pushing a first copy of the multiple copies of the downloaded container images to a first repository associated with a cloud computing system registry, and pushing a second copy of the multiple copies of the downloaded container images to a second repository associated with the cloud computing system registry.
[0086] In Example 17, the subject matter of any one of Examples 15-16 includes the following features: a first digest of the plurality of first digests has a first digest hash as its hash; a second digest of the plurality of second digests has a second digest hash as its hash; and the first digest is compared with the second digest when a match occurs between the first tag and the second tag during the comparison. Synchronization is performed based on the first digest hash matching the second digest hash.
[0087] In Example 18, the subject matter described in any one of Examples 15-17 includes the following features: Comparing the first container image with the second container image further includes determining that the container images listed on the second container image list do not match the container images listed on the first container image list; and Synchronizing the first container image list with the second container image list includes deleting the container images listed on the second container image list from a repository associated with the cloud computing system registry in response to determining that the container images listed on the second container image list do not match the container images listed on the first container image list.
[0088] In Example 19, the subject matter of any one of Examples 15-18 includes the following features: comparing the first container image with the second container image further includes determining that the first container image list includes a container image that is not listed in the second container image list, and downloading, from a remote source, an instance of the container image that is listed in the first container image list but not listed in the second container image list. Synchronizing the first container image list with the second container image list includes, in response to determining that a container image that is listed in the first container image list is not listed in the second container image list, adding the container image that is listed in the first container image list but not listed in the second container image list to a repository associated with the cloud computing system registry.
[0089] In Example 20, the subject matter described in any one of Examples 15-19 includes the following features: a first tag associated with the first container image has a first version number corresponding to a first alphanumeric string; and a second tag associated with the second container image has a second version number corresponding to a second alphanumeric string. Comparing the first container image with the second container image further includes comparing the first version number with a second version number and determining that characters of the first alphanumeric string differ from characters of the second alphanumeric string such that the first version number differs from the second version number; and downloading an instance of the first container image having the first version number from a remote source in response to determining that the first version number differs from the second version number. Synchronizing the first container image list with the second container image list includes adding the first container image to a repository associated with a cloud computing system registry in response to determining that the first version number differs from the second version number.
[0090] Example 21 is at least one machine-readable medium comprising instructions that, when executed by a processing circuit, cause the processing circuit to perform operations that implement any one of Examples 1-20.
[0091] Example 22 is an apparatus equipped with means for carrying out any one of Examples 1 to 20. Example 23 is a system that implements any one of Examples 1 to 20. Example 24 is a method for carrying out any one of Examples 1 to 20.
[0092] FIG. 11 is a block diagram (1100) illustrating a software architecture 1102. The software architecture 1102 may be installed on any one or more of the devices described above. It will be understood that FIG. 11 is merely a non-limiting example of a software architecture, and that many other architectures may be implemented to facilitate the functionality described herein. The software architecture 1102 may be implemented by hardware, such as machine 1200 of FIG. 12, which includes a processor 1202, memory (1204 and 1206), and I / O components (1210-1214). In this example, the software architecture 1102 may be conceptualized as a stack of layers, with each layer providing a specific function. For example, the software architecture 1102 includes layers such as an operating system 1104, libraries 1106, frameworks 1108, and applications 1110. In operation, the applications 1110, according to some implementations, invoke application programming interface (API) calls (1112) through the software stack and receive messages 1114 in response to the API calls 1112.
[0093] In various implementations, the operating system 1104 manages hardware resources and provides common services. The operating system 1104 includes, for example, a kernel 1120, services 1122, and drivers 1124. In some implementations, the kernel 1120 serves as an abstraction layer between the hardware and other software layers. For example, the kernel 1120 provides memory management, processor management (e.g., scheduling), component management, networking, and security configuration, among other functions. The services 1122 are enabled to provide other common services to other software layers. The drivers 1124 may be responsible for controlling or interfacing with the underlying hardware. For example, the drivers 1124 may include a display driver, a camera driver, a Bluetooth driver, a flash memory driver, a serial communications driver (e.g., a Universal Serial Bus (USB) driver), a Wi-Fi driver, an audio driver, a power management driver, etc.
[0094] In some implementations, libraries 1106 provide low-level common infrastructure that can be utilized by applications 1110. Libraries 1106 may include system libraries 1130 (e.g., the C standard library), which may provide functions such as memory allocation functions, string manipulation functions, mathematical functions, etc. Additionally, libraries 1106 may include a media library (e.g., a library for supporting the presentation and manipulation of various media formats, such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group (JPEG or JPG), or Portable Network Graphics (PNG)), a graphics library (e.g., the OpenGL framework used to render two-dimensional (2D) and three-dimensional (3D) images in a graphical context on a display), a database library (e.g., SQLite, which provides various relational database functions), a web library (e.g., WebKit, which provides web browsing functions), etc. Libraries 1106 may also include a wide variety of other libraries 1134 to provide many other APIs to application 1110.
[0095] Framework 1108, according to some implementations, provides a high-level common infrastructure that can be utilized by applications 1110. For example, framework 1108 provides various graphic user interface (GUI) functionality, high-level resource management, high-level location services, etc. Framework 1108 may provide a broad spectrum of other APIs that can be utilized by applications 1110, some of which may be specific to a particular operating system or platform.
[0096] In one example, the applications 1110 include a home application 1150, a contacts application 1152, a browser application 1154, a book reader application 1156, a location application 1158, a media application 1160, a messaging application 1162, a game application 1164, and a wide assortment of other applications, such as third-party applications 1166. According to some examples, the applications 1110 are programs that perform programmatically defined functions. Various programming languages may be employed to create one or more of the applications 1110, with the applications being structured in various ways, such as object-oriented programming languages (e.g., Objective-C, JAVA, or C++) or procedural programming languages (e.g., C or assembly language). In a specific example, the third-party applications 1166 (e.g., applications developed using an Android or iOS software development kit (SDK) by an entity other than the particular platform vendor) may be mobile software running on a mobile operating system, such as iOS, Android, Windows Phone, or other mobile operating systems. In this example, the third party application 1166 can invoke API calls 1112 provided by the mobile operating system (eg, operating system 1104) to facilitate the functionality described herein.
[0097] Certain embodiments are described herein as comprising logic or multiple components, modules, or mechanisms. A module may be configured as either a software module (e.g., code embodied on (1) a non-transitory machine-readable medium or (2) a transmission signal) or a hardware-implemented module. A hardware-implemented module is a tangible unit capable of performing specific operations and is configured or arranged in a particular way. In examples, one or more computer systems (e.g., standalone, client, or server computer systems) or one or more processors may be configured by software (e.g., applications or application portions) as hardware-implemented modules that operate to perform specific operations as described herein.
[0098] In various examples, a hardware-implemented module may be implemented mechanically or electronically. For example, a hardware-implemented module may comprise dedicated circuitry or logic that is permanently configured to perform specific operations (e.g., as a dedicated processor such as a field programmable gate array (FPGA) or application-specific integrated circuit (ASIC)). A hardware-implemented module may also comprise programmable logic or circuitry (e.g., contained within a general-purpose processor or other programmable processor) that is temporarily configured by software to perform specific operations. It will be understood that the decision whether to implement a hardware-implemented module mechanically, in dedicated, permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) is driven by cost and time considerations.
[0099] Thus, the term "hardware-implemented module" should be understood to encompass a tangible entity that is physically configured, permanently configured (e.g., hardwired), or temporarily or transiently configured (e.g., programmed) to operate in a particular manner and / or perform particular operations described herein. Considering examples in which hardware-implemented modules are temporarily configured (e.g., programmed), each of the hardware-implemented modules need not be configured or instantiated at any one instance in time. For example, if the hardware-implemented modules comprise a general-purpose processor configured using software, the general-purpose processor may be configured as each different hardware-implemented module at different times. Accordingly, the software may be enabled to configure the processor, for example, to configure a particular hardware-implemented module at one instance in time and to configure a different hardware-implemented module at a different instance in time.
[0100] Hardware-implemented modules are enabled to provide information to and receive information from other hardware-implemented modules. Accordingly, the described hardware-implemented modules can be considered communicatively coupled. When multiple such hardware-implemented modules are simultaneously present, communication can be achieved through signal transmission (e.g., via appropriate circuits and buses) connecting the hardware-implemented modules. In examples where multiple hardware-implemented modules are configured or instantiated at different times, communication between such hardware-implemented modules may be achieved, for example, through storage and retrieval of information in memory structures accessible to the multiple hardware-implemented modules. For example, one hardware-implemented module performs an operation and is enabled to store the output of that operation in a communicatively coupled memory device. A further hardware-implemented module then accesses the memory device at a later time and is enabled to retrieve and process the stored output. Hardware-implemented modules can also initiate communication with input or output devices and are enabled to operate on resources (e.g., collections of information).
[0101] Various operations of the example methods described herein may be performed, at least in part, by one or more processors that are temporarily or permanently configured (e.g., by software) to perform the associated operations. Whether temporarily or permanently configured, such processors are enabled to configure processor-implemented modules that operate to perform one or more operations or functions. Modules referred to herein may, in some examples, include processor-implemented modules.
[0102] Similarly, the methods described herein may be at least partially processor-implemented. For example, at least some of the operations of the methods may be performed by one or more processors or processor-implemented modules. Execution of certain operations may be distributed among one or more processors, or may reside within a single machine but may also be located across multiple machines. In some examples, the processor or processors may be located in a single location (e.g., in a home environment, an office environment, or as a server farm), while in other examples, the processors may be distributed across multiple locations.
[0103] The one or more processors may also be enabled to operate to support the execution of associated operations in a "cloud computing" environment or as "software as a service" (SaaS). For example, at least some of the operations may be performed by a group of computers (examples of machines that include the processors), and these operations may be made accessible via one or more suitable interfaces (e.g., application program interfaces (APIs)) over a network (e.g., the Internet).
[0104] Embodiments can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Embodiments may also be implemented using a computer program product, e.g., a computer program embodied in an information carrier, e.g., a machine-readable medium, for execution by, or to control the operation of, a data processing apparatus, e.g., a programmable processor, a computer, or multiple computers.
[0105] A computer program can be written in any type of programming language, including compiled or interpreted languages, and can be deployed in any form, including as a stand-alone program or as a module, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers, at one site or distributed across multiple sites, interconnected by a communication network.
[0106] Clients and servers are generally remote from the computing environment. Clients and servers are generally remote from each other and typically interact through a communications network. The relationship of client and server arises by virtue of computer programs running on the respective computers, and they have a client-server relationship to each other. It will be appreciated that in examples deploying a programmable computing system, both hardware and software architectures need to be considered. In particular, it will be appreciated that the choice of whether to implement a particular function in permanently configured hardware (e.g., ASICs), temporarily configured hardware (e.g., a combination of software and a programmable processor), or a combination of permanently and temporarily configured hardware may be a design choice. The following provides various examples of hardware (e.g., machine) and software architectures that may be deployed.
[0107] FIG. 5 is a block diagram of a machine upon which instructions may be executed to cause the machine to perform any one or more of the methodologies discussed herein. In one embodiment, the machine may be any of the devices described above. Alternatively, the machine operates as a standalone device or is connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server or client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a personal computer (PC), tablet PC, set-top box (STB), personal digital assistant (PDA), mobile phone, web appliance, network router, switch, bridge, or any machine capable of executing instructions (sequential or otherwise) that specify actions to be performed by the machine. Furthermore, while only a single machine is illustrated, the term “machine” is intended to include a collection of machines that individually or collectively execute a set (or sets) of instructions to perform any one or more of the methodologies discussed herein.
[0108] The machine 1200, which may be a computer system, includes a processor 1202 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), or both), a main memory 1204, and a static memory 1206, which communicate with each other via a bus 1208. The machine 1200 may further include a video display unit 1210 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The machine 1200 also includes an alphanumeric input device 1212 (e.g., a keyboard), a user interface (UI) navigation device (cursor control device) 1214 (e.g., a mouse), a disk drive 1116, a signal generator 1118 (e.g., a speaker), and a network interface device (1120).
[0109] Disk drive unit 1116 includes a machine-readable medium 1222 on which one or more sets of instructions 1224 and data structures (e.g., software) embodied in or utilized by any one or more of the methodologies or functions described herein are stored. The instructions 1224 may also reside, completely or at least partially, within main memory 1204 and / or within processor 1202 during their execution by machine 1200, with main memory 1204 and processor 1202 also constituting machine-readable media. The instructions 1224 may also reside in static memory 1206.
[0110] While machine-readable medium 1222 is illustratively shown to be a single medium, the term "machine-readable medium" may include a single medium or multiple media (e.g., centralized or distributed databases and / or associated caches and servers) that store one or more instructions or data instructions (1224). The term "machine-readable medium" is also intended to include any tangible medium that can store, encode, or carry instructions 1224, or data structures utilized by or related to such instructions 1224, for execution by a machine that cause the machine to perform any one or more of the methodologies of the present invention. Accordingly, the term "machine-readable medium" is intended to include, but is not limited to, solid-state memory, optical media, and magnetic media. Specific examples of machine-readable media include, by way of example, semiconductor memory devices, e.g., non-volatile memories such as erasable programmable read-only memories (EPROMs), electrically erasable programmable read-only memories (EEPROMs), and flash memory devices, magnetic disks such as internal hard disks and removable disks, magneto-optical disks, CD-ROMs and DVD-ROMs, and the like.
[0111] The instructions 1224 may also be transmitted or received over a communications network 1226 using a transmission medium. The instructions 1224 may be transmitted using a network interface device 1220 and any one of a number of well-known transfer protocols (e.g., HTTP). Examples of communications networks include a local area network ("LAN"), a wide area network ("WAN"), the Internet, a cellular network, a plain old telephone (POTS) network, and a wireless data network (e.g., Wi-Fi and Wi-Max networks). The term "transmission medium" is intended to include any intangible medium enabled to store, encode, or carry instructions 1224 for execution by a machine, including digital or analog communications signals or other intangible media for facilitating communication of such software.
[0112] While the embodiments have been described with reference to particular examples, it will be apparent that various modifications and changes can be made thereto without departing from the broader spirit and scope of the present invention. Accordingly, the specification and drawings are to be regarded in an illustrative and not a restrictive sense. The accompanying drawings, which form a part hereof, show by way of illustration, and not by way of limitation, specific embodiments in which the subject matter may be practiced. The illustrated embodiments are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed herein. Other embodiments may be utilized and derived therefrom, such that structural and logical substitutions and changes may be made without departing from the scope of the present disclosure. Accordingly, this detailed description is not to be taken in a limiting sense, and the scope of various embodiments is defined only by the appended claims, along with the full scope of equivalents to which such claims are entitled.
[0113] Such embodiments of the inventive subject matter may be referred to herein, individually and / or collectively, by the term "invention," merely for convenience, and no attempt is made to intentionally limit the scope of this application to any single invention or inventive concept when multiple inventions are in fact disclosed. Accordingly, although specific embodiments have been illustrated and described herein, it should be understood that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiment illustrated. The present disclosure is intended to cover any adaptations or modifications of the various embodiments. Combinations of the above embodiments, as well as other embodiments not specifically described herein, will be apparent to those skilled in the art upon reviewing the above description.
[0114] The Abstract of the Disclosure is provided to comply with 37 C.F.R. § 1.72(b), requiring an abstract that will allow the reader to quickly ascertain the nature of the technical disclosure. This Abstract is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. Moreover, in the foregoing Detailed Description, various features may be grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Accordingly, the following claims are hereby incorporated into this specification, with each claim standing on its own as a separate embodiment.
[0115] <Executable instructions and machine storage media> Various memories and / or storage devices are enabled to store one or more sets of instructions and data structures (e.g., software) embodied in or utilized by any one or more of the methodologies or functions described herein, which, when executed by a processor(s), cause various operations to be performed to implement the disclosed embodiments.
[0116] As used herein, the terms “mechanical storage medium,” “device storage medium,” and “computer storage medium” mean the same thing and are permitted to be used interchangeably in this disclosure. These terms refer to single or multiple storage devices and / or media (e.g., centralized or distributed databases and / or associated caches and servers) that store executable instructions and / or data. Accordingly, the terms are intended to include, but are not limited to, solid-state memory, optical, and magnetic media, including memory internal or external to a processor. Specific examples of mechanical storage media, computer storage media, and / or device storage media include, for example, semiconductor memory devices such as erasable programmable read-only memories (EPROMs), electrically erasable programmable read-only memories (EEPROMs), FPGAs, flash memory devices, magnetic disks such as internal hard disks and removable disks, magneto-optical disks, and non-volatile memory such as CD-ROM and DVD-ROM disks. The terms “mechanical storage medium,” “computer storage medium,” and “device storage medium” specifically exclude carrier waves, modulated data signals, and other media, at least some of which are covered by the term “signal media” below.
[0117] <Transmission medium> In various examples, one or more portions of a network, such as a network-based system, may be an ad-hoc network, an intranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a WWAN, a MAN, the Internet, a portion of the Internet, a portion of the PSTN, a plainold telephone service (POTS) network, a cellular telephone network, a wireless network, a Wi-Fi network, another type of network, or a combination of two or more such networks. To further illustrate, the network or portion of the network may comprise a wireless or cellular network, and the coupling may be a code division multiple access (CDMA) connection, a Global System for Mobile Communications (GSM) connection, or another type of cellular or wireless coupling. In this example, the coupling is enabled to implement any of various types of data transfer technologies, such as single-carrier radio transmission technology (1xRTT), Evolution-Data Optimized (EVDO) technology, General Packet Radio Service (GPRS) technology, Enhanced Data rates for GSM Evolution (EDGE) technology, 3G comprising the Third Generation Partnership Project (3GPP), a Fourth Generation Wireless System (4G) network, Universal Mobile Telecommunications System (UMTS), High Speed Packet Access (HSPA), Worldwide Interoperability for Microwave Access (WiMAX), Long Term Evolution (LTE) network, Fourth Generation Wireless (4G) network, Universal Mobile Telecommunications System (UMTS), High Speed Packet Access (HSPA), Worldwide Interoperability for Microwave Access (WiMAX), Long Term Evolution (LTE) standards, others defined by various standards-setting organizations, other long-range protocols, or other data transfer technologies.
[0118] Instructions may be sent or received over a network using a transmission medium via a network interface device, utilizing any one of a number of well-known transfer protocols (e.g., Hypertext Transfer Protocol (HTTP)). Similarly, instructions may be sent or received using a transmission medium via a device connection (e.g., a peer-to-peer connection). The terms "transmission medium" and "signal medium" mean the same thing and may be used interchangeably in this disclosure. The terms "transmission medium" and "signal medium" are intended to include any intangible medium capable of storing, encoding, or carrying instructions for execution by a machine, including digital or analog communication signals or other intangible media for facilitating the communication of such software. Accordingly, the terms "transmission medium" and "signal medium" are intended to include any form of modulated data signal, carrier wave, etc. A "modulated data signal" means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
[0119] <Computer-Readable Medium> The terms "machine-readable medium," "computer-readable medium," and "device-readable medium" mean the same thing and may be used interchangeably in this disclosure. These terms are defined to include both mechanical storage media and transmission media. Thus, the term includes both storage devices / media and carrier / modulated data signals. < / source-repository> < / source-image>
Claims
1. A method for synchronizing a first container image list with a second container image list, wherein the method is: A step of accessing the first container image list from a remote source, wherein the first container image listed in the first container image list comprises a first tag and a first digest associated with the first tag, A step of accessing the second container image list from a cloud computing system registry, wherein the second container image listed in the second container image list comprises a second tag and a second digest associated with the second tag. A step of comparing the first container image with the second container image, It is equipped with, The step of comparing the first container image with the second container image is: A step of comparing the first tag associated with the first container image with the second tag associated with the second container image, wherein the comparison comprises comparing the prefixes associated with the first tag and the second tag, the first tag being associated with the first container image having a first version number, and the second tag being associated with the second container image having a second version number, and the step of comparing the first tag with the second tag. A step of determining whether the first tag matches the second tag, Based on the determination that the first tag matches the second tag, the first digest associated with the first container image is compared with the second digest associated with the second container image. A step of synchronizing the first container image list and the second container image list based on a comparison of the first container image and the second container image, The system includes the step of synchronizing the first container image list and the second container image list, The process includes downloading a container image listed in the first container image list from the remote source, The steps include creating multiple copies of the container image that has been listed in the first container image list and downloaded, A step of pushing a first copy of a plurality of copies of the downloaded container image to a first repository associated with the cloud computing system registry, wherein the first repository has a first repository tag among the second tags and a first repository digest among the second digests, and if the first repository tag does not match one of the plurality of first tags, or if the first repository digest does not match one of the plurality of first digests, the first copy is pushed; A step of pushing a second copy of the downloaded container image to a second repository associated with the cloud computing system registry, wherein the second repository has a second repository tag among the second tags and a second repository digest among the second digests, and if the second repository tag does not match one of the multiple first tags, or if the second repository digest does not match one of the multiple first digests, the second copy is pushed to the second repository. A method that includes [the following features].
2. When a match occurs between the first tag and the second tag during the comparison, the first digest among the multiple first digests is compared with the second digest among the multiple second digests. The method according to claim 1.
3. The aforementioned first digest includes a first digest hash, The aforementioned second digest includes a second digest hash that matches the aforementioned first digest hash, Synchronization is performed based on the first digest hash matching the second digest hash. The method according to claim 2.
4. The step of comparing the first container image with the second container image is: The steps include determining that the first container image list includes container images not listed in the second container image list, The steps include downloading an instance of the container image that is listed in the first container image list but not in the second container image list from the remote source, It is equipped with, The step of synchronizing the first container image list and the second container image list includes, in response to determining that a container image listed in the first container image list is not listed in the second container image list, the step of adding the container image that is listed in the first container image list but not in the second container image list to the repository associated with the cloud computing system registry. The method according to claim 1.
5. The step of comparing the first container image with the second container image is: A step of comparing the first version number and the second version number, A step of determining that the first version number is different from the second version number, In response to determining that the first version number is different from the second version number, the steps include downloading an instance of the first container image having the first version number from the remote source, It is equipped with, The step of synchronizing the first container image list and the second container image list includes the step of adding the first container image to the repository associated with the cloud computing system registry when it is determined that the first version number is different from the second version number. The method according to claim 1.
6. The aforementioned first version number corresponds to the first alphanumeric string, The aforementioned second version number corresponds to the second alphanumeric string, The step of determining that the first version number is different from the second version number includes the step of determining that the characters in the first alphanumeric string are different from the characters in the second alphanumeric string. The method according to claim 5.
7. A system, wherein the system is At least one processor, A memory containing instructions, It is equipped with, The instruction is configured, when executed by at least one of the processors, to cause at least one of the processors to perform an operation, the operation being: A step of accessing a first container image list from a remote source, wherein the first container image listed in the first container image list comprises a first tag and a first digest associated with the first tag, A step of accessing a second container image list from a cloud computing system registry, wherein the second container image listed in the second container image list comprises a second tag and a second digest associated with the second tag, A step of comparing the first container image with the second container image, The system includes a step of comparing the first container image with the second container image, A step of comparing the first tag associated with the first container image with the second tag associated with the second container image, wherein the comparison comprises comparing the prefixes associated with the first tag and the second tag, the first tag being associated with the first container image having a first version number, and the second tag being associated with the second container image having a second version number, and the step of comparing the first tag and the second tag. A step of determining whether the first tag matches the second tag, A step of comparing the first digest associated with the first container image with the second digest associated with the second container image, based on the determination that the first tag matches the second tag, A step of synchronizing the first container image list and the second container image list based on a comparison of the first container image and the second container image, The system includes the step of synchronizing the first container image list and the second container image list, The process includes downloading a container image listed in the first container image list from the remote source, The steps include creating multiple copies of the container image that has been listed in the first container image list and downloaded, A step of pushing a first copy of a plurality of copies of the downloaded container image to a first repository associated with the cloud computing system registry, wherein the first repository has a first repository tag among the second tags and a first repository digest among the second digests, and if the first repository tag does not match one of the plurality of first tags, or if the first repository digest does not match one of the plurality of first digests, the first copy is pushed; A step of pushing a second copy of the downloaded container image to a second repository associated with the cloud computing system registry, wherein the second repository has a second repository tag among the second tags and a second repository digest among the second digests, and if the second repository tag does not match one of the multiple first tags, or if the second repository digest does not match one of the multiple first digests, the second copy is pushed; A system equipped with these features.
8. The first digest among the multiple first digests has a first digest hash. Of the multiple aforementioned second digests, the aforementioned second digest has a second digest hash. The first digest is compared with the second digest when a match occurs between the first tag and the second tag during the comparison. Synchronization is performed based on the first digest hash matching the second digest hash. The system according to claim 7.
9. The process of comparing the first container image with the second container image is as follows: The steps include determining that the first container image list includes container images not listed in the second container image list, The steps include downloading an instance of the container image that is listed in the first container image list but not in the second container image list from the remote source, It is equipped with, The step of synchronizing the first container image list and the second container image list includes, in response to determining that a container image listed in the first container image list is not listed in the second container image list, the step of adding the container image listed in the first container image list but not listed in the second container image list to the repository associated with the cloud computing system registry. The system according to claim 7.
10. The aforementioned first version number corresponds to the first alphanumeric string, The aforementioned second version number corresponds to the second alphanumeric string, The step of comparing the first container image with the second container image is: A step of comparing the first version number and the second version number, A step of determining that the characters in the first alphanumeric string are different from the characters in the second alphanumeric string, such that the first version number is different from the second version number, In response to determining that the first version number is different from the second version number, the steps include downloading an instance of the first container image having the first version number from the remote source, It is equipped with, The step of synchronizing the first container image list and the second container image list includes the step of adding the first container image to the repository associated with the cloud computing system registry when it is determined that the first version number is different from the second version number. The system according to claim 7.
11. A computer program that is executed by a processor of a computer and is configured to cause the processor to perform an operation, wherein the operation is: A step of accessing a first container image list from a remote source, wherein the first container image listed in the first container image list comprises a first tag and a first digest associated with the first tag, A step of accessing a second container image list from a cloud computing system registry, wherein the second container image listed in the second container image list comprises a second tag and a second digest associated with the second tag, A step of comparing the first container image with the second container image, It is equipped with, The step of comparing the first container image with the second container image is: A step of comparing the first tag associated with the first container image with the second tag associated with the second container image, wherein the comparison comprises comparing the prefixes associated with the first tag and the second tag, the first tag being associated with the first container image having a first version number, and the second tag being associated with the second container image having a second version number, and the step of comparing the first tag and the second tag. A step of determining whether the first tag matches the second tag, A step of comparing the first digest associated with the first container image with the second digest associated with the second container image, based on the determination that the first tag matches the second tag, A step of synchronizing the first container image list and the second container image list based on a comparison of the first container image and the second container image, It is equipped with, The step of synchronizing the first container image list and the second container image list is: The process includes downloading a container image listed in the first container image list from the remote source, The steps include creating multiple copies of the container image that has been listed in the first container image list and downloaded, A step of pushing a first copy of a plurality of copies of the downloaded container image to a first repository associated with the cloud computing system registry, wherein the first repository has a first repository tag among the second tags and a first repository digest among the second digests, and if the first repository tag does not match one of the plurality of first tags, or if the first repository digest does not match one of the plurality of first digests, the first copy is pushed; A step of pushing a second copy of the downloaded container image to a second repository associated with the cloud computing system registry, wherein the second repository has a second repository tag among the second tags and a second repository digest among the second digests, and if the second repository tag does not match one of the multiple first tags, or if the second repository digest does not match one of the multiple first digests, the second copy is pushed to the second repository. A computer program that possesses these features.
12. The first digest among the multiple first digests has a first digest hash. Of the multiple aforementioned second digests, the aforementioned second digest has a second digest hash. The first digest is compared with the second digest when a match occurs between the first tag and the second tag during the comparison. Synchronization is performed based on the first digest hash matching the second digest hash. The computer program according to claim 11.
13. The process of comparing the first container image with the second container image is as follows: The steps include determining that the first container image list includes container images not listed in the second container image list, The steps include downloading an instance of the container image that is listed in the first container image list but not in the second container image list from the remote source, It is equipped with, The step of synchronizing the first container image list and the second container image list includes, in response to determining that a container image listed in the first container image list is not listed in the second container image list, the step of adding the container image that is listed in the first container image list but not in the second container image list to the repository associated with the cloud computing system registry. The computer program according to claim 11.
14. The aforementioned first version number corresponds to the first alphanumeric string, The aforementioned second version number corresponds to the second alphanumeric string, The process of comparing the first container image with the second container image is further: A step of comparing the first version number and the second version number, A step of determining that the characters in the first alphanumeric string are different from the characters in the second alphanumeric string, such that the first version number is different from the second version number, In response to determining that the first version number is different from the second version number, the steps include downloading an instance of the first container image having the first version number from the remote source, It is equipped with, The step of synchronizing the first container image list and the second container image list includes the step of adding the first container image to the repository associated with the cloud computing system registry when it is determined that the first version number is different from the second version number. The computer program according to claim 11.