Containers are great. Without them, the cost of shipping materials and goods around the world would no doubt be considerably higher.
It's economical because intermodal container dimensions are clearly defined by an international set of standards (ISO 668:2013 and ISO 1496-1:2003 if you must know) that allow containers to be shipped by intermodal freight transport and to be stacked and racked as needed.
If only the software-equivalent containers were so well-behaved – there is no international standard to define how they will work or how they will interact with the host operating system.
Docker has certainly been gaining a lot of traction recently, not least because it's easy to use (and will run on Windows, even if it's only for development purposes), free, and seems to get the job done. It's not the only game in town though – there are proprietary systems (such as HP-UX containers, a bunch designed for Windows), other Unix-flavored systems (like FreeBSD's jail) and of course CoreOS's bombshell project Rocket.
All of which can make a technology chief overseeing his organization's infrastructure somewhat nervous for a number of reasons. Could the choice of container lock their systems into a particular technology (possibly proprietary)? What if the chosen container sinks without a trace in the industry (in the real world, around 10,000 containers are lost at sea each year)? And will different containers play nicely with each other?
Fortunately, there is some light on the horizon. In June 2015, the Linux Foundation announced the Open Container Initiative (OCI) with support from all the leading players (including Docker, Amazon Web Services, IBM, Hewlett-Packard, Red Hat, Microsoft and a whole bunch of other industry names) with the intention of stopping the divergence of the technology before it has a chance to get going.
This may in part have been prompted by CoreOS's announcement back in 2014 of its own technology after it became frustrated by Docker's ever-burgeoning set of tools that it just didn't need.
Well, whatever the reason, the OCI is set to work on a standard based on the Docker software container format and its runtime with technical lead and support from CoreOS. The aims of the project are to create a standard that is not bound to a client or stack, isn't tightly associated with a particular vendor, and will run across a variety of hardware and operating systems. All of which should be good news to the nervous CTO looking to invest in the technology.
The OCI is publishing its goals, progress and roadmap – meaning we can view progress. Although the project was announced last June, it wasn't until December that the technical governance was announced.
While you might excuse that, when you look at the roadmap you see that it's very vague. Also, there aren't any dates, and while the github repository had shown a flurry of commits (for the specs) in July and August, activity seems to have died down recently.
There have been a number of releases of the runC tools, and you can, if you wish, build and spawn containers based on the OCF specification. But this is not yet version 1 of the spec.
Rather worryingly, the last commit (at the time of writing) for this document removed the timeframe for version 1 of the spec – it had been set at July (presumably 2015). The current download is version 0.1.1.
That's not to say progress isn't being made; weekly meetings continue to go ahead, commits to the repository are happening. It's just the lack of a formal timescale (even if it's approximate) that must make anyone thinking of using this technology very nervous. It's probably just too soon to know if the initiative will be successful.
So where does that leave us? I expect Docker will go from strength to strength, it's got that feeling of a project on a roll. With its commitment to the OCI, it seems certain that its core technology will be around for a while.
Hopefully, we will see a release of v1 of OCI in 2016 and with its commitment to being backward-compatible with Docker, it might be time to give it a serious look around that time.
CoreOS, meanwhile, does seem to be committed to the OCI, although it is worried the distributed container image is not part of the OCI. Perhaps this year, we'll see some movement on this. Even if the OCI doesn't take it on, it looks like CoreOS will.
2015 was a busy year for containers. 2016 promises the same – at least in raw uptake, that's bound to continue. We should also expect a lot of spadework on the standard, too – there's enough to be getting on with. And that work will become vital as containers become established. ®