A computer-implemented method for performing live migrations of software containers, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising: identifying a request to migrate a software container from a source computing system to a target computing system while at least one process executes within the software container; creating, in response to the request, a checkpoint of the process in execution, wherein the checkpoint comprises a representation of a state of the process in execution; transferring the checkpoint to the target computing system; and updating the checkpoint recurrently by: recurrently creating an incremental checkpoint of the process in execution; transferring the incremental checkpoint to the target computing system; determining whether a size of a most recent iteration of the incremental checkpoint exceeds a predetermined threshold; characterised in that: based on determining that the size of the most recent iteration of the incremental checkpoint exceeds the predetermined threshold: discarding the most recent iteration of the incremental checkpoint; recreating a new full version of the checkpoint; throttling the software container at the source computing system; and transferring the new full version of the checkpoint to the target computing system to replace the checkpoint. identifying a request to migrate a software container from a source computing system to a target computing system while at least one process executes within the software container; creating, in response to the request, a checkpoint of the process in execution, wherein the checkpoint comprises a representation of a state of the process in execution; transferring the checkpoint to the target computing system; and updating the checkpoint recurrently by: recurrently creating an incremental checkpoint of the process in execution; transferring the incremental checkpoint to the target computing system; determining whether a size of a most recent iteration of the incremental checkpoint exceeds a predetermined threshold; characterised in that: based on determining that the size of the most recent iteration of the incremental checkpoint exceeds the predetermined threshold: discarding the most recent iteration of the incremental checkpoint; recreating a new full version of the checkpoint; throttling the software container at the source computing system; and transferring the new full version of the checkpoint to the target computing system to replace the checkpoint. recurrently creating an incremental checkpoint of the process in execution; transferring the incremental checkpoint to the target computing system; determining whether a size of a most recent iteration of the incremental checkpoint exceeds a predetermined threshold; characterised in that: based on determining that the size of the most recent iteration of the incremental checkpoint exceeds the predetermined threshold: discarding the most recent iteration of the incremental checkpoint; recreating a new full version of the checkpoint; throttling the software container at the source computing system; and transferring the new full version of the checkpoint to the target computing system to replace the checkpoint. discarding the most recent iteration of the incremental checkpoint; recreating a new full version of the checkpoint; throttling the software container at the source computing system; and transferring the new full version of the checkpoint to the target computing system to replace the checkpoint.