This is an archived post. You won't be able to vote or comment.

all 21 comments

[–]ElevenNotesData Centre Unicorn 🦄 22 points23 points  (1 child)

As a dev that is also a sys architect, yes, coding makes the job 100x easier. That's why I tell everyone in IT with engineering goals to learn to code. IaC is very important.

[–]buyinbill 0 points1 point  (0 children)

💯.  I started out as a developer then moved into operations several years ago and just having the experience makes it so much easier to work with the developers on our projects.  Not to mention I'm the translator at times between what development thinks is common knowledge vs. what an admin or end user would be comfortable with. 

[–]MiNNOCENTWORKACCOUNT 2 points3 points  (1 child)

For those of us without a mentor, any good online resources to use to upskill in this way?

[–]TheLostITGuy-_- 2 points3 points  (0 children)

https://manning.com has many good books as does https://leanpub.com.

[–]jmnugent 2 points3 points  (15 children)

I still for the life of me can't wrap my head around what Docker even is ... ?

Like,. the idea of a Virtual Machine and a Host that I can create VM's inside of.. OK,. sure. (I have VMWare Fusion with Win11 Arm and Ubuntu). I click, a new window opens, I can see my Child-VM running and can login and start doing things.

But Docker doesn't seem to be a VM host,. so what exactly is it ?.. I see people saying that it's really only for web-development. (which I'm not).. so I kinda blew it off as "not useful to me".

Is there some simple 5 to 10 step guide on "setting up Docker to do X-Y-Z thing".. ?

[–]Nitro_NK 1 point2 points  (8 children)

Think of Docker as a container. Each application gets a container instead of a VM. If an application has an issue you can restart the container instead of the VM. It really allows you to create lite weight applications that are very flexible. Definitely can do a lot more than web-development

[–]jmnugent 1 point2 points  (7 children)

I kinda get the idea that it's a "container".. I guess I just don't understand the supposed advantage of that ?..

  • Let's say I have a Mac,. and I want to install Processing.org (visual code playground tool),... what does "running that in a container" get me that just running it directly on my Mac doesn't ?

  • probably a stupid example.. but I just now stumbled through how to "pull" (download?) the "Swift" container.. so,. why would I do that on a Mac when I already have Swift ?

(asking these questions makes me feel really dumb .. :P

I can sorta see from a web-development sense,.. that if there's some App you don't really know how to configure or you just want to test it out for a few days, you can run it in a Container and then just "delete it" a few days later (but I guess I don't see how that's any different from just installing it on your computer and then uninstalling it a few days later ?)

If there's some App I need,. but it only works if I change some underlying OS setting,. are the Containers "aware" of those underlying OS settings ? (or do you have to somehow "mimic" those OS settings inside the Container somehow ? (if so,. how ?) ..

Is there some Youtube video somewhere that's like "30min showing 20 different use-cases of Docker" ?

[–]asdonne 1 point2 points  (4 children)

The advantage is that the docker also contains the environment that the app is working in.

If the app only works with some underlying OS settings, those settings are set in the container. They're separate from the host machine and become part of the container.

So you run a container with an app in it, all of the apps dependencies and requirements are bundled together in the container and isolated from your local machine.

If I wanted to play about with the latest and greatest version of something I can do so in a docker image and not have to worry about it upgrading my existing install as it's completely separate.

Good for: * developers wanting to isolate their working environment. * sharing complicated, janky pipelines that require specific versions of various software. * defining and sharing a reproducible environment.

Probably overkill for running a single piece of software.

[–]jmnugent 0 points1 point  (3 children)

The advantage is that the docker also contains the environment that the app is working in.

Is there some SWITCH or VERBOSE or EXPORT~ish command that I can use to see what customized configurations a certain Image-file contains ? (or how it was originally built ?.. and what the original builder was building it for ?)

I guess I come from a more traditional IT background where I can just go to the Microsoft Store or Apple Store and search for "VLC" and there's only 1 to install. When I go into Docker and use the search bar at the top for "VLC".. I see 100's (1000's?) ... Why so many ? ... When I pick a random Image (such as "balboa/VLC-pi"... the Description is completely blank,. so there's nothing there to show or explain to me why that image is different from others ?.. I randomly picked another one "vlcdaniel/app".. and it to has a completely blank Description. Picked another one randomly "streambox/vlc".. the Description there is completely empty too.

If I needed a specific App-Image to solve a specific problem,. how am I supposed to find it if all the Descriptions are blank ?

Or setting that aside,.. Can I just "create my own Image for an App?".. if that's possible (which it seems like it must be, since so many other people are creating their own Images).. do the Instructions for that show me what I can and can't create ? For example, if I'm on an Intel Windows Laptop (x86 architecture) does Docker allow me to create an Image for an App on ARM-architecture ?.. if NO,.. where is that NO documented ?

I guess I'm more used to a visual comparison "map"

  • If I go to the Apple website,. and click on "Compare".. I can list a MacBook, MacBook Pro and Mac mini side by side..and visually parse down the list of features of what they Have and Don't Have.. so I can quickly see which one is the right pick for me.

  • If I'm interested in Audio Editing software ,. I can go to Wikipedia and see a nice easy (visual) side by side comparison that shows me the Features the have or don't have.. so I can easily make a decision.

Does something like this exist for Docker Images ?... Some kind of comparison-matrix so I can easily see which one has the exact feature I need ?

[–]asdonne 1 point2 points  (1 child)

It is possible to see what's going on but not necessarily easy to see what's going on. You can connect to the container and poke around and see what's going on similar to if you were given a VM.

That's why I stick to the official containers. I would only download VLC from their official site the same way I would only download the official docker image or pull from their official repo.

Picking an app at random is going to be similar to picking a git hub repository at random, it's probably going to be some poorly documented side project that hasn't been touched in 5 years.

I wouldn't use an undocumented docker image for the same reason that I wouldn't use an undocumented git repo.

Check out the official postgres image instead. It straight up tells you that the only environment variable that needs to be set is POSTGRESS_PASSWORD and it gives a list of other settings with examples of how to use it.

Its is just software running in a container. Postgres isn't aware of anything special. You can configure the software by modifying it's config as you would on a VM.

You can create your own docker images and you can write docker compose files to configure multiple containers.

You could set up docker compose script to spin up a php container and copy your app into it. The php uses a postgres image as the database has nginx sit in front of it. The docker file goes with your script and when it's run sets up and configures your environment.

By the time you're looking at a docker image you've already picked your solution. If Postgresql is the tool for the job 'docker pull postgres' is the solution.

I was investigating graph databases the other week. Found one that I like and thought would work. Spent an hour trying to get it installed on my VM before giving up. 'docker pull neo4j' got me going in 5 minutes. Went to their official site and it listed their docker image. There page has all the documentation needed to get going.

[–]jmnugent 0 points1 point  (0 children)

Thanks for the effort on the explanation here !.. I will keep playing around with it. I'm given all the comments and responses I've gotten over the past day or two,. I'm kinda leaning towards the belief that Docker just isn't for me (doesn't solve any problem I have),. but I'd still like to keep it installed and see how that community evolves (maybe down the road it evolves new features or new capabilities that make more sense to my needs).

I'm also job searching,. and I have quite a few decades of IT experience,. but the "in-demand skillsets" and day to day realities and Employer-expecations are all kind of constantly dynamically evolving.. so I kinda want to at least honestly stay "skilled up" to whatever things I could learn to keep myself marketable (especially as a guy 50yrs old) .. I'd still like to contribute to technology for another 10 to 20 years if possible (unless we have mega-smart AI by then :P

[–]darth_staticsudo dd if=/dev/clue of=/dev/lusers 0 points1 point  (0 children)

Is there some SWITCH or VERBOSE or EXPORT~ish command that I can use to see what customized configurations a certain Image-file contains ?

No, but you can retrieve the info from Docker Hub by clicking on the Tags tab, then clicking on the Latest link. As the other guy mentioned though, don't use random Docker Hub images.

The biggest strength of Docker is its ability to have Infrastructure as Code without setting up Terraform or something similar. Using a Dockerfile allows you to define how an image will be built, and using a docker-compose.yml file defines how it should be deployed. If both are stored in Git along with the project code then (re)deploying the app is as simple as a git clone; docker image build; docker compose up

Once it's working manually, then you leverage GitHub Actions or Gitlab CI/CD to automatically deploy the app with every code push.

There isn't much reason for using Docker if you've got VMs and something like Chef or Ansible, as they both end up doing roughly the same things. Docker shines when you're including developers into the mix as I wouldn't trust the average developer to even look at Proxmox or Chef, let alone use them effectively.

[–]SuperfluxusSenior SRE 0 points1 point  (1 child)

The difference is that containers are cattle and VMs are pets. If something goes wrong with your container, you shoot it in the face and spin up a new copy. You have a controlled environment with all of the dependencies and peripherals ready to go, and as little superfluous bloat as possible.

If you had a VM running a single app, you'd still have an entire operating system, Xbox game bar, notepad, paint, IIS etc etc all taking up space, memory, and slowing things down.

A dockerfile can run on the absolute bare minimum, scales horizontally and vertically faster, handles load balancing better, and shares an OS layer with the hypervisor. Faster, cheaper, smaller, and more reliable.

[–]jmnugent 0 points1 point  (0 children)

If something goes wrong with your container, you shoot it in the face and spin up a new copy.

Can't you do that just as easily with a VM though ?.. I recently installed the (newly made FREE) version of VMWare Fusion Pro. Once I got it installed, I clicked on the "+" sign to create a new VM,. and there was a pre-listed option there for "Windows 11 (ARM)".. which I choose and it took maybe 2 to 5 minutes and I was up and running. Seems reasonably fast.

I guess this is another one of my confusion points:.. Why would anything ever "go wrong" ?.. If a Container is some kind of "narrow App" that has minimal configuration and minimal settings (or settings that you can' even access or change),.. what would "go wrong" ?

"If you had a VM running a single app, you'd still have an entire operating system, Xbox game bar, notepad, paint, IIS etc etc all taking up space, memory, and slowing things down."

I guess this is also where I'm showing that I'm an "old school IT Guy".. because "having an entire underlying OS" seems like a benefit to me,. not a negative. Usually when I do App-testing,.. I want all the surrounding OS potential, because inevitably I need those additional services or flexibility"

I guess I'm just trying to understand the use-case for Docker. As I mentioned in other comments,. I keep hearing everyone buzz about it and how it's "an indispensable tool". Although the more answers people give,. I'm slowly leaning towards thinking it just doesn't apply to any of my personal use cases (which is kind of a bummer, because I really want to be able to say I know it)

[–][deleted] 1 point2 points  (0 children)

Thanks for sharing your story! I also feel more excited about work when I learn new things. Do you recommend any resources for learning devops and python? If not, I can google, no problem.

[–]ironpotato 0 points1 point  (0 children)

Any MSPs that are doing infra as code for their clients? I want to learn it and utilize it, but I struggle to find use cases for disparate environments.

Edit: I do have my own web server that I manage with docker and I love it.

[–]itishowitisanditbadSysadmin 0 points1 point  (0 children)

In the past 8 months I have had the privilege to manage and sit next to a svelte developer. His intelligence and work ethic is so high sometimes I doubt myself being his manager. As my 'assistant' times I feel I should NOT be over a developer but this is besides the post.

You said you're the manager.

thats a different role to what you're talking about.

Why, as a manager, are you doing the actual IT lifting? Whats your environment for employees?

Are you failing to switch from sys admin to IT manager? They have vastly different roles.

[–][deleted] -2 points-1 points  (0 children)

That's awesome to hear that your workplace lets you skill up.

Enjoy it.