Skip Navigation

InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)TE
Posts
0
Comments
299
Joined
2 yr. ago

  • VM's have much bigger overhead, for one. And VM's are less reproducible too. If you had to set up a VM again, do you have all the steps written down? Every single step? Including that small "oh right" thing you always forget? A Dockerfile is basically just a list of those steps, written in a way a computer can follow. And every time you build an image in docker, it just plays that list and gives you the resulting file system ready to run.

    It's incredibly practical in some cases, let's say you want to try a different library or upgrade a component to a newer version. With VM's you could do it live, but you risk not being able to go back. You could make a copy or make a checkpoint, but that's rather resource intensive. With docker you just change the Dockerfile slightly and build a new image.

    The resulting image is also immutable, which means that if you restart the docker container, it's like reverting to first VM checkpoint after finished install, throwing out any cruft that have gathered. You can exempt specific file and folders from this, if needed. So every cruft and change that have happened gets thrown out except the data folder(s) for the program.

  • Modularity, compartmentalization, reliability, predictability.

    One software needs MySQL 5, another needs mariadb 7. A third service needs PHP 7 while the distro supported version is 8. A fourth service uses cuda 11.7 - not 11.8 which is what everything in your package manager uses. a fifth service's install was only tested on latest Ubuntu, and now you need to figure out what rpm gives the exact library it expects. A sixth service expects odbc to be set up in a very specific way, but handwaves it in the installation docs. A seventh program expects a symlink at a specific place that is on the desktop version of the distro, but not the server version. And then you got that weird program that insist on admin access to the database so it can create it's own user. Since I don't trust it with that, let it just have it's own database server running in docker and good riddance.

    And so on and so forth.. with docker not only is all this specified in excruciating details, it's also the exact same setup on every install.

    You don't have it not working on arch because the maintainer of a library there decided to inline a patch that supposedly doesn't change anything, but somehow causes the program to segfault.

    I can develop a service on windows, test it, deploy it to my Kubernetes cluster, and I don't even have to worry about which machine to deploy it on, it just runs it on a machine. Probably an Ubuntu machine, but maybe on that Gentoo node instead. And if my osx friend wants to try it out, then no problem. I can just give him a command, and it's running on his laptop. No worries about the right runtime or setting up environment or libraries and all that.

    If you're an old Linux admin... This is what utopia looks like.

    Edit: And restarting a container is almost like reinstalling the OS and the program. Since the image is static, restarting the container removes all file system cruft too and starts up a pristine new copy (of course except the specific files and folders you have chosen to save between restarts)

  • And what do you think CD writers are? I'm not talking about rewriteable CDs here. Normal burn once CDs. You could write some files, then decide to replace a file and add more.

    Look up cd sessions. Until you finalized it, and as long as there was still free space, you could add, modify and delete data on it.

  • It can be surprisingly helpful. I needed a small program to change between three "states", two separate programs that use the gpu and can't run at the same time that I run on a server, and an "idle" state where none of them are running. And a simple web ui to check and change state.

    This was the conversation: https://chat.openai.com/share/661322bc-2bd2-4608-9c7f-ec6d9f488601

    Note that it did mess up the transitions code a bit, but it was easy to fix after a brief look at the documentation. However, the http page worked 100% straight off the bat, and the flask code and running of the commands worked perfectly. It's not a big thing, but a lot of "boilerplate" code and double checking docs was avoided. And this is the free tier.

  • Look at the description of the video. It's not automatically generated. He made several voices and narrator and applied it to each character.

    While insanely cool, it's not "put in book here, get audio book there"

  • Had a router / firewall salesman talk about a firewall's ddos protection once. I kinda laughed in his face and asked how they did that feat.

    Of course, he had no clue. But was still very confident in it. After all, it said so on the box.