# US 12,118,341 B2 · Conversion and restoration of computer environments to container-based implementations

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,118,341 B2
- Document ID: US12118341B2
- Status: Granted
- Kind: B2
- Application number: 17/665,119
- Filed: 2022-02-04
- Published: 2022-07-21
- Granted: 2024-10-15
- Earliest claimed: 2019-08-15
- Assignees: MicroStrategy Incorporated
- Applicants: MicroStrategy Incorporated
- Inventors: Clayton Myers; Brett E. Morris; Andrew Scott Mears; Shreyas Shah; Martin Lucius Bonica
- Web page: https://patentgrep.com/patent/US12118341B2

## CPC

- G06F 8/63: {Image based installation; Cloning; Build to order}
- G06F 8/60: Software deployment
- G06F 8/61: Installation
- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06F 9/44505: {Configuring for program initiating, e.g. using registry, configuration files}
- G06F 9/455: Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F 11/1451: {by selection of backup contents}
- G06F 11/1469: {Backup restoration techniques}
- G06F 11/1438: {Restarting or rejuvenating}
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Methods, systems, and apparatus, including computer programs encoded on computer-storage media, for conversion and restoration of computer environments to container-based implementations. In some implementations, an archive of configuration data for a server system is obtained, where the server system includes at least one application. A set of multiple software images is generated, where the multiple software images are generated such that they divide the functionality of at least one application among the respective containers. In generating the set of multiple software images, settings of the at least one application are identified based on the configuration data in the archive, a subset of the settings is selected for each of the software images, and the selected subsets of settings are converted into converted subsets of settings for the respective software images.

## Claims

### Claim 1

A method comprising:
storing, by one or more computers, mapping data that maps settings and data elements from source server environments to containers of destination server environments, wherein the mapping data specifies different subsets of the settings and data elements from source server environments to be used in configuring different containers of destination server environments;
obtaining, by the one or more computers, settings and data elements of a particular server environment that provides functionality that is not implemented as containers;
selecting, by the one or more computers, multiple software images to use in providing a container-based implementation of the functionality of the particular server environment, the multiple software images being selected from a repository of container software images;
for each of the multiple software images selected, using, by the one or more computers, the mapping data to select a subset of the settings and data elements of the particular server environment for configuring the software image; and
applying, by the one or more computers, the selected subsets of the settings and data elements to the corresponding software images in the set of multiple software images, wherein the set of multiple software images is configured to operate together to provide the functionality of the particular server environment when the set of software images are run concurrently as containers.

### Claim 2 (depends on 1)

The method of claim 1, further comprising creating a second server environment with the container-based implementation of the functionality of the particular server environment by creating a container for each of the software images in the set of multiple software images.

### Claim 3 (depends on 1)

The method of claim 1, comprising transmitting the set of multiple software images to a server system, wherein the server system is configured to run the software images in the set concurrently as respective containers to provide the functionality of the particular server environment.

### Claim 4 (depends on 3)

The method of claim 3, wherein transmitting the set of multiple software images to the server system comprises transmitting the set of multiple software images to the server system before applying a subset of the settings and data elements to the software image.

### Claim 5 (depends on 1)

The method of claim 1, wherein applying the selected subsets of the settings and data elements to the corresponding software images comprises associating each of the software images in the set of multiple software images with a corresponding configuration file;
wherein, for at least one of the software images in the set of multiple software images, the configuration file for the software image is based on the subset of settings and data elements selected for the software image; and
wherein each of the software images is configured to access the associated configuration file when the software image is run as a container.

### Claim 6 (depends on 5)

The method of claim 5, wherein each of the configuration files specifies a set of parameters for operation of a container for the corresponding software image or for software running in the container for the corresponding software image.

### Claim 7 (depends on 6)

The method of claim 6, wherein the parameters specify at least one of the following:
a hardware resource allocation for a container that runs an instance of the software image that accesses a configuration file with the parameters;
a network port assignment for a container that runs an instance of the software image that accesses a configuration file with the parameters;
a cache size for a container that runs an instance of the software image that accesses a configuration file with the parameters; and
a capacity limit for a container that runs an instance of the software image that accesses a configuration file with the parameters.

### Claim 8 (depends on 5)

The method of claim 5, comprising generating or updating the configuration files based on the subsets of the settings and data elements selected using the mapping data such that content configuration files configure containers with the corresponding software images to replicate the functionality of the particular server environment.

