3 ms·
It’s also worth mentioning that docker is a leaky abstraction. Docker employs tricks to create a perception of containerization. This means that if any steps ar
by parentheses 6y ago
It’s also worth mentioning that docker is a leaky abstraction. Docker employs tricks to create a perception of containerization. This means that if any steps are missed or forgotten your system could become unusable.
Examples:
- something failed and the app is partially up? Did it take out your ssh port? Good luck getting access to fix the issue
- app fails on boot? good luck kicking the tires interactively. best trick I’ve found is to tail /dev/null upon startup.
Aside from that it’s a fine tool. I just don’t need it. The only reason I do is because a technologist who came before me thought I did.
I find that we live in a world where abstractions between me and bare metal keep multiplying and I frankly don’t like it. Maybe I’m just an old fart now.
This leads me to asking a question I constantly ponder. Isn’t the need for yet another abstraction clear evidence that the lower abstraction is weak? I understand that abstractions of varying levels are useful in different situations. These thoughts are specifically pointed at helm, k8s and docker.
- ivan4th 6y agoDocker is not using chroot and iptables aren’t the most important part of “creating the perception”. The primary tools are Linux namespaces and cgroups. For many purposes, these abstractions aren’t too leaky (and sometimes quite useful without Docker, too)
- parentheses 6y agoHmm this may have been because of the version of docker I used. Updated the content
- judge2020 6y agoRegarding your final remark, almost all abstraction is the result of someone being impatient and fixing the problem of the decade. Why does anyone need Python for anything if C++ is so much faster at runtime? Because C++ takes more time to learn, code, debug, and fix bugs. These abstractions aren't weak as a whole, but they do have their downsides, so this pain endured encourages bright developers to create another layer of abstraction that avoids exposing these same rough edges to new developers. > - something failed and the app is partially up? Did it take out your ssh port? Good luck getting access to fix the issue Not sure how it could ever knock out your SSH port unless you run a container like ports: 22:22 Which is very unwise if your main ssh is port 22.
- midasuni 6y agoWondering if OP is running Sshd inside his containers and forwarding ports - effectively using them as a VM
- midasuni 6y ago> Maybe I’m just an old fart now. As an old fart I sympathise greatly with this, but objectively things have always been more and more abstracted as time goes on, and old farts are always resistant because it’s they way they always did it. I was young once, came in and asked “why all these old expensive sun machines when we could just run linux”. I got across VMs eventually, but things like docker was against the natural order of things, and seemed to just be a crutch to me. Apt is a crunch to those who don’t want to deal with missing dependencies. Debs are there to avoid configure/make/make install issues. Why even have a make file, just handcraft your gcc lines directly. An older colleague used to run an internal web server running on irix with a cgis written in C, he moved on to php and linux, then to node and docker. He moved with the time, and I respect that. I doubt you wrote your programs in assembly throughout your career, so there’s always been abstraction. There are times you need to hand write assembly, but they are rare. There are times you have to run on physical hardware, but they are rare. Why is an OS or a VM the perfect level of abstraction, and not docker? Docker I can see has advantages in many cases. I need to deploy some new infrastructure to a small company, radius, syslog, dns, etc. Main and backup. I could do it in the traditional way I’ve done it for 2 decades by simply installing them and configuring them like it’s 1999. And it would work and be great Or I could use docker to do it, perhaps even use Andover to deploy. Why? Mainly to boost my resume, but I’m sure there are objective benefits to docker which I just can’t envisage at the moment because I’ve spent 2 decades doing things in the way that was new and cool in the days of Debian Potato, but now is old and presumably limited. Just like configure/make/make install was limited on Solaris, just like c based cgi was limited on irix.