3 ms·
That's a great example! Thank you very much for sharing. That said, it's been my experience that a modern docker application is only occasionally a single cont
by Kalium 7y ago
That's a great example! Thank you very much for sharing.
That said, it's been my experience that a modern docker application is only occasionally a single container. More often it's a heterogeneous mix of three or more containers, collectively comprising an application. Now we've got multiple unit files, each of which handles a different aspect of the application, and now this notion of a "service" conflates system-level services like docker and application-level things like redis. There's a resulting explosion of cognitive complexity as I have to keep track of what's part of the application and what's a system-level service.
Meanwhile, the Kubernetes YAML requires an extra handful of lines under the "containers" key.
Again, thank you for bringing forward this concrete example. It's a very kind gesture. It's just possible that use-cases and personal evaluations of complexity might differ and lead people to different conclusions.
- falcolas 7y ago> There's a resulting explosion of cognitive complexity as I have to keep track of what's part of the application and what's a system-level service. If you can start them up with additional lines in a docker file (containers in a pod), it's just another ExecStart line in the unit file that calls Docker with a different container name. EDIT: You do have to think a bit differently about networking, since the containers will have separate networks by default with Docker, in comparison to a k8s pod. You can make it match, however, by creating a network for the shared containers. If, however, there's a "this service must be started before the next", systemd's dependency system will be more comprehensible than Kubernetes (since Kubernetes does not create dependency trees; the recommended method is to use init containers for such). As a side note, unit files can also do things like init containers using the ExecStartPre hook.
- GordonS 7y agoFor multi-container systems I really like Docker Compose and Swarm - a simple yaml file can define everything. It really is wonderfully simple.