this post was submitted on 02 Jul 2023
1201 points (97.5% liked)

Selfhosted

40397 readers
678 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

I'm already hosting pihole, but i know there's so much great stuff out there! I want to find some useful things that I can get my hands on. Thanks!

Edit: Thanks all! I've got a lil homelab setup going now with Pihole, Jellyfin, Paperless ngx, Yacht and YT-DL. Going to be looking into it more tomorrow, this is so much fun!

you are viewing a single comment's thread
view the rest of the comments
[–] Contravariant@lemmy.world 7 points 1 year ago (2 children)

To understand it you'll need to know roughly what an OS is. Very roughly speaking an OS provides a program with a way to access files, connect to the internet and launch other programs.

What docker does is make something a bit like a 'virtual' OS with its own filesystem, network and task manager, and then start running programs in it (which then may launch other programs).

Since you're not making a VM which must simulate all of the hardware, this is a lot cheaper. However since a docker container gets its own filesystem, network etc. it can do whatever it wants without any other programs getting in the way.

Among other things docker containers make installation a lot easier since a program will only ever see its own files (unless you explicitly add your own files to the docker container). To a large extent you also don't need to worry about installing any prerequisites, since those can just be put into the container.

Making a docker container is a bit (a lot) like installing a fresh OS, just putting the stuff you need in it and then copying the whole OS whenever you want to run the thing again. Except it's been optimized such that it takes about as much effort as launching a program, as opposed to a VM which needs dedicated resources and are generally slower than the machine that hosts them.

[–] IAm_A_Complete_Idiot@sh.itjust.works 2 points 1 year ago* (last edited 1 year ago) (1 children)

I think the more intuitive model (to me) is instead of thinking of it as a lightweight virtual machine, or a neatly packaged up OS, is to instead think of it as a process shipped with an environment. That environment includes things like files and other executables (like apt), but in of itself doesn't constitute an OS. It doesn't have its own filesystems, drivers, or anything like that. By default it doesn't run an init system like systemd either, nor does it run any other applications other than the process you execute in the environment.

[–] Contravariant@lemmy.world 1 points 1 year ago (1 children)

That's fair, but is that environment any different from just a virtual OS? I mean it doesn't have its own filesystem and drivers etc, but that's precisely because they've been made virtual.

In this context I'd say systemd is an application, not the OS, though the distinction gets iffy I know.

[–] IAm_A_Complete_Idiot@sh.itjust.works 1 points 1 year ago* (last edited 1 year ago)

Because I associate an OS with more then just an environment. It often has several running apps for instance, often a GUI or shell (which many containers don't have), are concerned about some form of hardware (virtual or physical), and just... Do more.

Containers by contrast are just a view into your filesystem, and some isolation from the rest of the environment through concepts like cgroups. All the integrations with the container host are a lot simpler (and accurate) to think of as just simply removing layers of isolation, rather then thinking of it like its own VM or OS. Capabilities just fit the model a lot better.

I agree the line is iffy since many OS's leave out a few things of the above, like RTOS's for MCUs, but I just don't think it's worth thinking of a container like its own OS considering how different it is from a "normal" Linux based OS or VM.

[–] dhruv@lemmy.dbzer0.com 1 points 1 year ago (1 children)

Does this mean Docker instances are large in size? I haven't used it either but I've been meaning to get into it. If I can use stuff like nodemon in it, it'd be great.

[–] Contravariant@lemmy.world 3 points 1 year ago

The images can get big, but they're fairly clever about it so it is manageable. Performance wise they don't take up more CPU and RAM than a regular application.

There's an (unofficial) image running nodemon on dockerhub about 250MB in size. The official NodeJS image is about 300MB (presumably they've preinstalled a bunch of stuff). You could start with the official image and install nodemon on it, that would probably be most future proof (no way of knowing if the unofficial image keeps getting updates, if any).