Title of Invention: Secure distributed computing using containers Abstract: A system for performing distributed computing. The system comprises a plurality of compute node resources for performing computations for the distributed computing, a management resource for managing each of the compute node resources in the plurality, and a virtual cloud network. The management resource and the plurality of compute node resources are interconnected via the virtual cloud network. Detailed Description: Part general_description_paragraphs: Part CROSS-REFERENCE TO RELATED APPLICATIONS: This non-provisional patent application is a divisional patent application of, and claims priority to, co-pending U.S. patent application Ser. No. 14/530,548, filed Oct. 31, 2014, and entitled “SECURE DISTRIBUTED COMPUTING USING CONTAINERS,” which claims priority to U.S. Provisional Patent Application Ser. No. 61/898,275, filed Oct. 31, 2013, and entitled “SYSTEM POOLS FOR LIMITLESS SECURE NODE CONTAINER ASSOCIATION AND PROCESS DISTRIBUTION,” with the entire disclosures of the above-identifiedpatent application and the provisional patent application being incorporated herein by reference. Part BACKGROUND: Part 1. Field of the Invention: The present invention relates generally to distributed computing. In more detail, embodiments of the present invention are directed to a system, a method, and a computer program for facilitating secure distributed computing via a plurality of compute nodes interconnected over a virtual cloud network. Part 2. Description of the Prior Art: It has previously been contemplated to use a distributed computing network to allow computing devices interconnected over the network to perform computing tasks that would not be generally feasible with individual computing devices. With the combined computing power of the interconnected computing devices, complex and time-consuming computing tasks can be performed quite efficiently. Furthermore, if properly configured, the computing devices of the network can perform such computing tasks using resources that would otherwise remain unused. For example, during the lifetime of many computing devices, much of the computing devices processing and memory capacity remains idle, and thus, wasted. Nevertheless, even given the benefits of distributed computing mentioned above, such benefits have, until now, remained out of reach because for several reasons. First, previously-contemplated distributed computing methods have failed to incorporate systems that allow computing devices of differing types (e.g., different underlying hardware and software) and/or computing devices being connected on differing networks to be interconnected for purposes of performing distributed computing. For example, until now, it has been difficult to facilitate computing devices that run different types of operating systems to work together to perform distributed computing. Additionally, until now, previous distributed computing methods have failed to provide adequate protection and security for the distributed computing tasks being performed and for the data on which such distributed computing is being performed. Accordingly, there remains a need for a system, a method, and a computer program for facilitating distributed computing via a plurality of compute node resources interconnected over a virtual cloud network, with such system, method, and computer program facilitating distributed computing by networks of computing devices of generally any type and in an entirely secure manner. Part SUMMARY OF THE INVENTION: Embodiments of the present invention include a system for performing distributed computing. The system comprises a plurality of compute node resources each comprising application containers for performing computations for the distributed computing, a management resource for managing each of the compute node resources in the plurality, and a virtual cloud network. The management resource and the plurality of compute node resources are interconnected via the virtual cloud network. In another embodiment of the present invention, there is provided a system for performing distributed computing. The system comprises a plurality of compute node resources for performing computations for the distributed computing. The compute node resources are each embodied as one or more application containers executed by a computing device. The system further comprises a management resource for managing each of the compute node resources in the plurality, wherein the management resource comprises a container registry containing a plurality of application containers. The system further comprises a virtual cloud network, with the management resource and the plurality of compute node resources being interconnected via the virtual cloud network. In still other embodiments of the present invention, there is provided a method for performing secure distributed computing. The method includes the initial step of encrypting a data set using a homomorphic encryption algorithm. A next step includes providing the encrypted data set to the one or more compute node resources. A next step includes providing application containers to one or more compute node resources, with the application containers being configured to process the encrypted data set to obtain a processed encrypted data set. A next step includes receiving the processed encrypted data set from the one or more compute node resources. A final step includes decrypting the processed encrypted data set to obtain a decrypted processed data set. Part DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS: Detailed embodiments of the present invention are disclosed herein; however, it is to be understood that the disclosed embodiments are merely exemplary of the invention, which may be embodied in various forms. Therefore, specific structural and functional details disclosed herein are not to be interpreted as limiting, but merely as a basis for the claims and as a representative basis for teaching one skilled in the art to variously employ the present invention in virtually any appropriately detailed structure. System Embodiments of the present invention are directed to a system, a computer program, and a method for performing distributed computing. As used herein, distributed computing refers to the use of one or more computing resources to perform any type of computational application. Examples of such applications may include data processing (e.g., big-data processing), cloud computing, peer-to-peer networking, content distribution network, resource-scavenging, web-crawling, distributed databases, and the like. With reference to FIG. 1, a system 100 configured according to embodiments of the present invention is illustrated. The system 100 comprises a management resource 102 and a plurality of compute node resources 104 all interconnected on a virtual cloud network 106. As such, the system 100 facilitates distributed computing by providing for the management resource 102 to (1) manage the virtual cloud network 106, and (2) provision, distribute, and manage computing applications provided for execution via the compute node resources 104. In more detail, the management resource 102 may comprise one or more electronic resources configured to provide various services that facilitate operation of the system 100. The electronic resources may be in the form of one or more computer programs executable from and/or hosted on one or more computing devices. As used herein, computer programs include what are generally known as instructions, commands, software code, executables, applications (“apps”), and the like. In certain embodiments, the master node resource 102, or portions thereof, may be implemented as one or more container applications, as will be described in more detail below. The computing devices from which the management resource 102 is hosted may include any device, component, or equipment with one or more processing elements and/or memory elements, such as servers, work stations, desktop computers, laptop computers, palmtop computers, tablet computers, smartphones, or the like. In some embodiments, all of the electronic resources of the management resource 102 may be hosted on a single computing device. However, in other embodiments, the one or more electronic resources of the management resource 102 may each be hosted on separate computing devices that are connected via a network, or networks. Regardless, the processing elements may include processors, coprocessors, microprocessors, microcontrollers, field programmable gate arrays, and the like, or combinations thereof. The memory elements may be capable of storing or retaining the computer program and may also store data, typically binary data, including text, databases, graphics, video, combinations thereof, and the like. The memory elements may also be known as a “computer-readable storage medium” and may include random access memory (RAM), read only memory (ROM), flash drive memory, solid-State drives (SSD), secure digital cards (SD cards), floppy disks, hard disk drives, optical storage medium such as compact discs (CDs or CDROMs), digital video disc (DVD), Blu-Ray, and the like, or combinations thereof. In addition to these memory elements, the computing devices and/or server devices may further include file stores comprising a plurality of hard disk, network attached storage, or a separate storage network. Similarly, the compute node resources 104 may comprise an electronic resource in the form of one or more computer programs executable from and/or hosted on one or more computing devices. In certain embodiments, the compute node resources 104, or portions thereof, may be implemented as one or more container applications, as will be described in more detail below. The computing devices of the compute node resources 104 may include any device, component, or equipment with one or more processing elements and/or memory elements, such as server devices, work stations, desktop computers, laptop computers, palmtop computers, tablet computers, smartphones, or the like. In other embodiments, the computing devices may comprise various unique computing devices, or other device-enabled equipment, such as wearable technology (e.g., digital wrist-watches, Google™ Glass™, or the like), digital video cameras, personal electronic devices (e.g., iPods™, personal digital assistants (PDAs), or the like), smart devices, smart appliances and other appliances (e.g., refrigerators, stoves, dishwashers, washers/dryers, or the like), satellites, spacecraft, motorcycles, automobiles, helicopters, airplanes, rockets, missiles and other weapons, submarines, unmanned aerial vehicles (UAVs) (i.e., aerial drones), security cameras, video gaming consoles (e.g., PlayStation™, Nintendo™, X-Box™, Game Boy™), computer graphical displays, televisions, video projectors, media and entertainment units (e.g., digital video disc (DVD), Blu-Ray™, bitcoin-miner devices, digital video recorder (DVR), cable boxes, or the like), stereo tuners, audio speakers, ceiling fans, smart meters (and other advanced metering infrastructure (AMI)), smart sensors, medical equipment, personal implants, emergency monitoring systems devices, home automation systems devices, smart traffic control systems devices, smart cities devices, electronic toll collection systems devices, logistic and fleet management systems devices, lamps and other lighting displays, thermostats, furnaces, hot water heaters, fiber to the premises (FTTP) modems/routers/switches, cable modems/routers/switches, digital subscriber line (DSL) modems/routers/switches, or any form of network device including but not limited to routers, switches, and modems, and the like. As may be apparent, certain of the computing devices listed above (e.g., laptops, smarthphones, etc.) may generally be considered personal computing devices, as such computing devices are generally owned and/or operated by individuals. Alternatively, certain of the computing devices listed above (e.g., FTTP modems/routers/switches, or other devices) may generally be considered managed computing devices, as such computing devices may generally be owned and/or operated by businesses for use by individuals. In some embodiments, businesses may give the device to the individual for free, or otherwise subsidized for ownership. Regardless, the processing elements associated with the above-described computing devices may include processors, coprocessors, microprocessors, microcontrollers, field programmable gate arrays, application-specific integrated circuits (ASIC) and/or system-on-a-chip (SoC), and the like, or combinations thereof. In certain preferred embodiments, certain processing functions may be performed by graphics processing units (GPUs), or application-specific integrated circuits ASICs, which may provide for specialized processing capabilities, as will be described in more detail below. The memory elements may be capable of storing or retaining the computer program and may also store data, typically binary data, including text, databases, graphics, video, combinations thereof, and the like. The memory elements may also be known as a “computer-readable storage medium” and may include RAM, ROM, flash drive memory, floppy disks, solid state drives, hard disk drives, optical storage medium such as CDs or CDROMs, DVDs, Blu-Ray, and the like, or combinations thereof. In addition to these memory elements, the computing devices may further include file stores comprising a plurality of hard disk, network attached storage, a separate storage network, and other file store types. The management resource 102 and the plurality of compute node resources 104 of the system 100 are connected via the virtual cloud network 106, which is a virtual network layered over a physical network infrastructure. In certain embodiments, the virtual cloud network 106 may be a virtual network layered over one or more additional virtual networks. Such other virtual networks may be layered on still other virtual networks, virtual machines, and/or on physical networks. In certain embodiments, the virtual cloud network 106 (e.g., layer or layers) may be a software-defined network, or networks, the establishment of which will be described in more detail below. The virtual cloud network 106 may comprise a communications network comprising wired or wireless networks, such as local area networks (LANs), metro area networks (MANs), wired local area networks (WLANs), Controller Area Networks (CANs), personal area networks (PANs), global area networks (GANs), storage area networks (SANs), or wide area networks (WANs), as well as the Internet, or cloud networks, and the like. The physical network infrastructure underlying the virtual cloud network may include servers, routers, switches, wireless receivers and transmitters, and the like, as well as electrically conductive cables or optical cables. In some embodiments, the physical network infrastructure may include virtual or partially-virtual components, such as virtualized devices or virtual machines running on physical networks or machines (i.e., bare metal). In certain preferred embodiments, the physical network infrastructure may be implemented on a fiber optic network, or other broadband network, which provides for high bandwidth, low latency data transfer. In certain embodiments, as illustrated in FIG. 1, the virtual cloud network 106 may be implemented as a network overlay or network overlay mesh 108 that interconnects each of the nodes (i.e., the management resource and the compute node resource) in the system 100. Such a mesh 108 may comprise one or more software defined networks. In some embodiments, the network overlay mesh 108 may be a subset network (e.g., a subnet, virtual LAN, etc.) of the virtual cloud network 106. As an exemplary illustration, if the virtual cloud network 106 connects a management resource and ten compute node resources, a network overlay mesh 108 may connect the management resource and only five of the compute node resources. As such, embodiments provide for the system 100 to comprise network overlay meshes 108, each of which may include any permutation of node subsets in one or more virtual cloud networks 106. Regardless of the arrangement of nodes in the network overlay mesh 108, embodiments of the present invention provide for each of the nodes in the mesh 108 to connect with every other node either directly or indirectly. For one example, in certain embodiments, a first node may be unable to communicate directly with a second node because a direct route between the nodes does not exist, or is not permitted by a given network configuration. Nevertheless, embodiments provide for communication between the first and second (or more) nodes indirectly through one or more intermediary nodes. In certain embodiments, the virtual cloud network 106, including each of the mesh overlays within, may be implemented as and/or over an encrypted network. In such an encrypted virtual cloud network 106, every connection between nodes may be encrypted via Internet protocol security (IP Sec), and/or by other common encryption technologies, such that the virtual cloud network 106 effectively operates as a secure peer-to-peer (P2P) network. It is possible, however, to configure the system 100 in a client-server configuration using the management resource 102 comprising one or more servers with which the compute node resources 104 interact as clients on the virtual cloud network 106. It is also possible to configure the system 100 in a star-network configuration using the management resource 102 as a hub or switch through which the compute node resources 104 interact on the virtual cloud network 106. It is also possible to implement the virtual cloud network 106 with a hybrid configuration of mesh overlay, star-network, client-server configurations, and other configurations, for instance where some compute node resources 104 may interact with other compute node resources 104 through the management resource 102, while other compute node resources 104 may interact directly with each other. Given the configuration of the system 100 provided above, embodiments of the present invention provide for distributed computing via an unlimited combination of standardized and/or custom-tailored applications. To enhance such distributed computing, such applications may generally come in the form of software containers (containers). As used herein, containers are defined as self-contained applications (i.e., computer programs) that include all necessary dependencies required for execution and operation. Such dependencies may include binaries, libraries, modules, or other fundamental information, configurations, and identities necessary for execution of the applications. For example, the containers may include their own internally addressable IP addresses and port numbers, such that the containers are externally addressable such as through transmission control protocol (TCP) and the user datagram protocol (UDP) ports. As such, containers differ from standard virtual machines that typically require and include their own operating systems. Instead, the containers can execute and function based on a shared, single instance of an operating system, such as the operating system's kernel. Thus, containers can be deployed, executed, and ran independently on a plurality of independent nodes, including nodes associated with the management resource and the compute node resources. Such containers may be implemented upon current, or yet-to-be-developed common intercloud standards which define compatibility with and portability of said containers to other networks, such as cloud networks which are peered with one another so that all containers implemented therein may be implemented upon or transferred between various cloud networks. For instance, the virtual cloud network 106 may be used as a cloud-bursting platform where a public or private cloud may deploy application containers to the virtual cloud network 106 when the private cloud has run out of local public or local private computing resources. Likewise in turn, a public or private cloud network may be used as a cloud-bursting platform where a virtual cloud network 106 may deploy application containers to a public or private cloud network when the virtual cloud network 106 has run out of compute node resources. Returning to the management resource 102, as illustrated in FIG. 2, the management resource 102 comprises the electronic resource that includes a customer portal 110, an admin portal 112, a container registry 114, and a node tracker 116. In certain embodiments, the management resource 102 will also include one or more master node resources 118 that connect the management resource 102 with the virtual cloud network 106. In certain instances, such as illustrated in FIG. 2, embodiments may provide for a plurality of virtual cloud networks 106 to exist. In such instances, each of the virtual cloud networks 106 would connect with the management resource 102 via an individual master node resource 118. In some embodiments, multiple master node resources 118 may be implemented, either as hot stand-bys for the purpose of high availability fail-over, or for the separation or isolation of individual master node services onto separate master node resources 118. In some embodiments, the master node resources 118 will be provisioned by the management resource 102 on demand, as the need for new or virtual cloud networks 106 arises. The customer portal 110 provides a customer user with access to the management resource. The customer portal 110 may be presented in the form of a web portal, an application programming interface (i.e., an API), a virtual private network, secure shell (SSH), a file transfer protocol (FTP or SFTP) connection, or the like. Similarly, the admin portal 112 provides access to the management resource 102 by an administrator and may be presented in the form of a web portal, an API, a virtual private network, secure shell (SSH), a file transfer protocol (FTP or SFTP) connection, or the like. The container registry 114 is an electronic resource that includes an associated memory storage location that includes all of the container applications necessary for implementation of embodiments of the present invention. The container registry 114 may be implemented in a containerized fashion, as will be discussed in more detail below. As will also be discussed in more detail below, the container registry 114 may also include a registry interface that allows customer users to create and/or select the appropriate container(s) for use. In some embodiments the registry interface may be accessed or configured from the customer portal 110. Typically, embodiments of the present invention will include at least four different types of container applications, including virtual switch containers, base containers, general application containers, and accelerated application containers. The virtual switch containers enable the interconnection of nodes (i.e., compute node resources and master node resources) within the virtual cloud network 106 and/or the network overlay meshes 108. As such, the virtual switch containers are configured to implement the network and/or software-defined network functionality which enables the virtual cloud network 106 and/or the network overlay meshes 108. While the virtual switch containers include preset functionalities to efficiently and securely provide common virtual cloud network 106 configurations, it is understood that the virtual switch containers can be remotely modified to implement a plurality of unique network configurations, as may be required. Base containers comprise a suite of container applications that collectively provide the functionality necessary to implement distributed computing via the virtual cloud network 106. In certain embodiments, the base containers will provide for all features and functionality necessary for the implementation of the system 100 as a platform-as-a-service (PaaS). As used herein, PaaS refers to an application execution environment, such that applications (e.g., containers) can be run on the virtual cloud network 106 without the cost and complexity of buying and managing additional underlying hardware and/or software layers that may otherwise be required. However, the use of existing infrastructure to implement a PaaS or other platform on a virtual cloud network does not preclude the acquisition and provisioning of dedicated, or otherwise shared, hardware and/or software layers, as deemed necessary. It is also possible to implement an infrastructure-as-a-service (IaaS) functionality, which may include physical machines or virtual machines, in addition to the virtual cloud network 106, from which applications can be executed and ran. Certain other embodiments provide for the base containers to offer a hybrid PaaS/IaaS functionality. In certain embodiments, the base containers include separate containers that each together provide the following PaaS functionality: API-controlled PaaS controller, platform state database, platform log server, key value cache and store, platform state store, container creation tool, application container registry 114, application container router, etc. Certain embodiments may include other functionalities necessary to support, modify or interact with said functionalities. Such embodiments may also combine various aspects of said functionalities, or other PaaS functionalities. The API-controlled PaaS controller is the central control mechanism for a PaaS based upon a virtual cloud network 106. It is controlled by an API that allows remote interaction typically via secure shell (SSH) or hypertext transfer protocol secure (HTTPS) protocols. The API-controlled PaaS controller provides base PaaS configurations; authentication, authorization, and accounting (AAA); API call functionality; management of virtual cloud network 106 virtual switch containers; user and group management including secure user authentication; and the like. The platform state database is configured to maintain the state of the PaaS including duplication of the PaaS state data to the platform state store. The platform log server collects log data from all PaaS components, and may be queried by users, or by machine-automated calls. The key value cache and store is used to store logs and cache data which may support various operations of the PaaS. The platform state store is a distributed object store which maintains backups of the platform state database, and other platform state data. The container creation tool pulls the latest code tree, compiles the code, builds the general application and/or base containers, and stores the containers onto the application container registry, for later deployment onto the virtual cloud network 106. The container registry 114 stores containers that may be deployed onto the virtual cloud network 106 for execution. The application container router directs distribution of containers and/or traffic to containers, as appropriate. The general application containers contain any application that may be desired to operate on the virtual cloud network. These applications are unlimited in scope, and may consist of any application that may be run upon a conventional computing device and/or network. For example, the general application containers may include the applications that are to be executed via the compute node resources 104 for purposes of performing distributed computing. Tasks involving distributed computing that may be implemented via execution of the general application containers include distributed computing, cluster processing, parallel processing, high-throughput processing, high-performance processing, grid processing, opportunistic processing, Internet-of-things and Internet-of-everything processing networks, smart city architectures including living labs, resource scavenging, cloud computing, monolithic application processing, super-computing, peer-to-peer networking and applications, or the like without limitation. In some embodiments, the container registry 114 will include a plurality of predefined general application containers that provide common computing solutions for the customer user. In other embodiments, the container registry 116 will contain customized general application containers that are created by customer users. As will be described in more detail below, the customer user can create such customized general application containers via interaction with the customer portal 110. Finally, the accelerated application containers will provide the same functionality as general application containers, but will, furthermore, facilitate accelerated processing to the underlying application. In particular, such accelerated processing may be facilitated by GPUs and/or ASICs included within the computing devices of the compute node resources 104. As such, once a computing device has obtained an accelerated application container, access to the GPU(s) and/or ASICs of the computing devices may be provided to the functionality of the accelerated application container directly from the underlying operating system of the computing device. Furthermore, the accelerated application containers can be created and/or selected by customer users in the same way that the general application containers are created and/or selected, as will be later discussed. In other embodiments, such as when the computing device includes a hypervisor, the functionality of the accelerated application container will be provided access to the computing device's GPU(s) and/or ASICs, as though natively, by utilizing a PCI pass-through or other feature provided by the underlying hypervisor. In other preferred embodiments, other hardware elements may be utilized. For example, rDMA-enabled devices may be utilized to enhance networking performance in order to facilitate direct memory access between two or more networked computing devices, at low latencies. Such direct memory access acceleration (implemented between two or more computing devices) may provide direct remote low-latency access not only to memory, but also to other hardware components such as processor, GPU, disk drive, or the like. Such scenarios result in significantly increased performance and efficiency of the system 100. Finally, the node tracker 116 is an electronic resource that facilitates and manages each of the virtual cloud networks 106 and/or network overlay meshes 108 that are established by the management resource 102. In particular, each computing device that registers as a compute node resource 104 will register with the node tracker 116. The node tracker 116 then continuously (1) tracks all compute node resources 116 on the virtual cloud network 106 and/or each of the network overlay meshes 108, (2) obtains metrics on the computing devices of the compute node resources 104 on the virtual cloud network 106 and/or each of the network overlay meshes 108, and (3) performs speed tests and diagnostics on the networks such as to obtain bandwidth and/or latency metrics for the virtual cloud network 106 and/or each of the network overlay meshes 108. As such, the node tracker 116 maintains connectivity between each of the compute node resources 104 and the management resource 102 on the virtual cloud network 106 and/or each of the network overlay meshes 108, so as to facilitate and maintain data transfer between each of the compute node resources 104 and the management resource 102. Operation In operation, the system 100 facilitates distributed computing by one or more of the compute node resources 104 connected to the management resource 102 via the virtual cloud network 106. To begin, a customer user accesses the management resource 102 via the customer portal 110. As used herein, a customer user is a user that requires the distributed computing services of the system 100 to perform one or more tasks. As purely illustrative example, a customer user could include a corporation or a business entity that has a significant amount of data (i.e., “big data”) that must be processed. For instance, the customer user may be a marketing firm that has access to a significant amount of consumer data, such as names, ages, addresses, purchasing data, or the like for a large plurality of consumers. If the marketing firm requires significant processing power/time to analyze such consumer data, the marketing firm may use embodiments of the system 100 to perform such processing. It should be understood, however, that the above-provided example was purely exemplary, and embodiments of the present invention can be used for performing computing of any kind. Once the customer user has accessed the management resource 102, the customer user will be required to register with the management resource 102. If it is the first time the customer user has accessed the management resource 102, the customer user may be required to create (or will be provided with) a customer user account. The customer user can then register for the system 100 to perform one or more distributed computing tasks. The customer can register for the system 100 to perform standard, predefined computing tasks, which may be performed using one or more of the predefined general application containers. Such predefined computing tasks may be tasks that are used generally or repetitively by one or more customer users. As such, the management resource 102 provides for a plurality of general application containers to be stored in the container registry 114 for use by customer users as needed for a particular computing task or tasks. In other instances, the customer can register for the system 100 to perform a unique, customized computing task, which may be a task that is performed by the customized general application containers. Such customized computing tasks may be tasks that are used by few customer users and/or used to perform unique distributed computing tasks. In certain embodiments, the management resource 102 may provide customer users with a container creation tool that allows customer users to create the customized general and/or accelerated application containers that are required to perform their unique, customized computing tasks. In addition, the container creation tool allows customer users to create base containers, or containers within a base container, or containers, which define one or more PaaS configurations that can be implemented on the virtual cloud network 106. Such a container creation tool may be presented in the form of a user interface that is accessible via the customer portal 110. The container creation tool will allow the customer user to create a customized general application container by compiling the source code of all desired applications, including all of the functions and features and dependencies required for the customized computing task, while ensuring that the container conforms to all requirements for execution via the system 100. For instance, the container creation tool may include a list of a plurality of functions and features from which the customer user can select. In other embodiments, the container creation tool will allow the customer user to simply drag and drop each of the functions and features that will be required for the customer user's customized computing task. In some embodiments, the customer portal 110 will allow customer users to create and deploy to the container registry 114 application containers comprising open source code, or any other source code, which has been custom-rolled (and/or custom-compiled) with specific features or configurations included or excluded, as desired by the customer user. The location of the source code to be compiled and containerized, including all dependencies, will be specified during the container creation process. The source code location is any electronically accessible storage medium, without limitation, where embodiments typically include: a file directory on the customer users workstation, any common file format uploaded by the customer user (such as RPM, tar-ball, Debian packages, etc), or remote source code repositories, such as GitHub, CVS, SVN, or the like, without limitation. Upon selecting the source code, functions and features required for inclusion in the customized, general application container, or accelerated application container, the container creation tool will create the container. Thereafter, the customized, general application container will be transferred to and stored within the container registry 114 until time for deployment to one or more of the compute node resources 104 for purposes of performing the unique, customized computing task. All newly submitted containers, whether created with the container creation tool, or created by any other means, or otherwise uploaded directly to the container registry 114, will be assigned various attributes, such attributes including public or private, depending upon whether the customer user prefers to share or keep private said containers, and other attributes without limitation. Within the customer portal 110, the customer user may define custom application suites, which are a group of one or more preferred applications. The customer user may also define, if allowed by the management resource 102 administrator, custom platform suites. The custom application suites and custom platform suites are implemented by the use of application suite templates and platform suite templates. For example, when a customer user wishes to deploy one or more containers containing one or more applications onto the virtual cloud network 106, the user may select preferred general application containers from a list available application containers hosted on the container registry 114 and which may be dragged and dropped, or other wise added into an application suite template, which is a list of preferred general applications. Thereafter, the newly created application suite template may be added to a list of application suite templates from where it may be quickly selected and deployed at any time using the customer portal 110. In like exemplary manner, when a customer user wishes to deploy a unique, customized platform, such as a customized PaaS or IaaS, comprised of one or more platform components which are comprised of one or more base containers, the customer user may use the customer portal 110 to select preferred base containers from a list of available base containers hosted on a container registry and which may be dragged and dropped, or other wise added into a platform suite template, which is a list of preferred base containers. Thereafter, the newly created platform suite template may be added to a list of platform suite templates from where it may be quickly selected and deployed at any time using the customer portal 110. Likewise a master quite template may be defined which is a combination of preferred one or more application suite templates combined with one or more platform suite templates. The master suite template may then be stored in a list to be selected during future provisioning of virtual cloud networks 106. The customer user may make additional configurations, which define the relationship between items contained within with the application suite templates and platform suite templates. For instance, containers within an application suite template may be stitched together, allowing or preventing network access between respective containers. Likewise, certain platform suite templates may be configured to allow or disallow the cross-interaction of features between each base container, without limitation. Also likewise, configurations may be made allowing or disallowing certain cross-interactions between the different templates which may be included within the master suite templates, without limitation. In addition to selecting the appropriate application container to use for performing within the system 100 desired tasks, the customer user will be required to identify, if necessary, a location of task data that is required for the computing task to be performed. In certain embodiments, the task data itself, or a task data uniform resource identifier (URI), can be stored on a data storage element located within and/or associated with the management resource 102. In other embodiments, such as illustrated in FIG. 3, the task data may be stored on one or more remote data storage locations 120, which are located externally from the virtual cloud network 106 and which are accessible by the management resource 102 or by the compute node resources 104 via one or more external networks. In still other embodiments, as is illustrated by FIG. 3, the task data may be stored on one or more virtual cloud network (VCN) data storage locations 122, which are storage locations located within and forming part of the virtual cloud network 106 and which are therefore directly accessible by the management resource 102 or by the compute node resources 104. Upon the customer user selecting the appropriate application container that is to be used for performing distributed computing tasks, and upon the customer user identifying the location of the task data that is to be used in the computing task (if necessary), the computing task is nearly ready to be performed. First, however, the virtual cloud network 106 must be established with one or more compute node resources 104 upon which to perform the computing for the computing task(s). As previously described, the compute node resources 104 are electronic resources that are executed and run by various types of computing devices that are owned, controlled, and/or operated by users. As used herein, such users will be referred to as participant users. To register their computing device(s), the participant user may, in some embodiments, access the management resource 102, such as through the customer portal or a public website. Upon accessing the management resource 102, the participant user will download and install a client software, which allows the participant user's computing device to register with the management resource 102. It is also understood that the client software may install a hypervisor which hosts one or more operating systems, for one example, a lightweight operating system discussed in more detail below, on which the containers of embodiments of the present invention can be executed and ran. Regardless, such downloading of the client software will generally be required in instances where the participant user is using a personal device, as previously described, for enrolling as a compute node resource 104. In other embodiments, as will be discussed in more detail below, the computing devices of the compute node resources 104 will comprise managed devices, which may be pre-installed with the client software. Regardless, via the client software, the participant user in some embodiments may specify resources of the participant user's computing device that will be made available to the system 100. For example, the participant user can specify what portion of the computing device resources will be made available, such as (1) what portion of the processors (CPUs, ASICs, and/or GPUs), including how many cores or partial cores of the processors, (2) how much processing time, (3) how much RAM, (4) how much hard drive memory (5) how much bandwidth and/or (6) access to other hardware resources on the computing device without limitation (such as sensors, cameras, servo control mechanisms, or any other electronically controllable hardware resources, etc.) will be made available to use for, or within, distributed computing via the system 100. In some embodiments, it is understood that the participant user will allow for all of the computing device resources to be made available at all times. In other embodiments, the participant user may also specify that the computing device resources will be made available for certain time periods (e.g., sometimes-on-sometimes-off) or only when the computing device resources are idle. During idle time, the selected computing device resources will be made fully available to the system 100, whereas when the computing device is in use by a participant user, the computing device resources will be made entirely, or partially unavailable. Partial availability may be specified by the participant user, as a reduced portion of the maximum resources offered to the system 100 when idle. In this way, the system 100 will be allowed to continue utilizing the resources at a reduced level that is acceptable to the participant user. If the reduced portion of computing device resources is less than the compute node resources 104 minimum requirements, the compute node resource 104 may use the opportunity to perform checkpoints, or system state transfers in order to relocate the compute node resource 104 (e.g. a container or virtual machine image) to another compute device on the virtual cloud network. It may be preferable to collect certain computing device 104 metrics for fine-tuning the relocation, execution and operation of application containers. For example, certain container applications that employ distributed computing architectures can make use of real-time metric information to further increase the efficiency of fault tolerance mechanisms within applications that are executing upon the virtual cloud network 106. For one example, embodiments of the present invention may utilize computing device outage histories (such as system crashes, sleep schedules, and non-idle times) to prioritize tasks to be run on the most-available computing devices at the most available time of day, as well as predict, pre-empt and respond to real and potential future outages within the distributed architecture. In one exemplary embodiment, distributed computing tasks which implement let-it-crash fault tolerance (ie. highly fault tolerant) could be deployed onto the historically least-stable systems, whereas computing tasks which are less fault tolerant may be deployed to the most-stable system first. In certain embodiments, after a participant user downloads the client software and specifies the resources of the participant user's computing device, the client software may download various software components that are executed to setup the compute node resources on the computing device. These software components may often include a virtual machine hypervisor, a lightweight operating system which is booted by the hypervisor and which contains a container system in which one or more of the application containers (e.g., the base containers implementing a PaaS, the virtual switch container, one or more general application containers, and/or accelerated application containers) from the container registry of the management resource 102. As previously mentioned, the base containers may implement a PaaS, which allows the participant user's computing device to act as a compute node resource 104 by allowing the computing device to execute and run one or more of the virtual switch containers and/or general application containers upon one or more lightweight operating systems which run upon one or more hypervisors, or upon bare metal. As such, the execution of the base node containers allows the compute node resources 104 to act as one or more separately network-addressable software applications, including but not limited to, application containers, base containers, operating systems, virtualized or emulated operating systems, or any other software resource executing at any position within a software stack and at any layer of virtualization (or upon bare metal). In certain embodiments, as depicted in FIG. 4, the containers of the compute node resource 104 are executed and ran on a lightweight operating system 130 implemented upon a physical, hardware platform 132 (i.e., bare metal) of a computing device. FIG. 4 also depicts optional layers of embodiment, where a hypervisor 134 and/or host operating system 136 may exist between the lightweight operating system 130 and the hardware platform 132. Other potential combinations of software virtualization, emulation and containers may be implemented as additional layers, and are not depicted by FIG. 4. In certain embodiments, the lightweight operating system 130 may be implemented as lightweight POSIX-compliant operating systems containing the minimal services necessary to implement the lightweight operating system 130 and support each of the containers of the system 100. Lightweight operating system 130 services include but are not limited to an Init system (i.e., a Unix-based OS), which provides execution of lightweight operating system 130 services, a distributed configuration management system providing various functions such as network membership consensus, and a container system which supports and executes a plurality of containers. As mentioned above, the client software installed by the participant user (or pre-installed in the case of managed devices) may download the software components, as needed including a hypervisor (as necessary), lightweight operating system, base containers, applications containers, virtual switch container, etc. Together, such components will initiate locally on the computing resource and first establish a network connection in order to register the participant user's compute node resource 104 with the node tracker 116 for placement of the participant user's compute node resource 116 within the virtual cloud network 106 and, in certain embodiments, within a particular virtual overlay mesh 108 within the virtual cloud network 106. In certain embodiments, each compute node resource 104 will be assigned an identification (ID) by which the compute node resource 104 can be identified or tracked, such as by the node tracker 114, or by compute node resources 102 on a virtual cloud network 106. Within the compute node resource 104, the virtual switch container manages connectivity with the virtual cloud network 106 and/or network overlay mesh 108. As shown in FIG. 5, a compute node resource 1 is depicted in a common embodiment where the compute node resource is a member of a LAN protected from a WAN by network address translation (NAT) 140. In order to maintain connections directly with the other compute node resources 104 on the virtual cloud network 106 or the network overlay mesh 108, the virtual switch container on each compute node resource coordinates with the node tracker 116 and/or the master node 118 on the management resource 102 in order to implement a plurality of NAT hole-punching techniques. Certain hole-punching techniques may include the use of session traversal utilities for NAT (STUN), traversal using relays around NAT (TURN), Interactive Connectivity Establishment (ICE), or the like. Additional methods, such as universal plug and play (UPnP) may also be utilized to manage NAT traversal, when available. After registering with the node tracker 116, the compute node resources 104 will periodically report back detailed metrics of the computing device's resources that are currently available for use to the system 100, such as the type and quantity of (1) processor (CPU and/or GPU), (2) processing time, (3) random-access memory, (4) hard-drive memory, (5) geographic location, and/or (6) bandwidth. The node tracker 116 is also configured to perform network speed tests and obtain bandwidth and latency metrics for the system 100, as previously mentioned. It is understood, that the present embodiment significantly benefits from high bandwidth and low latency connections, such as FTTP. However, compute node resources 104 connected to the virtual cloud network 106, and/or a specific overlay mesh 108, with slower connections may be useful in certain embodiments that do not require exceptionally high performance network resources. In additional embodiments, the computing device metrics will be utilized during provisioning of a virtual cloud network 106 by the management resource 102, such as for setting minimum performance requirements of computing devices when selecting computing devices for the deployment of compute node resources 104 on the virtual cloud network 106. Such computing device metrics are continually gathered from each compute node resource 104 and reported back to the node tracker 116, allowing for an increasingly accurate view of the available resources, performance and stability of each compute node in the virtual cloud network. Other metrics may also be collected, such as up-time, sleep operations, power continuity, system idle state, temperature, user input status and status history, unique participant user identity (ID), and other measurable metrics without limitation. In other embodiments, the compute device metrics may include a location, such as a coordinates obtained from a GPS associated with the computing device or a location obtained from an IP address. Certain metrics are useful for fine-tuning the deployment and execution of certain application containers that may be executed and ran on the virtual cloud network 106 for increased performance of distributed computing tasks, as will be discussed further below. The node tracker 116 is also configured to provide a list of compute node resources 104 to the management resource 102, including all computing device metrics. When a customer user provisions a virtual cloud network 106, the compute node resources 104 are selected, from the list by the customer user according to whatever desired metric criteria (whether manually selected or selected according to preset criteria), such as will be discussed below. The deployment of a virtual cloud network 106 begins with the provisioning of one or more master node resources 118. The node tracker 116 provides the master node resource 118 with the information necessary to establish direct IPSec tunnels with all compute node resources 104. In some embodiments, the master node resource 118 then communicates all virtual cloud network 106 configuration criteria to the virtual switch containers on each compute node resource 104. The master node resource 118 may also provide a foundation for the implementation of a network overlay mesh 108 between all compute node resources 104, while also playing a mediator role during the negotiation of connections between all members of the mesh 108 where NAT hole-punching, or other techniques, are required to overcome the inability for certain compute node resources 104 to directly negotiate with each other or difficulties in the setup of an encrypted mesh due to separation by NAT. When NAT hole-punching is not possible to implement for a given compute node resource 104, effectively preventing direct interaction with a virtual cloud network 106 or
{'bibliographic_information': "{'country': 'US', 'doc-number': '15710675', 'kind': 'B1', 'date': '20170920', 'invention_title': 'Secure distributed computing using containers'}", 'source_file': './grant/2019/ipg190402.xml', 'source_data': 'USPTO-Grant'}