Docker 1.11: The first OCI-compliant runtime, built on containerd
blog.docker.com
blog.docker.com
It's a great time to be in operations, containers are a huge step forward, but how are we supposed to be confident in a technology with so many major changes every other month? Even Node.js has LTS releases.
And yes. Get off my lawn, too.
In my experience many of the tools in the container ecosystem are in the early adopter phase, promising a lot of convenience for some use cases, but too buggy and feature incomplete to really deliver yet. Not to mention the breaking changes and occasional migration to a new tool.
Started using Ansible (ok, maybe comparing oranges to apples here) and its better for my use case.
Linux is not the only OS around, and Docker is not the only container technology available, that's important thing to remember.
It's complicated.
I wouldn't stop considering containers per-se (SmartOS zones/FreeBSD jails are fine!) but the whole tooling surrounding the management of Linux containers and corresponding images is still in the "cambrian" phase. Security issues and the general over-selling of the technology (Docker and CoreOS especially are almost too good at marketing their products..) shouldn't discourage you to play around with "those toys" though. Even for certain production scenarios there is a bunch of setups which work fine already (RedHat's OpenShift platform comes to mind).
- https://linuxcontainers.org/
And I'm not sure if they're the same thing, compatible, or what. I'm going to let someone else pick the winner for me. I'll come back to containers in like a year or so and see what the lowdown is.
I was reading the recent HN discussion + article on the recent network namespaces, and wondered at how much ahead networking on Illumos is.
Recently (on 1.9) we have seen quite a few cases where we had "zombie" containers, these are container that can no longer be started or stopped due to cgroup misconfiguration or something along those lines.
The new architecture means that for weird cases like this all we need to do is kill off runc without forcing every container on the box to restart (by restarting the docker service which is what we do now).
It is also really nice that you can now launch apps on runc direct without needing a docker intermediary.
If so, it's a bug with a particular (newer) version of AUFS that has been fixed in most distros.
> With the containerd integration comes an impressive cleanup of the Docker codebase and a number of historical bugs being fixed. In general, splitting Docker up into focused independent tools mean more focused maintainers, and ultimately better quality software.
wait wait wait. I'm kind of new into docker world. And so far i've been struggling in understanding how to replicate a container in order to scale. For example i want to run the same Django project 3 time as web1, web2, web3. If i do so now i've to expose 3 different ports, one for each. Plus, to make it working, I need to have a load balancing, thus i've to use HAProxy and do a load balancing to point to each of the container. Anytime I add a new machine (e.g., web4) i've to change the conf of HAProxy and restart it. This brings down the system for a moment. (is this the right approach btw?)
Going back to the cite paragraph. Now i can create many containers and dockers automatically does the routing for me? Am I right? or I misunderstood the meaning of the cited point?
I just need to create all of them with a --alias web ?
This is why I use hipache for load balancing / routing - it is the only solution I've found where you can change the routing or add new backends in a live system without any downtime. Here is the main problem though: Its load balancing isn't exactly smart, for example it won't keep the same client IP on the same replica, thus creating problems when a client writes something on one replica, then gets switched to another that didn't get the update yet.
I'd love a better solution for this btw. Is noone working on Hipache anymore? Other than this problem I find it very elegant.
Been watching #consul IRC for a while now though, and the vast majority of the setup problems are due to Docker's weird networking and security. Fabio/Consul run like a charm but Docker throws a wrench in the machine.
You might find this story from a year ago interesting:
"True Zero Downtime HAProxy Reloads" http://engineeringblog.yelp.com/2015/04/true-zero-downtime-h...
HN discussion (with some answers from the post author): https://news.ycombinator.com/item?id=9369051
I'm curious as to how much of an actual issue you experience though. Barring an error that prevents HAproxy from starting, it should be pretty quick? Maybe not quick enough for streaming media/realtime audio-visual communication though.
resolution for 'web' will return IPs of both the containers. You might still have to watch out for the DNS caching at the application level.
> Q: Why doesn't this project mention distribution?
> A: Distribution, for example using HTTP as both Docker v2.2 and AppC do today, is currently out of scope on the OCI Scope Table. There has been some discussion on the TOB mailing list to make distribution an optional layer but this topic is a work in progress.
I really hope CoreOS manage to get distribution into the scope for OCI. We need to move beyond Docker images. Standardizing on-disk layout in OCI is only mildly useful in my opinion.
This is great.
Docker has become a de facto standard for executing programs in a portable sandbox (aka "container"). There were increasing demands for making it a "proper" standard, so last year we donated a spec and reference implementation for a universal intermediary format - a "PDF of containers" if you will, and partnered with the Linux Foundation to manage it. The majority of the industry followed.
Now that the Docker container engine supports this intermediary format, and other providers will soon follow suit, it reduces the risk of depending on one provider. If you want to switch away from Docker, you can run your containers elsewhere.
Now everyone can focus on building better tools, instead of trying to make "their" format win. The result is better tools.
I hope this guy does this again here, https://news.ycombinator.com/item?id=11379475
Correction: not CEO, "Founder, CTO and Chief Product Officer"
OpenVZ for instance, has well over 77K host-nodes which run over 840K containers.
These are not ephemeral setups on someone's laptop but servers that companies are spending money on each month to have in a datacenter.
IMHO (because the reporting method requires a small stats program to run, which is optional and many don't run it) there are 2 to 10 times more in actual existence.
Source: https://stats.openvz.org/
I didn't mean that Docker is the most widely deployed software in a particular category (that would be hard to measure accurately anyway). But what Docker introduced is the use of containers to deliver software, not just boot servers. Developers use Docker to package and publish their runnable artifacts, in very large numbers. For example Docker Hub passed 2.5 billion image downloads. Many more images are certainly transferred between private nodes every day. OpenVZ does have a concept of templates (I was an avid user in past life) but they were never intended as a means to distribute applications. In that regard Docker is undisputably the de facto standard.
I hope this clarifies my meaning.
PS. OpenVZ is awesome. I remember when we made the switch from ovz to lxc in 2010, when it became clear which would get merged mainstream, and we could finally ditch our double-patched xen+ovz kernels. The transition was very painful! What we missed most was the "bean counters" feature, ovz stats were unmatched for quite some time.
If you wanted to sit down and write software to build or execute a container, there wasn't a spec to follow or a checklist of the features you needed to support. Basically, you had no idea if what you wrote today would continue to work in the future. Or if someone else constructed a container, that you could run it.
(CoreOS employee)
I understand that you used to have to install a separate version of Docker to access this feature, but does the change in 1.11 also mean you no longer have to set the DOCKER_CONTENT_TRUST environment variable, or will that be made default at a later time?
This answer from Mark Shuttleworth seems to sum up their position: https://answers.launchpad.net/ubuntu/+question/268502