You mention that you start up many processes in one container. Breaking those out into separate containers may be one way to shave time off of container start, and also architect your containers more appropriately: for a long time, the mantra has been “one process per container” (more like “one concern”, really, since some programs like Apache
fork which is fine), and for mostly good reason: it saves you from conflating together a bunch of unrelated processes, and having to do things like restart your database when you only want to restart your app.
If you have really tried every hack on the books to get your container to boot faster (and maybe I’m being skeptical, but I find it hard to believe there isn’t any way you can speed up a ~10 minute start) and you’re still talking about such a long startup period, you have very few options left. And one of them is CRIU (checkpoint and restore in user space). Nothing else will restore all the contents of memory and so on from a running process, as you mention.
Now, some basic functionality to support checkpoint / restore has been added to Docker master, and it may actually land in 1.12, but it’s likely to be marked as “experimental” and only enabled if you explicitly opt-in. Not sure the current status of that.
That said, I’d give Docker master a whirl to see how you feel about it if you’re feeling ambitious. I’m not sure if the actual CLI has been implemented yet.