1. A method comprising: maintaining, on a computing device, a virtual container for a set of one or more target software deployments, the virtual container including a first reference to an active container and at least one reference to one or more shadow containers; wherein the virtual container is associated with a plurality of versions of a software application that are loaded to the computing device and a constraint that restricts how many versions of the software application are associated with the virtual container to a threshold number of versions of the software application; receiving an updated version of the software application for the set of one or more target software deployments; in response to receiving the updated version of the software application for the set of one or more target software deployments, determining whether associating the updated version of the software application with the virtual container would cause the threshold number associated with the constraint to be exceeded; in response to determining that associating the updated version of the software application with the virtual container would cause the threshold number associated with the constraint to be exceeded, replacing a particular version of the plurality of versions of the software application with the updated version of the software application; and wherein after replacing the particular version of the plurality of versions of the software application with the updated version of the software application, the virtual container is associated with the updated version of the software application and not the particular version of the plurality of versions of the software application.