Containers – Format, Runtime and Platform

1 of the big announcements in Dockercon 2015 was the Open Container project(OCP). OCP is an Opensource project under Linux foundation to define a common Container format. Container format, runtime and platform mean different things. There are many Container formats, runtime and multiple acronyms surrounding it. In this blog, I have tried to capture my understanding around these. I have not discussed about traditional Linux containers in this blog. This is how I see the relationship between Container formats, Container runtime and Container platforms.

docker10

  • Container runtime implements Container format specification. Container platform uses Container runtime.
  • Container format is a specification that describes packaging and layering of container image, security aspects in terms of signing and encryption, execution of containers and discovery of containers. This is only a specification and there is no code.
  • Initially, Docker had its own Container format. CoreOS developed appc Container specification. According to the latest announcement, there will be 1 Container specification called Open Container Specification(OCP) that will derive from both appc and Docker image format.
  • Container runtime is an implementation of Container specification.
  • Initially, Docker runtime was combined with other components of Docker. Based on latest announcement, Docker will separate the runtime out from other components and call it runc. This will be opensourced as well. Libcontainer will be part of runc. CoreOS has a runtime called rkt thats based on appc. I assume that rkt will now be based on OCP. There are other container runtimes like Kurma, Jetpack.
  • Container platform contains all the tooling, networking, orchestration to make Containers user-friendly and scalable. Docker machine, Swarm, Compose are all part of Docker platform and they use Docker runtime runc.

Its a great thing that the community has agreed on a single Container specification. This will make Container images interoperable. I also feel that its good to have multiple container runtimes to promote healthy competition and to satisfy different use cases. References:

Leave a comment