Actually there's no way to checkpoint a single process, just because it has lots of relations
with other processes. Starting from parent-child relationship (a process is at least someone's
child and the parent do not expect a child to "disappear" suddenly), down to inter-process
communication such as inter-process pipes etc., a process just can't be torn apart from its
neighbourhood and be checkpointed.
That is why containers are a prerequisite to checkpointing. A container is a self-sustained
process group not tied to any other processes, and thus it can be checkpointed.
It's interesting that some people think a container is just a thing needed for checkpointing,
while others think of checkpointing as just yet another feature of containers.