3 ms·
> Containers are not programs. And even they were, they absolutely do not adhere to the Unix philosophy. They are programs (barring some semantic nitpickery ab
by weberc2 7y ago
> Containers are not programs. And even they were, they absolutely do not adhere to the Unix philosophy.
They are programs (barring some semantic nitpickery about "programs run in containers"), and like programs, we can't make blanket statements about whether or not they implement the Unix philosophy. Some do and others don't.
> I've heard this enough times and seen enough K8s systems in production that I'm labeling this "fluff". K8s is an operating system in the same way that "everything is everything". K8s is software that manages containers and their resources.
Yep, like I said, an analogy: "An operating system is software that manages processes and their resources". By definition, the operands of an analogy are different, so if your thing is taking any analogy and calling "gotcha!" because you found some differences, then I'm afraid you're missing the point.
> From Wikipedia:
>> An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.
> You can generalize "software resources" as container resource limits. You can generalize "common services" as the network and filesystem layers. And you can generalize "computer hardware" as kernel configuration on the control plane.
> All of these are purpose built abstractions built on top of the real operating systems. By that logic you could call any virtual environment or virtual machine an operating system. And if that's the true then the comparison isn't useful at all.
That's quite the straw man.
- 0xFACEFEED 7y ago"programs run in containers" isn't nitpickery - it's a very important distinction. Containers are more like a runtime environment. There's a lot going on between a K8s pod, a container, and the actual program. It's just not Unix-y at all. You can't execute containers and string them together in the same way you do with Unix programs. Again, you can generalize and call them "programs" but the generalization renders the meaning of "program" in this context useless. I don't see the strawman here. K8s and containerization is frequently mischaracterized as the operating system of the future. The technical details matter and speaking in generalities is misleading (IMO).
- weberc2 7y agoIt's not an important distinction at all. A "program" isn't well-defined; it's inherently abstract. A container is a manifestation of a running program as is a Unix process; both are "runtime environments" differing in their isolation properties (Unix processes provide memory isolation, containers provide memory as well as other kinds of isolation, at least to the extent that the underlying operating system supports). > There's a lot going on between a K8s pod, a container, and the actual program. It's just not Unix-y at all. The Unix philosophy pertains to composition, not implementation. > I don't see the strawman here. You picked someone else's definition of "operating system", generalized it, and then attacked it for being too general. > K8s and containerization is frequently mischaracterized as the operating system of the future. The technical details matter and speaking in generalities is misleading (IMO). Yes, again, this is an analogy. If you interpret analogies as a guarantee that the operands are identical instead of simply "similar", you will be misled.