### Claim 9 (depends on 1)

The method of claim 1, wherein applying the selected subsets of the settings and data elements to the corresponding software images comprises modifying one or more of the software images in the set of multiple software images using the corresponding subset of the settings and data elements.

### Claim 10 (depends on 9)

The method of claim 9, wherein modifying one or more of the software images in the set of multiple software images comprises:
for each of the one or more software images, using the subset of the settings and data elements selected for the software image to modify one or more of:
a dependency for the software image;
a software library for the software image;
a tool for the software image;
metadata for the software image; or
a setting for the software image.

### Claim 11 (depends on 9)

The method of claim 9, wherein each of the software images includes a set of read-only layers, and
wherein modifying one or more of the software images in the set of multiple software images comprises adding one or more layers to the set of read-only layers of the software image.

### Claim 12 (depends on 1)

The method of claim 1, wherein selecting the set of multiple software images comprises selecting a predetermined set of one or more software images that corresponds to software of the particular server environment.

### Claim 13 (depends on 12)

The method of claim 12, wherein the set of multiple software images includes one or more software images in addition to the one or more software images in the predetermined set.

### Claim 14 (depends on 1)

The method of claim 1, wherein applying the selected subsets of the settings and data elements to the corresponding software images comprises associating each of the software images in the set of multiple software images with a corresponding configuration file.

### Claim 15

A system comprising:
one or more computers; and
one or more computer-readable media storing instructions that, when executed, cause the one or more computers to perform operations comprising:
storing, by the one or more computers, mapping data that maps settings and data elements from source server environments to containers of destination server environments, wherein the mapping data specifies different subsets of the settings and data elements from source server environments to be used in configuring different containers of destination server environments;
obtaining, by the one or more computers, settings and data elements of a particular server environment that provides functionality that is not implemented as containers;
selecting, by the one or more computers, multiple software images to use in providing a container-based implementation of the functionality of the particular server environment, the multiple software images being selected from a repository of container software images;
for each of the multiple software images selected, using, by the one or more computers, the mapping data to select a subset of the settings and data elements of the particular server environment for configuring the software image; and
applying, by the one or more computers, the selected subsets of the settings and data elements to the corresponding software images in the set of multiple software images, wherein the set of multiple software images is configured to operate together to provide the functionality of the particular server environment when the set of software images are run concurrently as containers.

### Claim 16 (depends on 15)

The system of claim 15, further comprising creating a second server environment with the container-based implementation of the functionality of the particular server environment by creating a container for each of the software images in the set of multiple software images.

### Claim 17 (depends on 15)

The system of claim 15, comprising transmitting the set of multiple software images to a server system, wherein the server system is configured to run the software images in the set concurrently as respective containers to provide the functionality of the particular server environment.

### Claim 18 (depends on 17)

The system of claim 17, wherein transmitting the set of multiple software images to the server system comprises transmitting the set of multiple software images to the server system before applying a subset of the settings and data elements to the software image.

### Claim 19 (depends on 15)

The system of claim 15, wherein applying the selected subsets of the settings and data elements to the corresponding software images comprises associating each of the software images in the set of multiple software images with a corresponding configuration file;
wherein, for at least one of the software images in the set of multiple software images, the configuration file for the software image is based on the subset of settings and data elements selected for the software image; and
wherein each of the software images is configured to access the associated configuration file when the software image is run as a container.

### Claim 20

One or more non-transitory computer-readable media storing instructions that, when executed by one or more computers, cause the one or more computers to perform operations comprising:
storing, by the one or more computers, mapping data that maps settings and data elements from source server environments to containers of destination server environments, wherein the mapping data specifies different subsets of the settings and data elements from source server environments to be used in configuring different containers of destination server environments;
obtaining, by the one or more computers, settings and data elements of a particular server environment that provides functionality that is not implemented as containers;
selecting, by the one or more computers, multiple software images to use in providing a container-based implementation of the functionality of the particular server environment, the multiple software images being selected from a repository of container software images;
for each of the multiple software images selected, using, by the one or more computers, the mapping data to select a subset of the settings and data elements of the particular server environment for configuring the software image; and
applying, by the one or more computers, the selected subsets of the settings and data elements to the corresponding software images in the set of multiple software images, wherein the set of multiple software images is configured to operate together to provide the functionality of the particular server environment when the set of software images are run concurrently as containers.
