10
submitted 2 years ago* (last edited 2 years ago) by mudeth@lemmy.ca to c/selfhosted@lemmy.world

Hi, I'm just getting started with Docker, so apologies in advance if this seems silly.

I used to self-host multiple services (RSS reader, invoicing software, personal wiki) directly on a VPS using nginx and mariadb. I messed it up recently and am starting again, but this time I took the docker route.

So I've set up the invoicing software (InvoiceNinja), and everything is working as I want.

Now that I want to add the other services (ttrss and dokuwiki), should I set up new containers? It feels wasteful.

Instead, if I add additional configs to the existing servers that the InvoiceNinja docker-compose generated (nginx and mysql), I'm worried that an update to Invoiceninja would have a chance of messing up the other setups as well.

It shouldn't, from my understanding of how docker containers work, but I'm not 100% sure. What would be the best way to proceed?

you are viewing a single comment's thread
view the rest of the comments
[-] ShortN0te@lemmy.ml 1 points 2 years ago

A compose file is just the configuration of one or many containers. The container is downloaded from the chosen registry and pretty much does not get touched.

A compose file 'composes' multiple containers together. Thats where the name comes from.

When you run multiple databases then those run parallel. So every database has its own processes. You can even see them on the host system by running something like top or htop. The container images themself can get deduplicated that means that container images that contain the same layer just use the already downloaded files from that layer. A layer is nothing else as multiple files bundled. For example you can choose a 'ubuntu layer' for the base of your container image and every container that you want to download using that same layer will just simply use those files on creation time. But that basically does not matter. We are talking about a few 10th or 100th of MB in extreme cases.

But important, thoses files are just shared statically and changing a file in one container does not affect the other. Every container has its own isolated filesystem.

I understand the architecture, I'm just not sure about how docker streamlines separate containers running the same process (eg, mysql).

Quite simple actually. It gives every container its own environment thats to namespacing. Every process thinks (more or less) it is running on its own machine.

There are quite simple docker implementations with just a couple of hundreds lines of code.

this post was submitted on 18 Jan 2024
10 points (81.2% liked)

Selfhosted

60723 readers
311 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:

Detailed Rules Post

  1. Be civil.

  2. No spam.

  3. Posts are to be related to self-hosting.

  4. Don't duplicate the full text of your blog or readme if you're providing a link.

  5. Submission headline should match the article title.

  6. No trolling.

  7. Promotion posts require active participation, with an account that is at least 30 days old. F/LOSS without a paywall has exceptions, with requirements. See the rules link for details. Tags [CBH] or [AIP] are required, see the links in Rule 8 for details.

  8. AI-related discussions and AI-involved promotional posts have additional requirements for tagging, as noted in Rule 7 and the AI & Promotional Post Expanded Rules post, and find example disclosures here.

Resources:

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

Questions? DM the mods!

founded 3 years ago
MODERATORS