1. A method for virtualizing applications on a computer using virtual containers, the method comprising: receiving, at a managed endpoint, a virtual container from a remote computer, the virtual container including an application and computer program instructions for virtualizing the application; storing the virtual container at the managed endpoint; determining that the application has started executing at the managed endpoint; creating a user environment for a user of the application; monitoring, by the computer program instructions for virtualizing the application, the application for an operating system application program interface (API) call to write a file to a file system of the managed endpoint, the file system located outside of the virtual container; determining whether to allow the operating system API call to write the file to the file system to proceed, and in response to the determination: blocking, by the computer program instructions for virtualizing the application, the operating system API call to write the file to the file system; modifying a filename parameter of the operating system API call to redirect the file to the virtual container; modifying the user environment to reflect redirection of the file to the virtual container; writing the file to a location within the virtual container; and executing the computer program instructions for virtualizing the application that are configured to modify a behavior of the application including: isolating the application from other applications executing at the managed endpoint; and isolating data associated with the application from other data stored at the managed endpoint.