8 ms·
These things can also be solved by using distro packages and `cp`-ing config files. Docker introduces a ton of complexity into the stack. Using Docker to solve
by Seirdy 6y ago
These things can also be solved by using distro packages and `cp`-ing config files. Docker introduces a ton of complexity into the stack.
Using Docker to solve these problems is like hiring a construction company to build a birdhouse. Sure, it'll save you the work of having to build the birdhouse yourself, but...it's major overkill, and could end up costing you more effort than other options.
Now, if you were running a complex suite of mircoservices, then there might be a good reason to use containers. But containers are like JavaScript; you shouldn't jump for them before you've weighed your other options.
- boardwaalk 6y agoReproducibility with a well-written Docker image is well worth it over "cp-ing config files" shiver. Docker isn't Kubernetes -- it's not that complicated.
- u801e 6y agocp-ing config files is typically done by using config management like puppet, chef, ansible, or saltstack via templating based on server type, location, etc.
- Seirdy 6y agoWhat's so risky about cp-ing config files as opposed to typing "COPY" or mounting a volume in a Dockerfile? If you use a distro like Debian you shouldn't be worried about breaking changes, especially if you're subscribed to updates/relnotes for the critical parts of your stack (e.g., an announcements mailing list). Those are good practices to have regardless of your platform.
- kvz 6y agoDocker images aren’t built in a reproducible way unless you use something like Nix to create them
- efficax 6y agoDocker is just a layer on top of cgroups, and Dockerfiles are basically just shell scripts. It doesn't have to be a huge undertaking
- Seirdy 6y agoDocker and its tightly coupled sibling programs amount to millions of lines of code. It took billions of dollars in funding to make. There's a reason it's classified as a PaaS. It is far more than a "layer on top of cgroups". If you believe "Dockerfiles are basically shell scripts", you could try using shell scripts.
- mirekrusin 6y agoAlready done https://github.com/p8952/bocker/blob/master/README.md https://github.com/p8952/bocker/blob/master/README.md (Docker implemented in around 100 lines of bash.)
- jeofken 6y agoThe Nix package manager is great for this - the package language was initially a bit more foreign to me than Dockerfile, but the package manager gives the same reproduceability benefits, integrates well with the OS, and being purely functional/immutable let’s you roll the system state back at any time, like Git
- 0x008 6y agoYou don’t need complex microservices do get some benefits from reproducible production environments. If you have multiple machines and need all of them to have an identical environment, there is no better way. Everything else is ridiculously error prone and complicated. Ever tried to debug why two Java installations have different classpaths? Good luck. Need to upgrade different system level dependencies but your applications needs a specified version? How will you do that? Docker is like the static typing of deployments. It may seem a bit over the top at first, but it will really make your life easier.