DOCKER mirroring registry synchronization service
Through the registry synchronization service, comparing and synchronizing the container image list of cloud computing systems and remote sources, the problem of resource waste and version inconsistency in cloud computing systems when synchronizing and updating container images is solved, and efficient image management and resource utilization are achieved.
Patent Information
- Application Number
- CN202380032054.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-08-31
- Filing Date
- 2023-08-28
- Publication Date
- 2025-01-07
AI Technical Summary
When cloud computing systems synchronize and update container images, there are problems such as wasting resources and inconsistent versions, which leads to multiple increases in costs for accessing remote sources and may run the wrong version of container images.
Introduce the registry synchronization service, by comparing the container image list in remote sources and cloud computing systems, synchronizing the main copy of the container image with the cloud computing system's registry, ensuring that all lists contain the latest version, and deleting unnecessary images if necessary , save network resources.
It realizes efficient synchronization and update of container images, reduces the waste of network resources, ensures the consistency of container image versions in all cloud computing systems, and improves resource utilization.
Smart Images

Figure CN119278440A_ABST
Abstract
Description
[0001] Priority claim
[0002] This patent application claims the benefit of priority to U.S. application serial number 17 / 900,477, filed on August 31, 2022, which is incorporated herein by reference in its entirety. Technical Field
[0003] Examples relate generally to distributed computing environments, and more particularly, but not by way of limitation, to synchronizing data between different registers in a distributed computing environment. Background Art
[0004] Cloud computing systems such as Amazon Web Services TM (AWS TM ), Microsoft Azure TM and Google Cloud Platform TM As a method of providing computer-implemented resources, cloud computing is becoming increasingly popular. These cloud computing systems can provide services to various end users based on the needs of various end users. Cloud computing systems receive container images of programs captured in a state that can be executed to provide services from providers. Container images include files for creating instances of applications on end-user devices implemented by various end users.
[0005] Typically, a cloud computing system downloads a container image from a provider in order to run an executable image locally. The provider downloads a copy of the container image from a remote source. For each instance of the running container image, the provider downloads a copy of the container image from the remote source and uploads the copy of the container image to the cloud computing system. In the case where the cloud computing system runs multiple instances of the container image, the provider accesses the remote source multiple times for each of the multiple instances and 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 allowing various end users to execute instances that will run the container image.
[0006] In addition, after the cloud computing system receives the container image from the remote source, it may happen that the container image is updated and pushed to the remote source. However, the cloud computing system may not have the updated container image. Therefore, the cloud computing system may allow the wrong version of the container image to run. In addition, when the provider learns that there is an updated version, the provider must repeat the process of accessing the remote source, downloading, and then uploading the container image, thereby causing the above-mentioned problem again. BRIEF DESCRIPTION OF THE DRAWINGS
[0007] The various figures in the drawings depict only examples of the present disclosure and should not be considered limiting of its scope.
[0008] Figure 1A computing environment is shown in which examples may operate according to some examples.
[0009] Figure 2 A hierarchical structure of a cloud computing system registry associated with a cloud computing system is shown, according to some examples.
[0010] Figure 3 Tags that may accompany a container image are shown according to some examples.
[0011] Figure 4 It is shown that according to some examples, Figure 3 A summary of the tags.
[0012] Figure 5 Methods for synchronizing a master list at a remote source with a list of container images at a cloud computing system are shown according to some examples.
[0013] Figures 6 to 8 Tags that may accompany a container image are shown according to some examples.
[0014] Fig. 9 and Fig.10 It is shown that according to some examples, Figure 6 and Figure 7 A summary of the tags.
[0015] Fig.11 is a block diagram illustrating the architecture of software for implementing display of an interactive user interface according to some examples.
[0016] Fig.12 A machine is shown as an example computer system with instructions that cause the machine to effect display of an interactive user interface according to some examples. DETAILED DESCRIPTION
[0017] The following description includes systems, methods, techniques, instruction sequences and computing machine program products that implement the illustrative examples of the present disclosure. In the following description, for the purpose of illustration, many specific details are set forth to provide an understanding of the various examples of the subject matter of the present invention. However, it will be apparent to those skilled in the art that the examples of the subject matter of the present invention can be put into practice without these specific details. Typically, known instruction instances, protocols, structures and techniques are not necessarily shown in detail.
[0018] As mentioned above, a container image may be stored at a remote source and then downloaded by a provider, which then uploads the container image to a cloud computing system. In particular, a registry may store a master copy of a container image that is downloaded to different cloud computing systems. However, if multiple cloud computing systems each use a container image thousands of times, then the provider downloads the container image from the registry thousands of times and then uploads the container image to the cloud computing system thousands of times.
[0019] Therefore, there is a need for a system that can compare a container image stored on a master copy at a remote source with a container image stored at a registry at a cloud computing system. The system should be able to download a single instance of the container image based on the comparison and use the single instance to provide multiple copies of the container image to the cloud computing system.
[0020] An example relates to a registry synchronization service configured to synchronize a master copy of a container image stored at a remote source with a list of container images stored at a cloud computing system registry. The registry synchronization service may read the master copy of the container image stored at the remote source, and read the list of container images stored at the cloud computing system registry. In the example, the registry synchronization service may compare the master copy of the container image with the list of container images stored at the cloud computing system registry. Based on the comparison, the registry synchronization service may synchronize the list of container images stored at the cloud computing system registry with the master copy of the container image. Synchronization may include deleting a container image stored at the cloud computing system together with providing a container image to be stored at the cloud computing system. In the example, the cloud computing system may not include any container images listed on the master copy. The registry synchronization service may ensure that all container images listed on the master copy are also at the cloud computing system.
[0021] In an example, the registry synchronization service can download a single instance of a container image from a remote source having a master copy of the container image, and push copies of the single instance of the container image to multiple repositories associated with the cloud computing system registry. More specifically, using the downloaded single instance of the container image, the registry synchronization system can create multiple copies of the container image, and push copies of the single instance to multiple repositories associated with the cloud computing system registry.
[0022] In an example, synchronization between a master copy of a container image and a list of container images at a cloud computing system registry may include comparing tags associated with the container images listed on the master copy and tags associated with the container images listed on the cloud computing system list. During synchronization, when a match between tags is found, digests associated with the tags may be compared. Thus, dual authorization may be achieved to determine that the container image listed on the cloud computing system list is the latest version: the tag and the digest associated with the tag. In addition, the registry synchronization service may determine differences between the master copy of the container image and the list of container images at the cloud computing system registry.
[0023] The example improves the functionality of the computing device. As will be discussed below, the example relates to a computing device that implements a registry synchronization service that can compare a main registry with a remotely located registry. In particular, the computing device that implements the registry synchronization service can access a list listing thousands of container images and compare these lists with lists stored at a remote cloud computing system. In addition, the computing device that implements the registry synchronization service can synchronize the lists stored at the remote cloud computing system by deleting the container image list from the stored list and adding the container image list. The improvement is that the computing device can perform these comparisons and synchronizations in real time and save network resources, that is, the storage at the cloud computing system is released when unnecessary container images are removed. In addition, the improvement is that the computing device can push the container image to multiple cloud computing systems, which can save network resources and network infrastructure because the computing device can download a single copy of the container image, which can be pushed to thousands of destinations. The example ensures that thousands of container image lists across multiple lists are synchronized with each other so that all lists include similar information.
[0024] Now refer to Figure 1 , shows an example environment 100 in which an example can be operated. The environment 100 may include a remote source 102, which may be a third-party container registry such as a container registry available from a U.S.-based company headquartered in Sunnyvale, California. Get JFrog TM Artifactory TM Container registry. In an example, remote source 102 may include a registry of master copies 104A to 104C storing a list of container images. Throughout this document, master copy 104 will be used interchangeably with master copies 104A to 104C. It should be noted that any discussion related to master copy 104 also applies to master copies 104A to 104C, and any discussion related to master copies 104A to 104C also applies to master copy 104.
[0025] A container image may include files used to create an instance of an application on an end-user device implemented by various end users. In particular, a container image may be a snapshot of an application that can be loaded into an executable environment to run in the executable environment. Examples of applications that can be run using a container image may include Apache Kafka TM 、Kafka TM Structured Query Language (KSQL), SchemaRegistry, Connect, etc. Examples of environments where applications can run can include Kubernetes, Docker TM Or any other type of container environment. The environment in which the application can be run can be hosted at the cloud computing system 106 to 110. Examples of cloud computing systems 106 to 110 can include Amazon Web Services TM (AWS TM ), IBM Cloud TM , Google Cloud Platform TM , Microsoft Azure TM , available from AWS TM Elastic Container Registry available from Google, Google Container Registry available from Microsoft TM Get Azure Container Registry, etc.
[0026] Each of the cloud computing systems 106 to 110 may include a container image list. In particular, the cloud computing system 106 may include container image lists 112A to 112C, the cloud computing system 108 may include container image lists 114A to 114C, and the cloud computing system 110 may include container image lists 116A to 116C. In the example, the container image lists 112A to 112C, 114A to 114C, and 116A to 116C may match the master copies 104A to 104C. Therefore, the information in the container image lists 112A to 112C, 114A to 114C, and 116A to 116C mirrors the master copies 104A to 104C.
[0027] The container image lists 112A to 112C, 114A to 114C, and 116A to 116C may correspond to tags for container images implemented at containers associated with each of the cloud computing systems 106 to 110. More specifically, the container image lists 112A to 112C, 114A to 114C, and 116A to 116C may correspond to a registry associated with each of the cloud computing systems 106 to 110, wherein the registry may include a list of container images stored at a repository associated with the registry. Figure 2 An example of association of registries and repositories for a cloud computing system is shown.
[0028] Figure 2 1 shows a hierarchical structure of cloud computing system registry 200 to 204 associated with cloud computing system 106. It should be noted that with reference to Figure 2 The hierarchical structure shown is equally applicable to each of the cloud computing systems 108 and 110. The cloud computing system registry 200 may have associated therewith repositories 206A to 206C. The cloud computing system registry 202 may have associated therewith repositories 208A to 208C, and repositories 210A to 210C may be associated with the cloud computing system registry 204. In the example, each of the repositories 206A to 206C, 208A to 208C, and 210A to 210C stores a list of container images. In the example, the cloud computing system registries 202 to 204 may extract a list from each of the repositories 206A to 206C, 208A to 208C, and 210A to 210C, and provide the extracted list to the cloud computing system 106. In the example, the extracted lists from the repositories 206A to 206C, 208A to 208C, and 210A to 210C may form the container image lists 112A to 112C.
[0029] Master copies 104A to 104C may list the latest version of a container image. In an example, each of the container image lists in master copies 104A to 104C may include a tag 300, which may be any type of text string that may be used to identify a container image. To further illustrate, the container images listed in master copy 104A may have tags 300 associated therewith, as described in detail in the example of FIG. Figure 3 As shown. Tag 300 may include an alphanumeric string 302 having identifiers 304 to 308. Here, identifiers 304 and 308 may correspond to the number "1", while identifier 306 may correspond to the number "0". In an example, alphanumeric string 302 may correspond to a version of a container image listed on master replicas 104A to 104C. In an example, when a container image having alphanumeric string 302 is updated, any or all of identifiers 304 to 308 may be updated to reflect the updated version of the container image.
[0030] The tag 300 may have a summary 400 associated therewith, as shown in FIG. Figure 4As shown. Digest 400 may include values 402 to 406, which may be generated via any type of message digest hash algorithm, such as an MD5 message digest algorithm. In an example, values 402 to 406 may correspond to a hash. Digest 400 with values 402 to 406 may be unique to tag 300. Therefore, in an example, all instances of tag 300 may have a digest 400 including values 402 to 406. Digest 400 may be used to determine whether tag 300 matches another tag, as will be discussed further. In an example, a container image list, such as master copies 104A to 104C and container image lists 112A to 112C, 114A to 114C, and 116A to 116C, include tags and digests. In particular, each entry in the container image list is associated with a tag and a digest, such as tag 300 and digest 400.
[0031] The container image may be changed, such as upgraded, where the upgraded container image should be forwarded to the container in the container environment. Therefore, applications that can run using the container image and the environment running the container image should implement the upgraded container image. In addition, the container image may be created and added to the master copies 104A to 104C. In addition, the container may no longer require the container image.
[0032] In the example, when a container image is updated, master copies 104A to 104C are updated to reflect that the container image has been updated. Similarly, when a container image is added, master copies 104A to 104C are updated to reflect the new container image. In the example where a container no longer implements a particular container image, the container image can be deleted from master copies 104A to 104C.
[0033] To ensure that the container images listed on the master copy exist at the cloud computing systems 106 to 110, the example can implement a registry synchronization service 118. The registry synchronization service 118 can compare the container images on the master copies 104A to 104C with the container image lists 112A to 112C, 114A to 114C, and 116A to 116C. In the example, the registry synchronization service 118 can obtain the master copies 104A to 104C from the remote source 102. In addition, the registry synchronization service 118 can obtain the container image lists 112A to 112C, 114A to 114C, and 116A to 116C from each of the cloud computing systems 106 to 110. The registry synchronization service 118 can compare the container images listed on the master copies 104A to 104C with the container image lists 112A to 112C, 114A to 114C, and 116A to 116C.
[0034] Based on the comparison, the registry synchronization service 118 can synchronize the container images listed on the master copies 104A to 104C with the container image lists 112A to 112C, 114A to 114C, and 116A to 116C. The registry synchronization service 118 can download a single instance of the container image from the remote source 102 and push copies of the single instance of the container image to multiple repositories associated with the cloud computing system registry. More specifically, using the downloaded single instance of the container image, the registry synchronization service 118 can use the single instance to create multiple copies of the container image and push copies of the single instance to multiple repositories associated with the cloud computing system registry.
[0035] The list of container images from the container image lists 112A-112C, 114A-114C, and 116A-116C uses any type of tool that can manage the contents of a remote registry. An example may include skopeo that can issue the following command: "skopeo delete docker: / / <registry> / <repository> : <tag>”.
[0036] The registry synchronization service 118 may be configured to copy a list of container images including tags and digests (e.g., tag 300 and digest 400) associated with each of the container images on the master replicas 104A to 104C to the registry associated with the cloud computing systems 106 to 110. For further explanation, the repositories 206A to 206C, 208A to 208C, and 210A to 210C may not list the container images listed on the master replicas 104A to 104C. In an example, the registry synchronization service 118 can copy a container image list including tags and digests (e.g., tag 300 and digest 400) associated with each of the container images on the master replicas 104A to 104C, and push the copied container image list together with the tags and associated digests to the cloud computing systems 106 to 110 for replication to repositories associated with the cloud computing systems 106 to 110, such as repositories 206A to 206C, 208A to 208C, and 210A to 210C.
[0037] Examples of tools that can be used to copy a registry can include the skopeo tool. Examples of what can be done with the Skopeo tool can include: "skopeo copy <source-image> <destination-image>”, which can copy a single container image from one repository to another; and "skopeo sync <source-repository> <destination-repository>", which can copy all images found in the source repository to the destination repository. This can be considered an auxiliary command, which can be equivalent to using the "skopeo list-tags" command followed by multiple "skopeo copy" commands.
[0038] To further illustrate the concept that the registry synchronization service 118 ensures that the container images listed on the master copies 104A to 104C exist at the cloud computing systems 106 to 110, now refer to Figure 5 , Figure 5 A method 500 of synchronizing container images listed on a master copy with container images at a cloud computing system is shown. During operation 502, a first container image list listing container images is accessed from a remote source, each container image having a first tag and a first digest associated with the first tag. Therefore, during operation 502, the first tag and the first digest are also retrieved. In the example, a single remote source may be accessed for a single first container image list during operation 502. However, the example is not limited to accessing a single first container image list from a remote source during operation 502. Therefore, during operation 502, multiple container image lists may be accessed from a remote source.
[0039] After completing operation 502, method 500 performs operation 504, at which a second container image list listing container images is accessed from a cloud computing system, each container image having a second tag and a second digest associated with the second tag. Therefore, similar to operation 502, during operation 504, the second tag and the second digest are also retrieved. Although 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. Whenever operation 504 is performed, during operation 504, any number of container image lists can be accessed from any number of cloud computing systems. For example, a container image list can be obtained from ten different cloud computing systems. In addition, multiple container image lists can be obtained from a single cloud computing system, or multiple container image lists can be obtained from each of multiple cloud computing systems.
[0040] To further illustrate the method 500 and referred to herein as a “diagram”, reference is now made to Figure 1 During operation 502, the registry synchronization service 118 may access the remote source 102 and the master copy 104A along with the tags and digests associated with each container image on the master copy 104A. In addition, during operation 504, the registry synchronization service 118 may access the list from the cloud computing system 106.
[0041] 112A, access list 114A from cloud computing system 108, and access list 114A from cloud computing system 110
[0042] 116A along with the tags and digests associated with each container image on lists 112A to 116A.
[0043] The registry synchronization service 118 uses various tools to access each of 102 and 106 to 110. For example, the registry synchronization service 118 can use the Docker Registry HTTP API. Here, the registry synchronization service 118 can use the Docker Registry HTTP API with the help of a third-party code library that implements a client for the Docker Registry HTTP API. In addition, the implementation of the container registry can provide a unique API specific to the registry implementation. Here, the implementation-specific API can provide additional operations (such as managing access rights to the repository) and / or provide behavior equivalent to the Docker Registry HTTP API.
[0044] Back to Figure 5 and method 500, after accessing the first container image list and the second container image list during operation 502 and operation 504, method 500 performs operation 506, at which the first tag associated with the first container image and the second tag associated with the second container image are compared. Operation 506 can be performed during the comparison of the first container image list with the second container image list, and as part of the comparison of the first container image list with the second container image list. In an example, the first tag and the second tag can be used to determine whether the second container image is the latest version of the container image. Even if each of the first container image list and the second container image list lists the same container image, the version of the container image on the second list may not be the latest version, such as when the container image on the first container image list has been updated. In an example, the first tag and the second tag can be used to determine whether the version of the container image on the second container image list is the latest version. More specifically, the comparison between the first tag and the second tag can make an initial determination as to whether the container image listed on the second container image list is the latest.
[0045] Furthermore, in some examples, when a first list, such as master copies 104A to 104C, is obtained from a master registry and a second list, such as container image lists 112A to 112C, 114A to 114C, and 116A to 116C, is obtained from a cloud computing system, it may occur that container image lists 112A to 112C, 114A to 114C, and 116A to 116C list instances of container images that are not on master copies 104A to 104C. Furthermore, as will be discussed further below, container image lists 112A to 112C, 114A to 114C, and 116A to 116C may be updated to remove container images referenced in container image lists 112A to 112C, 114A to 114C, and 116A to 116C.
[0046] In some instances, the master copies 104A to 104C may list container images that are not listed on the container image lists 112A to 112C, 114A to 114C, and 116A to 116C. Here, the registry synchronization service 118 may download a single instance of a container image that is listed on the master copies 104A to 104C but is not listed on the container image lists 112A to 112C, 114A to 114C, and 116A to 116C, and then push a copy of the single instance of the container image to the repositories 206A to 206C, 208A to 208C, and 210A to 210C.
[0047] Returning to the illustration, the container image on the master copy 104A may include a tag 300, and the tag 300 has identifiers 304 to 308. In addition, in the illustration, the container image in the container image list 112A may have a tag 600, and the tag 600 includes an alphanumeric string 602 together with identifiers 604 to 608. Identifiers 604 and 608 may correspond to the number "1", and identifier 606 may correspond to the number "0". In the illustration, the container image in the container image list 114A may have a tag 700, and the tag 700 includes an alphanumeric string 702 together with identifiers 704 to 708. Identifier 704 may correspond to the number "1", and identifiers 706 and 708 may correspond to the number "0". In addition, in the illustration, the container image in the container image list 116A may have a tag 800, and the tag 800 includes an alphanumeric string 802 together with identifiers 804 to 808. In the illustration, identifiers 804 and 808 may correspond to the number "1", while identifier 806 may correspond to the number "0".
[0048] During operation 506, the registry synchronization service 118 compares the tag 300 along with the identifiers 304-308 to the tags 600-800 and each of the identifiers 604-608, 704-708, and 804-808. More specifically, during operation 506, the registry synchronization service 118 compares the tag 300 to the tag 600. During the comparison between the tag 300 and the tag 600, the identifiers 304-308 may be compared to the identifiers 604-608. In an example, any differences between the identifiers 304-308 and the identifiers 604-608 may indicate differences between the container image associated with the tag 300 and the container image associated with the tag 600. As mentioned above, differences may occur when the container image at the master replica 104A has been updated while the container image at the container associated with the repository that lists the container image associated with the 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", and identifier 308 and identifier 608 each correspond to the number "1". In the illustration, it is determined whether the tag in the master copy 104A exists in the lists 112A to 112C, 114A to 114C, and 116A to 116C.
[0049] Additionally, during operation 506, registry synchronization service 118 compares tag 300 to tag 700. During the comparison between tag 300 and tag 700, identifiers 304-308 are compared to identifiers 704-708. In the example, any differences between identifiers 304-308 and identifiers 704-708 may indicate a difference between a container image associated with tag 300 and a 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", and identifier 708 corresponds to the number "0". Therefore, in the illustration, during operation 506, registry synchronization service 118 determines that tag 300 is different from tag 700.
[0050] During operation 506, the registry synchronization service 118 also compares the tag 300 to the tag 800. During the comparison between the tag 300 and the tag 800, the identifiers 304 to 308 are compared to the identifiers 804 to 808. In the example, any differences between the identifiers 304 to 308 and the identifiers 804 to 808 may indicate differences between the container image associated with the tag 300 and the container image associated with the tag 800. In the illustration, the identifier 304 and the identifier 804 each correspond to the number "1", the identifier 306 and the identifier 806 each correspond to the number "0", and the identifier 308 and the identifier 808 each correspond to the number "1".
[0051] Return to method 500 and Figure 5 After comparing the tags 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. Otherwise, method 500 performs operation 512.
[0052] During operation 510, a first digest associated with the first container image and a second digest associated with the second container image are compared. As discussed above, each of the tags associated with the container images listed in master copies 104A to 104C can have a digest associated therewith, which can be generated via any type of message digest hashing algorithm. In an example, the digest can be unique to a particular tag, so that if container images in different lists (e.g., master copy 104A and each of container image lists 112A, 114A, and 116A) have the same tag and the same digest, then the container images associated with the container images listed in container image lists 112A, 114A, and 116A and master copy 104A are the same, that is, the container images are the same version. In another example, if the master copy 104A and the container images listed in the container image lists 112A, 114A, and 116A have matching tags but different digests, then the container images associated with the container images listed in the container image lists 112A, 114A, and 116A are not the same as the container images associated with the container images listed in the master copy 104A, that is, the container images are different versions. In an example, operation 510 can be used to confirm that the container images associated with the container images listed in the cloud computing system list and the container images associated with the container images listed in the master list are the same.
[0053] Referring back to the illustration, as described above, during the comparison in operation 506, the registry synchronization service 118 determines that the identifiers 604-608 of the tag 600 and the identifiers 804-808 of the tag 800 are the same as the identifiers 304-308 of the tag 300. Therefore, during operation 508, the registry synchronization service 118 determines that the tag 300 matches the tags 600 and 800. Therefore, the registry synchronization service 118 performs operation 510.
[0054] Tag 600 includes digest 900, which has values 902 to 906. Similar to values 402 to 406, in an example, values 902 to 906 may be hashes created using a hashing algorithm. During operation 510, registry synchronization service 118 compares values 402 to 406 associated with digest 400 with values 902 to 906. Value 402 corresponds to "DAIS", value 404 corresponds to "PATR", and value 406 corresponds to "PKJ2". Therefore, in order for digest 900 to match digest 400, values 902 to 906 should be the same as values 402 to 406. In an example, if values 902 to 906 are the same as values 402 to 406, this may mean 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 illustration, value 902 corresponds to "1ZO6", value 904 corresponds to "E350", and value 906 corresponds to "FPLC". Because values 402-406 and values 902-906 are not identical, digest 900 does not match digest 400. Thus, in the illustration, the container image associated with the container image list having tag 600 and digest 900 is not identical to the container image associated with the container image list in master copy 104A having tag 300 and digest 400. As can be appreciated, the dual authorization provided by a tag and an associated digest can be used to avoid situations where the tags match but a potential update of a container image fails because the associated digests do not match.
[0055] Still taking this illustration as an example, tag 800 may include digest 1000, which has values 1002 to 1006. Similar to values 402 to 406, in the example, values 1002 to 1006 may be hashes created using a hashing algorithm. During operation 510, registry synchronization service 118 compares values 402 to 406 associated with digest 400 with values 1002 to 1006. Similarly, value 402 corresponds to "DAIS", value 404 corresponds to "PATR", and value 406 corresponds to "PKJ2". In the illustration, value 1002 corresponds to "DAIS", value 1004 corresponds to "PATR", and value 1006 corresponds to "PKJ2". Since values 402 to 406 and values 1002 to 1006 are the same, digest 1000 matches digest 400. Thus, in the illustration, 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 in master copy 104A having tag 300 and digest 400 .
[0056] In the illustration, as described above, during the comparison in operation 506, the registry synchronization service 118 determines that identifiers 704-708 are not identical to identifiers 304-308 of tag 300. Therefore, with respect to tag 700, the registry synchronization service 118 skips operation 510 and instead performs operation 512.
[0057] Return to attention Figure 5 and method 500, upon completion of operation 510, method 500 performs operation 512, at which the second container image list is synchronized with the first container image list based on comparing the first container image list with the second container image list. During operation 512, in the case where the tag associated with the container image listed in one of the container image lists 112A to 112C, 114A to 114C, and 116A to 116C does not match the tag associated with the same container image in the master copy 104A to 104C, that is, the version associated with the container image lists 112A to 112C, 114A to 114C, and 116A to 116C is not the same as the version associated with the master copy 104A to 104C, the container image associated with the container image listed in the container image lists 112A to 112C, 114A to 114C, and 116A to 116C can be updated with the container image associated with the master copy 104A.
[0058] Synchronization may also include deleting container images in registries associated with cloud computing systems 106 to 110. As an example, if container image lists 112A to 112C, 114A to 114C, and 116A to 116C include a container image list that is not in master copies 104A to 104C, during synchronization, the container image may be deleted from cloud computing systems 106 to 110 and container image lists 112A to 112C, 114A to 114C, and 116A to 116C. In addition, tags and digests associated with the deleted container images may be deleted along with the listings in container image lists 112A to 112C, 114A to 114C, and 116A to 116C.
[0059] In the illustration, as discussed above, during operation 506, the registry synchronization service 118 determines that the tag 300 is different from the tag 700. Therefore, during operation 508, the registry synchronization service 118 determines that the tag 300 does not match the tag 700, and performs operation 512. If the tag found in the destination list does not exist in the source list, the registry synchronization service 118 can delete the image / tag. In particular, the registry synchronization service 118 can download the container image associated with the tag 300 from the remote source 102. In addition, the registry synchronization service 118 can push a copy of the container image to the cloud computing system 108. In addition, the container image list 114A can be updated with a new tag corresponding to the tag 300 and a digest associated with the new tag corresponding to the digest 400. Therefore, if no other updates or deletions are made at the master copy 104A, the tags and digests will match during subsequent comparisons.
[0060] Continuing with the illustration, during operation 510, the registry synchronization service 118 determines that the digest 900 associated with the tag 600 is different from the digest 400 associated with the tag 300, even though the tag 600 matches the 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 associated with the tag 600 and the digest 900 at the cloud computing system 106 and pushing a copy of the container image to the cloud computing system 106. Here, instead of having to download another copy of the container image associated with the tag 300 and the digest 400, the registry synchronization service 118 can make another copy of the container image associated with the tag 300 and the digest 400 that has been downloaded from the remote source 102 for the cloud computing system 108 and push the additional copy to the cloud computing system 106 during the synchronization in operation 512. Additionally, the container image list 112A can be updated with a new tag corresponding to the tag 300 and a digest associated with the new tag corresponding to the digest 400. Thus, if no other updates or deletions are made at master copy 104A, during subsequent comparisons, the tags and digests will match. As can be appreciated, instead of registry synchronization service 118 having to download the same container image multiple times for distribution to multiple cloud computing systems, such as cloud computing systems 106 and 108, registry synchronization service 118 can download the container image once, make multiple copies, and then push one of the multiple copies to a different cloud computing system.
[0061] Regarding container image list 116A and container images associated with tag 800 and digest 1000, since there are no differences between tags 300 and 800 and digests 400 and 1000, there is no need to update container image list 116A for container images associated with tag 800 and digest 1000. When operation 512 is completed, method 500 is completed.
[0062] In an example, the cadence associated with the frequency at which the registry synchronization service 118 executes the method 500 is variable. For example, the registry synchronization service 118 may execute the method 500 at five minute intervals, fifteen minute intervals, thirty minute intervals, hourly intervals, or any other time interval. In addition, the cadence may be changed, where initially, the registry synchronization service 118 may execute the method 500 at a cadence of every fifteen minutes and then switch to a cadence of every five minutes. In an example, the number of container images that will be compared and synchronized during the method 500 may also be controlled. An upper limit may be set to the number of comparisons and synchronizations that the registry synchronization service 118 will perform for each repository, such as 1,000.
[0063] In some examples, after the registry synchronization service 118 accesses the first list and the second list during operations 502 and 504, the registry synchronization service 118 can sort the container image list in the master replicas 104A to 104C and the container image lists 112A to 112C, 114A to 114C, and 116A to 116C. For example, the registry synchronization service 118 can sort the first list and the second list according to the semantic version of the container image associated with the container image list. To further illustrate, the registry synchronization service 118 can sort the first list and the second list according to the timestamp, where the most recently added or updated container image and the list of referenced container images are compared and synchronized, as described above with reference to Figure 5 and method 500 as detailed herein.
[0064] Additionally, the registry synchronization service can select the best registry from which to copy the image. 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, if the registry synchronization service 118 knows that the registry has the container image, the registry synchronization service 118 can download the container image from any configured registry (either the primary registry or one of the destinations). The registry synchronization service 118 can select a registry from which to download the image based on a configured metric (referred to as "cost" in the registry synchronization implementation), preferably the registry with the lowest metric. The operator of the registry synchronization service can define and specify metrics based on, for example, the relative monetary cost of transmitting the container image from each registry. In this way, the registry synchronization service can optimize the costs associated with operating the service. Additional costs can include network usage, latency, jitter, and the like.
[0065] In another example, the registry synchronization service 118 may support configuring a "tag filter." A filter may be a pattern (e.g., specified as a regular-expression or "regex") that a tag may match before being considered for synchronization as discussed above. To further illustrate, a user may upload a production image with tags "1.0.0" and "1.0.1." Additionally, a user may upload an image of a development or test build with tags such as "1.0.1-rc1" or "my-test." The registry synchronization service 118 may be configured with a tag filter such as "^[0-9]+(\.[0-9]+){2}$," which may be a regular expression that matches tags consisting of three digits separated by periods (a "digit" being one or more of the digits 0 to 9). Using this filter, the registry synchronization service 118 may synchronize tags "1.0.0" and "1.0.1" without synchronizing tags "1.0.1-rc1" and "my-test." The tags 300 , 600 , 700 , and 800 discussed above may be filtered as discussed herein, where the comparison detailed above may include comparing these tag filters.
[0066] In another example, the registry synchronization service 118 can support configuring a repository "prefix" for each registry, thereby renaming the repository. The prefix service can limit the set of repositories that the registry synchronization service 118 considers for synchronization, such as repositories 206A to 206C, 208A to 208C, and 210A to 210C. For example, by configuring a prefix of "containers / release" for the source registry, the registry synchronization service 118 can synchronize tags from repositories "containers / release / kafka" and "containers / release / ksql" but not repositories "containers / devel / kafka" or "images / kafka". In addition, the prefix service can support renaming repositories. If the source registry, such as one of the repositories 206A-206C, 208A-208C, and 210A-210C, is configured with a prefix of "containers / release" and the destination registry is configured with a prefix of "prod", then when the registry synchronization service 118 synchronizes the repository "containers / release / kafka" in the source registry, the registry synchronization service 118 can place those images in the repository "prod / kafka" in the destination registry. Here, the repositories 206A-206C, 208A-208C, and 210A-210C can include a prefix, and during operation 504 detailed above, the repositories 206A-206C, 208A-208C, and 210A-210C from which the second container image list is extracted can be filtered based on the prefix associated with the repositories 206A-206C, 208A-208C, and 210A-210C. The repositories associated with the cloud computing systems 106 - 108 may have prefixes, and during operation 504 detailed above, the cloud computing systems 106 - 108 from which the second container image list is extracted may be filtered according to the prefixes associated with the cloud computing systems 106 - 108 .
[0067] The registry synchronization service 118 can maintain a local cache of the contents (tags and digests) of each registry, such as the repositories 206A to 206C, 208A to 208C, and 210A to 210C. By referencing this cache and updating it when the registry synchronization service 118 makes changes to the registry (copies and deletes tags / mirrors), the registry synchronization service 118 can avoid the need to repeatedly obtain the contents of each registry. This can reduce the amount of network requests sent to each registry, the network traffic generated, and the time required for each synchronization cycle.
[0068] In an example, the registry synchronization service 118 may be able to perform the following: filter a set of repositories according to a prefix, filter a set of tags from each repository according to a tag filter, and copy a set of source images to multiple destinations. In addition, the registry synchronization service 118 may rename the repository according to the configured prefix and select the best registry from which to copy the image. In addition, the registry synchronization service 118 may delete images that are not present in the source and cache repository content from destinations such as repositories 206A to 206C, 208A to 208C, and 210A to 210C to optimize any future synchronization processing. In particular, the registry synchronization service 118 may cache images so that the registry synchronization service 118 does not have to extract images from the source during subsequent synchronization processing, as detailed above.
[0069] Figure 1 and Figure 2 Any of the machines, databases, or devices shown may be implemented in a general-purpose computer that is modified (e.g., configured or programmed) by software to be a special-purpose computer that performs the functions described herein for that machine, database, or device. Figure 11 to Figure 12 A computer system capable of implementing any one or more of the methods described herein is discussed. As used herein, a "database" is a data storage resource and may 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. In addition, Figure 1 Any two or more of the machines, databases, or devices shown 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 example, the communication is accomplished via one or more data communication networks. Figure 1 and Figure 2 The data communication network can utilize any wired or wireless communication protocol and any type of communication medium. In some embodiments, the data communication network is a combination of two or more data communication networks (or subnetworks) coupled to each other.
[0070] Certain embodiments are described herein as including logic or multiple components, modules, or mechanisms. Modules may constitute software modules (e.g., code contained on a machine-readable medium) or hardware modules. A "hardware module" is a tangible unit that is capable of performing certain operations and may be configured or arranged in some physical manner. In various example embodiments, one or more computer systems (e.g., stand-alone computer systems, client computer systems, or server computer systems) or one or more hardware modules (e.g., a processor or a group of processors) in a computer system may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.
[0071] In some embodiments, the hardware module can be implemented mechanically, electronically, or in any suitable combination thereof. For example, the hardware module may include a dedicated circuit system or logic that is permanently configured to perform certain operations. For example, the hardware module may be a dedicated processor such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC). The hardware module may also include a programmable logic or circuit system that is temporarily configured by software to perform certain operations. For example, the hardware module may include software executed by a general-purpose processor or other programmable processor. Once configured by such software, the hardware module becomes a specific machine (or a specific component of a machine) that is uniquely customized to perform the configured function, and is no longer a general-purpose processor. It will be understood that the decision to mechanically implement the hardware module in a dedicated and permanently configured circuit system or in a temporarily configured circuit system (e.g., configured by software) can be driven by cost and time considerations.
[0072] Therefore, the phrase "hardware module" should be understood to include a tangible entity, that is, an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in a certain manner or perform certain operations described herein. As used herein, a "hardware-implemented module" refers to a hardware module. Considering an embodiment in which a hardware module is temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one time. For example, in the case where the hardware module includes a general-purpose processor that is configured by software to become a special-purpose processor, the general-purpose processor can be configured as a different special-purpose processor (e.g., including different hardware modules) at different times. The software configures a specific one or more processors accordingly, for example, to constitute a specific hardware module at one time and to constitute different hardware modules at different times.
[0073] A hardware module can provide information to other hardware modules and receive information from other hardware modules. Therefore, the described hardware modules can be considered to be coupled in communication. In the case of multiple hardware modules at the same time, communication can be achieved by transmitting signals between or among two or more hardware modules (for example, through appropriate circuits and buses). In an embodiment where multiple hardware modules are configured or exemplified at different times, the communication between these hardware modules can be achieved, for example, by storing and retrieving information in a memory structure accessed by multiple hardware modules. For example, a hardware module can perform an operation and store the output of the operation in a memory device coupled in communication with it. Then, another hardware module can access the memory device at a later time to retrieve the stored output and process it. The hardware module can also initiate communication with an input device or an output device, and can operate on a resource (for example, a collection of information).
[0074] The various operations of the example methods described herein may be performed, at least in part, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Such processors, whether temporarily or permanently configured, 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 implemented using one or more processors.
[0075] Similarly, the methods described herein may be implemented at least in part by a processor, wherein the specific one or more processors are examples of hardware. For example, at least some of the operations of the method may be performed by one or more processors or modules implemented by the processor. In addition, one or more processors may also operate to support the execution of related operations in a "cloud computing" environment or operate as "software as a service" (SaaS). For example, at least some of the operations may be performed by a group of computers (as an example of a machine including a processor), wherein these operations are accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., application program interface (API)).
[0076] The execution of certain operations in the operation may be distributed among processors, not resident only in a single machine, but deployed across several machines. In some example embodiments, the processor or processor-implemented modules may be located in a single geographic location (e.g., in a home environment, an office environment, or a server farm). In other example embodiments, the processor or processor-implemented modules are distributed across multiple geographic locations.
[0077] In some embodiments, the combination is implemented in the context of a machine and associated software architecture. Figures 1 to 9 Described modules, methods, applications, etc. The following section describes representative software architectures and machine (eg, hardware) architectures suitable for use with the disclosed embodiments.
[0078] Software architectures are used in conjunction with hardware architectures to create devices and machines that are customized for specific purposes. For example, a specific hardware architecture coupled with a specific software architecture will create a mobile device, such as a mobile phone, a tablet device, etc. Slightly different hardware and software architectures can produce smart devices used in the "Internet of Things." Yet another combination produces server computers used within a cloud computing architecture. Not all combinations of such software and hardware architectures are presented here, as those skilled in the art can readily understand how to implement the subject matter of the present invention in contexts different from the disclosure contained herein.
[0079] Example 1 is a method for synchronizing a first container image list with a second container image list, the method comprising: accessing the first container image list from a remote source, wherein the first container image listed in the first container image list includes a first tag and a first digest associated with the first tag; accessing the second container image list from a cloud computing system registry, wherein the second container image listed in the second container image list includes a second tag and a second digest associated with the second tag; comparing the first container image with the second container image in the following manner: comparing a first tag associated with the first container image with a second tag associated with the second container image, the comparison including comparing prefixes associated with the first tag and the second tag; and based on the comparison of the first tag with the second tag, comparing a first digest associated with the first container image with a second digest associated with the second container image; and 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.
[0080] In Example 2, the subject matter of Example 1 includes, wherein synchronizing includes: downloading a container image listed on a first container image list from a remote source; creating a copy of the downloaded container image listed on the first container image list; pushing a first copy of the downloaded copy of the container image to a first repository associated with a cloud computing system registry; and pushing a second copy of the downloaded copy of the container image to a second repository associated with the cloud computing system registry.
[0081] In Example 3, the subject matter of Examples 1-2 includes, wherein when a match occurs between the first tag and the second tag during the comparison, a first digest in the first digests is compared with a second digest in the second digests.
[0082] In Example 4, the subject matter of Example 3 includes, wherein the first digest comprises a hash and the second digest comprises a hash that matches the first digest hash, and the synchronizing is performed based on the first digest hash matching the second digest hash.
[0083] In Example 5, the subject matter of Examples 1 to 4 includes, wherein 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: 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, deleting the container images listed on the second container image list from a repository associated with the cloud computing system registry.
[0084] In Example 6, the subject matter of Examples 1 to 5 includes, wherein 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 on the second container image list; downloading an instance of the container image listed on the first container image list but not listed on the second container image from the remote source; and synchronizing the first container image list with the second container image list includes: in response to determining that the container image listed on the first container image list is not listed on the second container image list, adding the container image listed on the first container image list and not listed on the second container image list to a repository associated with the cloud computing system registry.
[0085] In Example 7, the subject matter of Examples 1 to 6 includes, wherein a first tag associated with the first container image has a first version number, and a second tag associated with the second container image has a second version number, and comparing the first container image with the second container image further includes: comparing the first version number with the second version number; 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, downloading an instance of the first container image with 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 is different from the second version number, adding the first container image to a repository associated with a cloud computing system registry.
[0086] In Example 8, the subject matter of Example 7 includes, wherein the first version number corresponds to a first alphanumeric string and the second version number corresponds to a second alphanumeric string, and determining that the first version number is different from the second version number includes determining that characters of the first alphanumeric string are different from characters of the second alphanumeric string.
[0087] Example 9 is a system comprising: at least one processor; and at least one memory, the at least one memory comprising instructions, which when executed by the at least one processor cause the at least one processor to perform operations, the operations comprising: 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; 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; comparing the first container image with the second container image in the following manner: comparing a first tag associated with the first container image with a second tag associated with the second container image, the comparison comprising comparing prefixes associated with the first tag and the second tag; and based on the comparison of the first tag with the second tag, comparing a first digest associated with the first container image with a second digest associated with the second container image; and 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.
[0088] In Example 10, the subject matter of Example 9 includes, wherein synchronizing includes: downloading a container image listed on a first container image list from a remote source; creating a copy of the downloaded container image listed on the first container image list; pushing a first copy of the downloaded copy of the container image to a first repository associated with a cloud computing system registry; and pushing a second copy of the downloaded copy of the container image to a second repository associated with the cloud computing system registry.
[0089] In Example 11, the subject matter of Examples 9 to 10 includes, wherein the first digest in the first digest includes a hash and the second digest in the second digest includes a hash, and when a match occurs between the first tag and the second tag during the comparison, the first digest is compared to the second digest, wherein synchronization is performed based on the first digest hash matching the second digest hash.
[0090] In Example 12, the subject matter of Examples 9 to 11 includes, wherein 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: 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, deleting the container images listed on the second container image list from a repository associated with the cloud computing system registry.
[0091] In Example 13, the subject matter of Examples 9 to 12 includes, wherein comparing the first container image to the second container image further includes: determining that the first container image list includes a container image that is not listed on the second container image list; downloading an instance of the container image listed on the first container image list but not listed on the second container image list from a remote source; and synchronizing the first container image list with the second container image list includes: in response to determining that the container image listed on the first container image list is not listed on the second container image list, adding the container image listed on the first container image list and not listed on the second container image list to a repository associated with a cloud computing system registry.
[0092] In Example 14, the subject matter of Examples 9 to 13 includes, wherein a first tag associated with the first container image has a first version number corresponding to the first alphanumeric string, and a second tag associated with the second container image has a second version number corresponding to the second alphanumeric string, and comparing the first container image with the second container image further includes: comparing the first version number with the second version number; determining that characters of the first alphanumeric string are different from characters of 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, 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 is different from the second version number, adding the first container image to a repository associated with a cloud computing system registry.
[0093] Example 15 is a non-transitory machine-readable medium having instructions implemented thereon, the instructions being executable by a processor of a machine to perform operations, the operations comprising: accessing a first container image list from a remote source, wherein a first container image listed in the 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, wherein a second container image listed in the second container image list comprises a second tag and a second digest associated with the second tag; comparing the first container image with the second container image in the following manner: comparing a first tag associated with the first container image with a second tag associated with the second container image, the comparison comprising comparing prefixes associated with the first tag and the second tag; and based on the comparison of the first tag with the second tag, comparing a first digest associated with the first container image with a second digest associated with the second container image; and 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.
[0094] In Example 16, the subject matter of Example 15 includes, wherein synchronizing includes: downloading a container image listed on a first container image list from a remote source; creating a copy of the downloaded container image listed on the first container image list; pushing a first copy of the downloaded copy of the container image to a first repository associated with a cloud computing system registry; and pushing a second copy of the downloaded copy of the container image to a second repository associated with the cloud computing system registry.
[0095] In Example 17, the subject matter of Examples 15 to 16 includes, wherein the first digest in the first digest includes a hash and the second digest in the second digest includes a hash, and when a match occurs between the first tag and the second tag during the comparison, the first digest is compared to the second digest, wherein synchronization is performed based on the first digest hash matching the second digest hash.
[0096] In Example 18, the subject matter of Examples 15 to 17 includes, wherein 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: 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, deleting the container images listed on the second container image list from a repository associated with the cloud computing system registry.
[0097] In Example 19, the subject matter of Examples 15 to 18 includes, wherein comparing the first container image to the second container image further includes: determining that the first container image list includes a container image that is not listed on the second container image list; downloading an instance of the container image listed on the first container image list but not listed on the second container image list from a remote source; and synchronizing the first container image list with the second container image list includes: in response to determining that the container image listed on the first container image list is not listed on the second container image list, adding the container image listed on the first container image list and not listed on the second container image list to a repository associated with a cloud computing system registry.
[0098] In Example 20, the subject matter of Examples 15 to 19 includes, wherein a first tag associated with the first container image has a first version number corresponding to the first alphanumeric string, and a second tag associated with the second container image has a second version number corresponding to the second alphanumeric string, and comparing the first container image with the second container image further includes: comparing the first version number with the second version number; determining that characters of the first alphanumeric string are different from characters of 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, 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 is different from the second version number, adding the first container image to a repository associated with a cloud computing system registry.
[0099] Example 21 is at least one machine-readable medium comprising instructions that, when executed by a processing circuit system, cause the processing circuit system to perform operations to implement any one of Examples 1 to 20.
[0100] Example 22 is a device comprising means for implementing any one of Examples 1 to 20.
[0101] Example 23 is a system for implementing any one of Examples 1 to 20.
[0102] Example 24 is a method for implementing any one of Examples 1 to 20.
[0103] Fig.11 is a block diagram 1100 illustrating a software architecture 1102 that may be installed on any one or more of the devices described above. Fig.11 This is merely a non-limiting example of a software architecture, and it should be understood that many other architectures may be implemented to facilitate the functionality described herein. The software architecture 1102 may be comprised of, for example, Fig.12 12 is a hardware implementation of a machine 1200 including a processor 1202, memories 1204 and 1206, and I / O components 1210 to 1214. In this example, the software architecture 1102 can be conceptualized as a stack of layers, each of which can provide specific functionality. For example, the software architecture 1102 includes layers such as an operating system 1104, a library 1106, a framework 1108, and an application 1110. In operation, according to some implementations, the application 1110 triggers an application programming interface (API) call 1112 through the software stack and receives a message 1114 in response to the API call 1112.
[0104] In various implementations, the operating system 1104 manages hardware resources and provides public services. The operating system 1104 includes, for example, a kernel 1120, services 1122, and drivers 1124. In some implementations, the kernel 1120 acts as an abstraction layer between the hardware and other software layers. For example, the kernel 1120 provides functions such as memory management, processor management (e.g., scheduling), component management, networking, and security settings. Services 1122 can provide other public services to other software layers. Drivers 1124 can be responsible for controlling or interfacing with the underlying hardware. For example, drivers 1124 can include display drivers, camera drivers, drives, flash drives, serial communications drivers (e.g., Universal Serial Bus (USB) drivers), Drivers, audio drivers, power management drivers, etc.
[0105] In some implementations, the library 1106 provides a low-level common infrastructure that can be utilized by the application 1110. The library 1106 may include a system library 1130 (e.g., a C standard library) that may provide functions such as memory allocation functions, string manipulation functions, mathematical functions, etc. In addition, the library 1106 may include an API library 1132, such as: a media library (e.g., a library that supports 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., an OpenGL framework for rendering in two dimensions (2D) and three dimensions (3D) in a graphics environment on a display), a database library (e.g., SQLite that provides various relational database functions), a web library (e.g., WebKit that provides web browsing functions), etc. The library 1106 may also include various other libraries 1134 to provide many other APIs to the application 1110 .
[0106] According to some implementations, the framework 1108 provides a high-level common infrastructure that can be utilized by the applications 1110. For example, the framework 1108 provides various graphical user interface (GUI) functions, advanced resource management, advanced location services, etc. The framework 1108 can provide a wide range of other APIs that can be utilized by the applications 1110, some of which can be specific to a particular operating system or platform.
[0107] In the example, applications 1110 include a home application 1150, a contact 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 variety of other applications such as third-party applications 1166. According to some examples, application 1110 is a program that executes the functions defined in the program. Various programming languages such as object-oriented programming languages (e.g., Objective-C, Java, or C++) or procedural programming languages (e.g., C or assembly language) can be used to create one or more of the applications 1110 constructed in various ways. In a specific example, third-party application 1166 (e.g., a third-party application created by an entity other than a vendor of a particular platform using Android TM or iOS TM Software Development Kit (SDK) can be developed on platforms such as iOS TM 、Android TM , Mobile software running on the mobile operating system of the phone or other mobile operating system. In this example, the third-party application 1166 can stimulate the API call 1112 provided by the mobile operating system (e.g., operating system 1104) to facilitate the functions described herein.
[0108] Certain examples are described herein as including logic or multiple components, modules, or mechanisms. Modules can constitute software modules (e.g., code (1) on a non-transitory machine-readable medium or (2) implemented as a transmission signal) or hardware-implemented modules. Hardware-implemented modules are tangible units that can perform certain operations and can be configured or arranged in a certain manner. In an example, one or more computer systems (e.g., stand-alone, client, or server computer systems) or one or more processors can be configured by software (e.g., an application or application portion) to operate to perform certain operations as described herein. Hardware-implemented modules.
[0109] In various examples, hardware-implemented modules can be implemented mechanically or electronically. For example, a hardware-implemented module may include dedicated circuitry or logic that is permanently configured to perform certain operations (e.g., as a dedicated processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)). A hardware-implemented module may also include programmable logic or circuitry that is temporarily configured by software to perform certain operations (e.g., as included in a general-purpose processor or other programmable processor). It will be appreciated that the decision to mechanically implement a hardware-implemented module with dedicated and permanently configured circuitry or with temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
[0110] Therefore, the term "hardware-implemented module" should be understood to cover tangible entities, i.e., entities that are physically constructed, permanently configured (e.g., hardwired), or temporarily or temporarily configured (e.g., programmed) to operate in a specific manner and / or perform specific operations described herein. Considering an example in which a hardware-implemented module is temporarily configured (e.g., programmed), each of the hardware-implemented modules need not be configured or instantiated at any one time. For example, in the case where the hardware-implemented module includes a general-purpose processor configured using software, the general-purpose processor can be separately configured as different hardware-implemented modules at different times. Therefore, the software can configure the processor to, for example, constitute a specific hardware-implemented module at one time, and constitute different hardware-implemented modules at different times.
[0111] The module of hardware implementation can provide information to the module of other hardware implementation and receive information from the module of other hardware implementation.Therefore, the module of described hardware implementation can be regarded as being coupled in communication.In the case of multiple such hardware implementation modules simultaneously, communication can be realized by signal transmission (for example, by suitable circuit and bus) connecting the module of hardware implementation.In the example that multiple hardware implementation modules are configured or instantiated at different times, the communication between the modules of such hardware implementation can be realized, for example, by storing information in a memory structure accessible to the modules of multiple hardware implementations and retrieving information in the memory structure.For example, a module of hardware implementation can perform an operation, and the output of the operation is stored in a memory device coupled to the module communication of the hardware implementation.Then, the module of other hardware implementation can access the memory device at a subsequent time to retrieve and process the stored output.The module of hardware implementation can also start the communication with the input or output device, and can operate on resources (for example, a collection of information).
[0112] The various operations of the example methods described herein may be performed at least in part by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the related operations. Whether temporarily or permanently configured, such a processor may constitute a processor-implemented module that operates to perform one or more operations or functions. In some examples, the modules mentioned herein may include processor-implemented modules.
[0113] Similarly, the method described herein can be implemented at least in part by a processor. For example, at least some operations in the operation of the method can be performed by a module implemented by one or more processors or processors. The execution of some operations in the operation can be distributed in one or more processors, not only resides in a single machine, but can be deployed across multiple machines. In some examples, one or more processors can be located in a single location (for example, in a home environment, in an office environment, or as a server group), and in other examples, the processor can be distributed across multiple locations.
[0114] The one or more processors may also operate to support 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 an example of a machine including a processor) that are accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., an application program interface (API)).
[0115] Examples may be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or a combination thereof. Examples may be implemented using a computer program product, such as a computer program tangibly embodied in an information carrier, such as a computer program in a machine-readable medium, for execution by a data processing apparatus (e.g., a programmable processor, a computer, or multiple computers) or for controlling the operation of the data processing apparatus.
[0116] The computer program may be written in any form of programming language including compiled or interpreted languages, and the computer program may 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. The computer program may be deployed to be executed on one computer or on multiple computers, the multiple computers being located at one site or distributed across multiple sites and interconnected by a communication network.
[0117] The computer system may include a client and a server. The client and the server are usually far away from each other, and usually interact through a communication network. The relationship between the client and the server is generated by means of a computer program that runs on each computer and has a client-server relationship with each other. In the example of deploying a programmable computing system, it will be understood that both the hardware architecture and the software architecture need to be considered. Specifically, it will be understood that the selection of implementing a specific function in a permanently configured hardware (e.g., ASIC), in a temporarily configured hardware (e.g., a combination of software and a programmable processor), or in a combination of permanently configured and temporarily configured hardware can be a design choice. The hardware architecture (e.g., machine) and software architecture that can be deployed in various examples are described below.
[0118] Figure 5 It is a block diagram of the following machine, in which instructions can be executed to make the machine perform any one or more of the methods discussed herein. In one example, the machine can be any of the above-mentioned devices. In an alternative example, the machine operates as a stand-alone device or can be connected (e.g., networked) to other machines. In a networked deployment, the machine can run as a server machine or client machine in a server-client network environment, or run as a peer machine in a peer (or distributed) network environment. The machine can be a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a cellular phone, a web device, a network router, a switch or a bridge or any machine that can (sequentially or otherwise) perform instructions specifying the action to be taken by the machine. In addition, although only a single machine is shown, the term "machine" should also be understood to include any combination of machines, which execute a set (or multiple sets) of instructions individually or jointly to perform any one or more methods of the methods discussed herein.
[0119] 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 that communicate with each other via a bus 1208. The machine 1200 may also 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 (or cursor control device) 1214 (e.g., a mouse), a hard disk drive unit 1116, a signal generating device 1118 (e.g., a speaker), and a network interface device 1120.
[0120] The driver unit 1116 includes a machine-readable medium 1122 on which is stored one or more sets of instructions and data structures (e.g., software) 1224 that embody or are utilized by any one or more of the methods or functions described herein. The instructions 1224 may also reside, in whole or in part, within the main memory 1204 and / or within the processor 1202 during execution thereof by the machine 1200, the main memory 1204 and the processor 1202 also constituting machine-readable media. The instructions 1224 may also reside within the static memory 1206.
[0121] Although the machine-readable medium 1222 is shown as a single medium in the example, the term "machine-readable medium" may include a single medium or multiple media (e.g., a centralized or distributed database, and / or associated caches and servers) storing one or more instructions or data instructions 1224. The term "machine-readable medium" should also be considered to include: any tangible medium capable of storing, encoding or carrying instructions 1224, or any tangible medium capable of storing, encoding or carrying data structures utilized by or associated with these instructions 1224, which are executed by the machine and cause the machine to perform any one or more of the methods of the present invention. Therefore, the term "machine-readable medium" should be considered to include, but is not limited to, solid-state memory and optical and magnetic media. Specific examples of machine-readable media include non-volatile memory, which includes, by way of example: semiconductor memory devices, such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
[0122] Instructions 1224 may also be sent or received over a communication network 1226 using a transmission medium. Instructions 1224 may be sent using a network interface device 1220 and any of a number of well-known transmission protocols (e.g., HTTP). Examples of communication networks include a local area network ("LAN"), a wide area network ("WAN"), the Internet, a mobile telephone network, a plain old telephone (POTS) network, and wireless data networks (e.g., WiFi and WiMax networks). The term "transmission medium" shall be taken to include any intangible medium that is capable of storing, encoding, or carrying instructions 1224 to be executed by the machine and includes digital or analog communications signals, or other intangible media that facilitates communication of such software.
[0123] Although examples have been described with reference to specific examples, it will be apparent that various modifications and changes may be made to these examples without departing from the broader spirit and scope of the present invention. Therefore, the specification and the drawings should be considered illustrative, rather than restrictive. The drawings forming part of this article illustrate, in a graphical and non-restrictive manner, specific examples of the subject matter that can be practiced. The examples shown are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed herein. Other examples may be utilized and derived therefrom so that structural and logical substitutions and changes may be made without departing from the scope of the present disclosure. Therefore, this specific embodiment is not understood in a restrictive sense, and the scope of the various examples is limited only by the full scope of the equivalents that the attached claims have together with such claims.
[0124] For convenience only, such examples of the subject matter of the present invention may be referred to herein individually and / or collectively as the term "invention", and if more than one invention or inventive concept is actually disclosed, it is not intended to actively limit the scope of the present application to any single invention or inventive concept. Therefore, although specific examples have been shown and described herein, it should be understood that the specific examples shown can be replaced with any arrangement calculated to achieve the same purpose. The present disclosure is intended to cover any and all adjustments or variations of the various examples. For those skilled in the art, after reading the above description, the combination of the above examples and other examples not specifically described herein will be obvious.
[0125] An abstract of the present disclosure is provided to comply with 37 CFR § 1.72 (b), which requires an abstract that will enable the reader to quickly determine the nature of the technical disclosure. The abstract is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing detailed description, it can be seen that various features are combined together in a single example for the purpose of streamlining the present disclosure. The method of the present disclosure should not be interpreted as reflecting the intention that the claimed examples require more features than those explicitly recited in each claim. On the contrary, as reflected in the appended claims, the subject matter of the invention lies in less than all the features in a single disclosed example. Therefore, the appended claims are hereby incorporated into the detailed description, wherein each claim independently serves as a separate example.
[0126] Executable instructions and machine storage media
[0127] Various memories and / or storage units may store one or more sets of instructions and data structures (e.g., software) that embody or are utilized by any one or more of the methods or functions described herein. These instructions, when executed by a processor, cause various operations to implement the disclosed embodiments.
[0128] As used herein, the terms "machine storage medium", "device storage medium", "computer storage medium" mean the same thing and may be used interchangeably in this disclosure. These terms refer to a 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. Thus, the term should be considered to include, but is not limited to, solid-state memory and optical and magnetic media, including memory internal or external to the processor. Specific examples of machine storage medium, computer storage medium, and / or device storage medium include: non-volatile memory, including, for example, semiconductor memory devices such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), FPGA, and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The terms "machine storage medium", "computer storage medium", and "device storage medium" expressly exclude carrier waves, modulated data signals, and other such media, at least some of which are covered by the term "signal media" discussed below.
[0129] Transmission medium
[0130] In various examples, a network, such as one or more portions of a network-based system, can 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 Plain Old Telephone Service (POTS) network, a cellular telephone network, a wireless network, A network, another type of network, or a combination of two or more such networks. To further illustrate, a network or a portion of a network may include a wireless network or a cellular network, wherein 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 illustration, the coupling may implement any of various types of data transmission 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, the third generation partnership project (3GPP) including 3G, fourth generation wireless (4G) networks, universal mobile telecommunications system (UMTS), high speed packet access (HSPA), world wide interoperability for microwave access (WiMAX), long term evolution (LTE) standards, other standards defined by various standard setting organizations, other long distance protocols, or other data transmission technologies.
[0131] Instructions may be sent or received over a network using a transmission medium via a network interface device and utilizing any one of a plurality of well-known transmission protocols, such as the Hypertext Transfer Protocol (HTTP). Similarly, instructions may be sent or received using a transmission medium via a coupling with a device, such as a peer-to-peer coupling. 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" should be deemed to include any intangible medium that is capable of storing, encoding, or carrying instructions for execution by a machine and includes digital or analog communication signals, or other intangible media that facilitate the communication of such software. Therefore, the terms "transmission medium" and "signal medium" should be deemed to include any form of modulated data signals, carrier waves, and the like. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in a manner that encodes information in the signal.
[0132] Computer readable medium
[0133] 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 machine storage media and transmission media. Thus, the terms include both storage devices / medium and carrier / modulated data signals. < / source-repository> < / source-image> < / tag> < / repository> < / registry>
Claims
1. A method for synchronizing a first container image list with a second container image list, the method comprising: Accessing the first container image list from a remote source, wherein the first container image listed in the first container image list includes a first tag and a first digest associated with the first tag; Accessing the second container image list from a cloud computing system registry, wherein the second container image listed in the second container image list includes a second tag and a second digest associated with the second tag; The first container image is compared with the second container image in the following manner: comparing a first tag associated with the first container image and a second tag associated with the second container image, the comparison comprising comparing prefixes associated with the first tag and the second tag, wherein the first tag is associated with a first container image having a first version number and the second tag is associated with a second container image having a second version number; Determining that the first tag matches the second tag; Based on determining that the first tag matches the second tag, comparing a first digest associated with the first container image and the second digest associated with the second container image; and Based on the comparison between the first container image and the second container image, the first container image list and the second container image list are synchronized, wherein the synchronization includes: Downloading the container image listed in the first container image list from the remote source; Creating a copy of the downloaded container image listed on the first container image list; pushing a first one of the copies of the downloaded container image to a first repository associated with the cloud computing system registry, the first repository having a first repository tag of the second tag and a first repository digest of the second digest, wherein the first copy is pushed when there is a mismatch between the first repository tag and one of the first tags or a mismatch between the first repository digest and one of the first digests; and Pushing a second one of the copies of the downloaded container image to a second repository associated with the cloud computing system registry, the second repository having a second repository tag of the second tag and a second repository digest of the second digest, wherein the second copy is pushed when there is a mismatch between the second repository tag and one of the first tags or a mismatch between the second repository digest and one of the first digests.
2. The method according to claim 1, wherein: When a match occurs between the first tag and the second tag during the comparison, a first digest in the first digest is compared with a second digest in the second digest.
3. The method according to claim 2, wherein: The first digest includes a hash, and the second digest includes a hash that matches the first digest hash, and the synchronizing is performed based on the first digest hash matching the second digest hash.
4. The method according to claim 1, wherein: 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 on the second container image list; downloading from the remote source an instance of the container image that is listed on the first container list but not listed on the second container image; and Synchronizing the first container image list with the second container image list includes: in response to determining that the container image listed on the first container list is not listed on the second container image list, adding the container image listed on the first container list and not listed on the second container image list to a repository associated with the cloud computing system registry.
5. The method according to claim 1, wherein: Comparing the first container image with the second container image further includes: Compare the first version number with the second version number; 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, downloading an instance of the first container image having the first version number from the 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 is different from the second version number, adding the first container image to a repository associated with the cloud computing system registry.
6. The method according to claim 5, wherein: The first version number corresponds to a first alphanumeric string and the second version number corresponds to a second alphanumeric string, and determining that the first version number is different from the second version number includes determining that characters of the first alphanumeric string are different from characters of the second alphanumeric string.
7. A system comprising: at least one processor; as well as at least one memory, the at least one memory comprising instructions that, when executed by the at least one processor, cause the at least one processor to perform operations comprising: Accessing a first container image list from a remote source, wherein a first container image listed in the first container image list includes a first tag and a first digest associated with the first tag; Accessing a second container image list from a cloud computing system registry, wherein the second container image listed in the second container image list includes a second tag and a second digest associated with the second tag; The first container image is compared with the second container image in the following manner: comparing a first tag associated with the first container image and a second tag associated with the second container image, the comparison comprising comparing prefixes associated with the first tag and the second tag, wherein the first tag is associated with a first container image having a first version number and the second tag is associated with a second container image having a second version number; Determining that the first tag matches the second tag; Based on determining that the first tag matches the second tag, comparing a first digest associated with the first container image and the second digest associated with the second container image; and Based on the comparison between the first container image and the second container image, the first container image list and the second container image list are synchronized, wherein the synchronization includes: Downloading the container image listed in the first container image list from the remote source; Creating a copy of the downloaded container image listed on the first container image list; pushing a first one of the copies of the downloaded container image to a first repository associated with the cloud computing system registry, the first repository having a first repository tag of the second tag and a first repository digest of the second digest, wherein the first copy is pushed when there is a mismatch between the first repository tag and one of the first tags or a mismatch between the first repository digest and one of the first digests; and Pushing a second one of the copies of the downloaded container image to a second repository associated with the cloud computing system registry, the second repository having a second repository tag of the second tag and a second repository digest of the second digest, wherein the second copy is pushed when there is a mismatch between the second repository tag and one of the first tags or a mismatch between the second repository digest and one of the first digests.
8. The system according to claim 7, wherein: A first digest in the first digests includes a hash and a second digest in the second digests includes a hash, and when a match occurs between the first tag and the second tag during the comparison, the first digest is compared with the second digest, wherein the synchronization is performed based on the first digest hash matching the second digest hash.
9. The system according to claim 7, wherein: 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 on the second container image list; downloading from the remote source an instance of the container image that is listed on the first container list but not listed on the second container image; and Synchronizing the first container image list with the second container image list includes: in response to determining that the container image listed on the first container list is not listed on the second container image list, adding the container image listed on the first container list and not listed on the second container image list to a repository associated with the cloud computing system registry.
10. The system according to claim 7, wherein: The first version number corresponds to a first alphanumeric string, and the second version number corresponds to a second alphanumeric string, and comparing the first container image to the second container image further comprises: Compare the first version number with the second version number; determining that characters of the first alphanumeric string are different from characters of 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, downloading an instance of the first container image having the first version number from the 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 is different from the second version number, adding the first container image to a repository associated with the cloud computing system registry.
11. A non-transitory machine-readable medium having instructions embodied thereon, the instructions being executable by a processor of a machine to perform operations comprising: Accessing a first container image list from a remote source, wherein a first container image listed in the first container image list includes a first tag and a first digest associated with the first tag; Accessing a second container image list from a cloud computing system registry, wherein the second container image listed in the second container image list includes a second tag and a second digest associated with the second tag; The first container image is compared with the second container image in the following manner: comparing a first tag associated with the first container image and a second tag associated with the second container image, the comparison comprising comparing prefixes associated with the first tag and the second tag, wherein the first tag is associated with a first container image having a first version number and the second tag is associated with a second container image having a second version number; Determining that the first tag matches the second tag; Based on determining that the first tag matches the second tag, comparing a first digest associated with the first container image and the second digest associated with the second container image; and Based on the comparison between the first container image and the second container image, the first container image list and the second container image list are synchronized, wherein the synchronization includes: Downloading the container image listed in the first container image list from the remote source; Creating a copy of the downloaded container image listed on the first container image list; pushing a first one of the copies of the downloaded container image to a first repository associated with the cloud computing system registry, the first repository having a first repository tag of the second tag and a first repository digest of the second digest, wherein the first copy is pushed when there is a mismatch between the first repository tag and one of the first tags or a mismatch between the first repository digest and one of the first digests; and Pushing a second one of the copies of the downloaded container image to a second repository associated with the cloud computing system registry, the second repository having a second repository tag of the second tag and a second repository digest of the second digest, wherein the second copy is pushed when there is a mismatch between the second repository tag and one of the first tags or a mismatch between the second repository digest and one of the first digests.
12. The non-transitory machine-readable medium of claim 11, wherein: A first digest in the first digests includes a hash and a second digest in the second digests includes a hash, and when a match occurs between the first tag and the second tag during the comparison, the first digest is compared with the second digest, wherein the synchronization is performed based on the first digest hash matching the second digest hash.
13. The non-transitory machine-readable medium of claim 11, wherein: 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 on the second container image list; downloading from the remote source an instance of the container image that is listed on the first container list but not listed on the second container image; and Synchronizing the first container image list with the second container image list includes: in response to determining that the container image listed on the first container list is not listed on the second container image list, adding the container image listed on the first container list and not listed on the second container image list to a repository associated with the cloud computing system registry.
14. The non-transitory machine-readable medium of claim 11, wherein: The first version number corresponds to a first alphanumeric string, and the second version number corresponds to a second alphanumeric string, and comparing the first container image to the second container image further comprises: Compare the first version number with the second version number; determining that characters of the first alphanumeric string are different from characters of 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, downloading an instance of the first container image having the first version number from the 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 is different from the second version number, adding the first container image to a repository associated with the cloud computing system registry.