News for hackers. Stuff that matters.
Re:The sad state of sysadmin in the age of containers (2015) by pram on Monday December 09, 2019 @05:36AM (#21741610)
Terrible article IMO. Hadoop is an awful mess, but it has nothing to do with Docker, which is simplistic in comparison.

"Ever tried to security update a container?"

Yes, I have! In fact you can maintain patch compliance in a container pretty much the same way you'd maintain a VM or bare metal Linux installation!

Re:The sad state of sysadmin in the age of containers (2015) by the_duke on Monday December 09, 2019 @06:53AM (#21741896)
You missed the bigger point.

Just look at the popular images on Docker hub.

A lot of them involve messy build steps, including downloading binaries or source tarballs without verification.

It's often hard to know which dependencies a Docker image has, and therefore hard to track vulnerabilities and redeploy fixed images.

A lot of docker containers end up either running for a long time, or get rebuilt and redeployed often, but have pinned versions of base images or dependencies which still leaves vulnerabilities in place.

This is compensated a bit by the fact that Docker does provide somewhat decent isolation, and most containers are run in a cloud environment, behind load balancers and with decent security constraints. But there are many pitfalls in the whole process.

Containers provide a lot of advantages, and are certainly where things will continue to go.

But we need to figure out the tooling and ecosystem story to build, verify and update container deployments securely.

Re:The sad state of sysadmin in the age of containers (2015) by oauea on Monday December 09, 2019 @07:19AM (#21741997)
Just build your own. It's not that hard.

Before containers we would script the install process using Ansible. With containers we script the install process using a Dockerfile. If you know how to do one, you know how to do the other. Just don't be lazy and use unofficial images created by people you don't know or trust. Just like you wouldn't pull any random role from ansible-galaxy. Or pull a random guy off the street and ask them to provision your infrastructure for you.

Then all you have to do is just rebuild your images every week and you're set. All we had to do for this was have our Jenkins build pipeline run weekly & have it pass `--pull --no-cache` to `docker build`.

Re:The sad state of sysadmin in the age of containers (2015) by mkesper on Monday December 09, 2019 @09:07AM (#21742714)
You can even avoid dockerfiles by using Ansible: https://docs.ansible.com/ansible/latest/scenario_guides/guid...
Re:The sad state of sysadmin in the age of containers (2015) by oauea on Monday December 09, 2019 @09:22AM (#21742838)
We tried that about a year or two ago with `ansible-docker`. At the time it didn't leverage the docker cache so it was quite slow. Looks like that got replaced with `ansible-bender` which according to the readme does use the docker cache!

Thanks for mentioning this, will definitely have to give this another go.

Re:The sad state of sysadmin in the age of containers (2015) by Annatar on Monday December 09, 2019 @07:04AM (#21741938)
"But we need to figure out the tooling and ecosystem story to build, verify and update container deployments securely."

Already done: Solaris zones. Available in the SmartOS distribution near you. Combine with OS packaging, imgadm and vmadm commands for maximum impact.

Re:The sad state of sysadmin in the age of containers (2015) by ti_ranger on Monday December 09, 2019 @11:34AM (#21743966)
I've spend 1 minute skimming some of the docs, but it's unclear whether these tools can do a better job than the docker-like tooling. The vmadm "build an image from scratch with a json file" doesn't help in building Hadoop any more than the oldest versions of docker did using a minimal image and a Dockerfile.

How does provide visibility into every dependency inside an image? Especially when using 3rd-party-maintained images that consist of significant hours of work per image to get the image to work.

(BTW., I built "live CD images" for use in physical and virtual machines since ~2001, using tools such as mklivecd, livecd-tools etc.).

Re:The sad state of sysadmin in the age of containers (2015) by justinsaccount on Monday December 09, 2019 @07:26PM (#21748317)
It doesn't. He's a troll that claims solaris is the solution to every problem that he doesn't understand.
Re:The sad state of sysadmin in the age of containers (2015) by regularfry on Monday December 09, 2019 @09:55AM (#21743123)
I suspect there's a similar story around LXC available.
Re:The sad state of sysadmin in the age of containers (2015) by GordonS on Monday December 09, 2019 @08:42AM (#21742510)
> A lot of them involve messy build steps, including downloading binaries or source tarballs without verification

Do they though?

Whenever I write Dockerfiles that depend on external downloads, I always check the hash matches one baked into the Dockerfile itself, and I've always seen others doing the same.

Re:The sad state of sysadmin in the age of containers (2015) by takeda on Monday December 09, 2019 @10:55AM (#21743655)
I have seen this many times, generally the high profile containers do that, and these issues are more common among my peers. This requires self discipline and containers were pushed as a panacea for environments where the discipline is lacking.
Re:The sad state of sysadmin in the age of containers (2015) by gmueckl on Monday December 09, 2019 @12:34PM (#21744517)
What is the point of storing the hash of an external file instead of checking the file into local version control? You're making it a part of your sources either way.
Re:The sad state of sysadmin in the age of containers (2015) by takeda on Tuesday December 10, 2019 @11:55PM (#21759701)
People who want to run docker don't want to run artifactory.

I'm not saying it's a good thing, but that's what I observed.

Re:The sad state of sysadmin in the age of containers (2015) by GordonS on Monday December 09, 2019 @03:10PM (#21745973)
Do you have any examples of high-profile images that do this?

I really just haven't seen this with the ones I use.

Re:The sad state of sysadmin in the age of containers (2015) by takeda on Tuesday December 10, 2019 @11:45PM (#21759664)
Sorry, I see that my response looks ambiguous.

I meant the opposite. The high profile containers generally do the right thing, but containers created by peers rarely do it.

There's no mechanism to make things reproducible you need to implement it yourself, and from my experience most people (not the ones that release something publicly, but ones that work for a companies that use it) don't do it.

Re:The sad state of sysadmin in the age of containers (2015) by tomtomtom777 on Monday December 09, 2019 @06:18AM (#21741766)
The article focuses on Hadoop, but the generalization to containers is spot on.

Containers have become the first stop method to hide overly complicated build processes. When you've noticed your wiring has become a complete mess of knots, just put it in a box so no one will trip.

It seems to me that containers are useful for deploying final setups, but should be a no go for packaging tools.

Re:The sad state of sysadmin in the age of containers (2015) by indigochill on Monday December 09, 2019 @07:11AM (#21741962)
>When you've noticed your wiring has become a complete mess of knots, just put it in a box so no one will trip.

On the other side of the coin, putting stuff in boxes is the essence of architecture. CPU opcodes? Boxes. Compiling readable code into bytecode? Boxes. Objects? Boxes. Functions? Boxes.

Sure, it can be abused. There might be spaghetti in those boxes. The spaghetti should be chopped into digestible chunks (smaller boxes!). But putting it in a box makes that an implementation detail. Putting stuff in boxes is still progress.

Re:The sad state of sysadmin in the age of containers (2015) by bluGill on Monday December 09, 2019 @07:25AM (#21742023)
All problems in programming can be solved by adding another layer of abstraction (ie a box) - except too many layers of abstraction.

Good architecture is not about putting things into boxes, but about figuring out what boxes you need and which you do not. Sometimes a box is good, sometimes a box is bad. It isn't the fault of the box that it does't contain the right thing.

Re:The sad state of sysadmin in the age of containers (2015) by hvidgaard on Monday December 09, 2019 @07:15AM (#21741975)
I don't think it's fair to blame containers for that. Just because someone programs a shitty product in Visual Studio, does not mean it's a problem with Visual Studio.

What containers does beautifully is dependency containment. I make something and put it inside a container, with the exact dependency it needs and it'll work alongside other containers with a program that might have a different incompatible dependency.

What we're seeing is not so much that developers suddenly decides to throw best practice into the wind. They just do not have to put the same amount of effort into fixing the broken process exactly because we have dependency containment. I believe we would see the same mess without containers, and the process change that would fix one would fix the other.

Re:The sad state of sysadmin in the age of containers (2015) by darkwater on Monday December 09, 2019 @07:16AM (#21741981)
Containers are great, for example, to internally deploy some internet-facing web component your company wrote but they are not that great as a mean of generic software distribution. But things get complicated when to build the first type of containers you usually need software from the second type. In my case I just mirror good/proven docker images in my internal repo(s) and rebuild images from scratch in the most reproducible manner I can find when the software is badly packaged.
Re:The sad state of sysadmin in the age of containers (2015) by apexalpha on Monday December 09, 2019 @07:01AM (#21741927)
I would see it more as to dividing your wiring into segments with breakers in between so that one rogue device doesn't bring down the whole network.

Seems a good thing, to me at least.

Re:The sad state of sysadmin in the age of containers (2015) by peterwwillis on Monday December 09, 2019 @12:05PM (#21744231)
Containers are fantastic for packaging tools. What problems do you see with it?
Re:The sad state of sysadmin in the age of containers (2015) by HorstG on Monday December 09, 2019 @08:40AM (#21742489)
Agreed, up to a point:

Ever tried to security-update a vendor-provided container which you should never touch because of the vendor's support and warranty conditions? And even if allowed to touch it, the mess that it usually is: app running as root in the container, stuff chmodded a+rwx -R, weird base distro, build script is just a wget, cp -R or "this binary magically appears from somewhere". With a helping of " only works if the directory structure and environment look like the devs machine".

Containers are the ultimate expression of "it compiles, let's ship it" laziness

Re:The sad state of sysadmin in the age of containers (2015) by tetha on Monday December 09, 2019 @09:41AM (#21743000)
But that's vendors, not containers.

You can say exactly the same about vendors on a VM - applications running as root, bad passwords set, reboots impossible, patching impossible, backups... Or a virtual appliance. Or a third party application you installed and cannot upgrade due to a weird dependency on libc, or java, or a specific windows versions.

Vendors like that are always a mess, no matter the technology. Containers can turn into an equal mess, yes, but that's up to the build chains and ecosystem built around the containers.

Re:The sad state of sysadmin in the age of containers (2015) by HorstG on Monday December 09, 2019 @10:18AM (#21743321)
Agreed. Most vendors supply an unholy mess of weird setup.exe, shellscript installers, omnibus packets or appliances as well, containers are not alone here.

Edit: To clarify, containers and VMs are somewhat special in that it is very easy to do the wrong thing, and that you get a lot of rope to hang yourself with. The application developer by. default takes responsibility for the whole OS stack (maybe except the kernel with containers) but usually doesn't handle it very well. Whereas with packages or even setup.exe, the default case in most IDEs and tools is to package very little, and only upon request (using omnibus e.g.) to include the whole shebang

edit2: the definition of 'vendor' of course includes a lot of OSS projects who are just as bad as most commercial vendors in this regard, as exemplified by all the aforementioned Apache Foundation Java Crapware

Re:The sad state of sysadmin in the age of containers (2015) by black_puppydog on Monday December 09, 2019 @05:48AM (#21741648)
> Hadoop is an awful mess, but it has nothing to do with Docker, which is simplistic in comparison.

The fact that they can get away with a build system like this is very much due to docker (and curl | sudo bash) allow people to not feel the pain this mess causes, at least not right away.

> Yes, I have! In fact you can maintain patch compliance in a container pretty much the same way you'd maintain a VM or bare metal Linux installation!

But then you lose the declarative/immutable nature of docker, no? Except if you mean every time there's a security update, you rebuild your containers?

Re:The sad state of sysadmin in the age of containers (2015) by adrianN on Monday December 09, 2019 @05:59AM (#21741691)
It's pretty hard to do truly declarative/immutable things with docker because the typical dockerfile starts with "apt-get update && apt-get install ...". For that use case I think nix is much better.
Re:The sad state of sysadmin in the age of containers (2015) by doliveira on Monday December 09, 2019 @06:14AM (#21741750)
Linters complain when you don't pin the version, though
Re:The sad state of sysadmin in the age of containers (2015) by adrianN on Monday December 09, 2019 @06:37AM (#21741843)
That's what I tried doing. The result was that the docker container didn't build anymore because at least one of the packages we used had a a patch release every other day and apt only serves the most up to date version.
Re:The sad state of sysadmin in the age of containers (2015) by onion2k on Monday December 09, 2019 @05:51AM (#21741672)
Except if you mean every time there's a security update, you rebuild your containers?

That's exactly what you should be doing, at least if you're relatively small scale. Google probably takes a different approach but most of us aren't working at that scale.

Re:The sad state of sysadmin in the age of containers (2015) by pram on Monday December 09, 2019 @05:52AM (#21741675)
First: No one installs Hadoop from scratch, and Hadoop isn't built with Docker. Companies use Ambari or other distros like EMR.

Second: Yes, generally you can use a build system like Jenkins, and a registry like Artifactory to automate the process. The docker image is updated, and then you can push it out with your orchestration in whatever method you choose. It's not an obscure or difficult thing to manage..

Re:The sad state of sysadmin in the age of containers (2015) by buzzkillington on Monday December 09, 2019 @06:11AM (#21741732)
>Unfortunately, the build process for these packages is currently of a disastrous quality, and should only be attempted within disposable virtual machines, as it requires root permissions and will install non-packaged software.

https://wiki.debian.org/Hadoop

If Debian, a distro on the lower side of dramatic, calls it disastrous, it's pretty bad.

Re:The sad state of sysadmin in the age of containers (2015) by regularfry on Monday December 09, 2019 @06:38AM (#21741847)
Debian is (mostly) low on the drama, but high on the expected package quality. It's not surprising they'd have problems here.
Re:The sad state of sysadmin in the age of containers (2015) by quicksilver03 on Monday December 09, 2019 @03:39PM (#21746281)
I couldn't disagree more, by looking at how badly Debian dares to diverge on basic packages such as Apache, nginx and exim it's clear to me that they don't care at all about quality.
Re:The sad state of sysadmin in the age of containers (2015) by regularfry on Tuesday December 10, 2019 @05:41AM (#21751326)
Divergence from the upstream isn't a marker for or against quality, as Debian chooses to define it.
Re:The sad state of sysadmin in the age of containers (2015) by fargle on Monday December 09, 2019 @11:24AM (#21743881)
I think the article is right on and makes a good point. The title does imply that containers are somehow bad for system administration. But the point is not that a container with a nicely installed, maintained, sensible image and applications pre-loaded on it would be a problem for system administration. Nor would it be anything but trivial to update patches in this situation.

The real point the author is making is that many times containers are misused to paper over problems like lack of reproducibility, dependency hell, etc. They aren't reproducible, certainly not by you. If they were you'd not need the container in the first place, or you could build your own easily. So for this kind of misuse, the analogy to Tucows Windows 95 shareware is pretty close.

Hadoop and Docker are just the examples to make the point. And they are good enough ones, because I could understand exactly what the author meant. There are certainly hundreds of other examples.

Re:The sad state of sysadmin in the age of containers (2015) by Russtopia on Monday December 09, 2019 @03:55PM (#21746455)
I suspect Hadoop was just used as an example. For another, I would suggest Concourse (build/CI tool). When I tried it, it was docker images for the default install, vague instructions, and a dev forum which seemed rather hostile to anyone asking for support to build or configure outside of containers.

Might have changed since then, but a big turn off.

Re:The sad state of sysadmin in the age of containers (2015) by gchamonlive on Monday December 09, 2019 @07:58AM (#21742189)
I was confused when I read the article. I kept thinking it was actually a problem with hadoop and not docker, since docker is nothing but an abstraction on top of the Linux kernel.

I remember trying to produce a viable alpine based docker image for a flask backend service we had thar produced pdf using latex. Dependencies were really hard to pin down, had to resort to open issues on github, but utimately all packages were on the distribution, so it is not a problem with the tech itself, but the archaic way Java lets people to produce applications