1. A computer-implemented method, comprising: under the control of one or more computer systems configured with executable instructions, receiving a request for a companion container instance associated with a mobile device; in response to the request, creating a cluster including a set of container instances that are registered with the cluster and configured to run one or more software functions on behalf of the mobile device by at least generating a record in a database associating the cluster and the mobile device; receiving a task definition indicating the companion container instance associated with the mobile device and data from the mobile device, wherein the task definition identifies a set of software functions configured to perform a task on behalf of the mobile device and specifies an allocation of resources to the set of software functions; processing the task definition and the data by at least: obtaining an image of a software function, wherein the software function is configured to execute within a container instance of the set of container instances, comprising data and one or more processes which, when executed in the container instance, are isolated from other processes running within the container instance, and wherein the image represents a particular state of the software function at a time the image was generated; determining a subset container instances of the set of container instances included the cluster in which to launch the software function, wherein the subset container instances are determined according to a placement scheme; and launching the software function within the subset of the set of container instances such that the software function are allocated resources in accordance with the allocation of resources specified in a task definition; and providing the mobile device with a result of launching the software function.