I use docker as just another packaging format. I prefer using the native format if possible (Deb, rpm, etc), but if an up to date version is not available then I look at docker, flatpak and snap, and if those don’t have it then I build from source.
I simply use it in place of virtual machines whenever I can. Containers are lighter, so I can have more of them. As a packaging format rarely but yes. Also use build images for GitLab. Used to have them as build artifacts when I was working on back-end applications, and use those for deployment.
I think Docker containers are great. I thought jails and zones were great, lighter than VMs but relatively isolated. The best part of Docker is that they combined the isolation with a decent Makefile/build replacement and built out OS compatibility so that a file can turn into a working app on any box.
At home, I’ve used it for a couple of little web servers I run on the LAN. For work, it’s been great for migrating classic backend java apps that run using windows tasks to a more cloud-native approach. It’s nice because you can cluster them and then have them scale up automatically when actual load comes in. When you rollback, the container should be stateless so you can just deploy the old definition.
For new apps it’s especially convenient, I don’t know that serverless tech like Lambda is quite ready for adoption for every app. I’ve been using Lambda for small things or things I can break into lots of small loads that run in seconds. You can write your app to pass in resource names of secrets and then your app can run in something like Fargate without having to deal with EC2. No secrets in envars or anything, just pass in the resource id (arn in AWS) as an envar, maybe some config settings, the place to copy a config file from, etc.
Anyways I think they are an interesting version of a tech that’s been proven already in other contexts. The simple Dockerfile format, good docs, DockerHub, widespread adoption, it’s not perfect but it’s been good enough in the right confluence of sore spots in tech. It especially helps that they are working with industry in terms of opening the container format (OCI) and working hard on integrating kernel updates, and again, it runs on Windows, Linux, Mac, with only minimal fanfare involved. A tech literate person can ‘just run’ anything you write and with mainstream adoption, they likely won’t even need to install anything.
I run most things in docker if possible, really like how docker works and what it gives. At home I’m running, radarr, sonarr, jackett, transmission, jellyfin, bitbucket, confluence, Jira, pypi, reprepro, nginx, postgres, MySQL, pgadmin, phpmyadmin and two tools I made myself for cicd, monitoring and orchestrating of containers and assorted code I push to my repo.
Reason I like docker, is that it first of all helps with dealing with software dependencies and conflicts. Makes it easy to update and maintain any software. Takes me 10 minutes to do a clean install of my server with all services up and running.
instead of windows vm’s I run Dockers with wine and make thin clients connect to them lol
users always complain they can’t run random programs they download
I’m using docker to host applications that have a very complicated setup, like email server for example. It’s far easier to just spin up a VM for something like mailcow and just run update script from time to time.
I wish there was a way to reliably update the applications automatically, I would use docker more often I think.
At home, I use it to spin up quick tests mainly. I recently moved my Plex instance into Docker so I never have to deal with upgrade pains, app or OS, again.
At work, I help developers setup workflows for code tests using Docker. I have a few production application stacks running in Docker as well. Increasingly, vendors are shipping their apps in Docker. Containers bring a lot of flexibility to the party. Run it anywhere pretty much. I’m working on an application now that is kind of a pieced together job, a real special unicorn that I don’t want to babysit 2 years from now. So I’m working on getting the stack in Docker. If I can get that working well then the team, which are a bunch of Windows admins, can run this Linux app on Windows if they want.
I work on a lot of stuff. And my memory is terrible. I try to make it easy on myself down the road after I’ve slept and barely remember a thing about what I built. Docker keeps it nicely contained (crap, pun?) and I use docker-compose as much as possible because I like the formatting and it is self-documenting. Kubernetes is taking over but at the core, today, is the Docker runtime unless you live in RedHatville. The Kompose utility can take those docker-compose files and spit out all the k8s yaml. So Docker itself brings a lot of capability and the community has built really cool stuff around it. Jails, Zones, LXD, all came before but Docker hit the right note at the right time and grabbed the mind share. Luckily, it doesn’t suck to much.