Open Container Initiative releases image specification and runtime spec for vendors and container users.
Container advocates remember why a Unix application can't run on all versions of Unix. They know why a virtual machine can't run with just any hypervisor. Different vendors tweaked the underlying mechanics in the code just enough to distinguish their version from all others, imposing a mind-numbing complexity on customers.
Leading developers at CoreOS, Docker, Red Hat, Suse and Kubernetes, among others, were all too familiar with the resulting variability, complexity and tendency to fail. Two years ago, with community tensions showing, they gathered behind a common standard and produced a specification and reference implementation of a shared container environment.
The Open Container Initiative was that effort, and this morning the initiative brought forth its issue: OCI Version 1.0. Red Hat and other major Linux vendors, Kubernetes, Docker, CoreOS, Cloud Foundry and Mesosphere have flocked behind the standard and already incorporate OCI code into their products.
"There were jokes about the container wars at the time we got started," recalled Chris Aniszczyk, executive director of the OCI, in an interview. OCI is now part of the Linux Foundation. Docker had gotten the jump on other interested practitioners by building a popular container formatting process and Docker container engine. The code was open source, but Docker kept adding to the Docker platform and had the means to change the runtime environment, if it chose to, to shut out of the environment those who had followed its lead.
CoreOS, supplier of a lightweight version of Linux for running container servers, proposed a shared runtime environment as well as a shared image format. The OCI was formed, originally known as the Open Container Project, then renamed OCI in July 2015, and set about generating a container image specification and a container runtime environment specification. Both now exist in their 1.0 versions on Github.
The specifications and their reference implementations can't erase the differences between computer architectures. Microsoft, for example, became interested in adding containers to its Windows Server environment and did so with the 2016 release of its operating system. But a Windows Container must still run on a Windows Server machine, just as a Linux container must run on Linux servers.
Nevertheless, the shared specification assures container users if they build a Linux container in an OCI 1.0 specified fashion, it's going to run in any OCI 1.0 certified server environment. A common element is the runc library that makes up the core of a Linux container engine and recognizes the elements of a Linux container format as they're unpacked from a disk. Docker originated the runc library and donated it to OCI.
Read the rest of this article on InformationWeek.