I run a small server with Proxmox, and I’m wondering what are your opinions on running Docker in separate LXC containers vs. running a specific VM for all Docker containers?

I started with LXC containers because I was more familiar with installing services the classic Linux way. I later added a VM specifically for running Docker containers. I’m thinking if I should continue this strategy and just add some more resources to the docker VM.

On one hand, backups seem to be easier with individual LXCs (I’ve had situations where I tried to update a Docker container but the new container broke the existing configuration and found it easiest just to restore the entire VM from backup). On the otherhand, it seems like more overhead to install Docker in each individual LXC.

5 points

Honestly you can do either.

LXC

  • shares host kernel (theoretically lighter weight)

  • less isolation from host (less secure)

  • devices are passed via device files

  • less flexible due to dependence on host

  • no live transfers

  • filesystem shared with host

virtualization

  • has own kernel and filesystem

  • supports live transfers

  • hardware pass though is done at the device level

  • more flexible due to independent kernel

  • more overhead

permalink
report
reply
1 point

This thread has raised so many questions I’d like answered:

  1. Why are people backing up containers?
  2. Why are people running docker-in-docker?
  3. I saw someone mention snapshotting containers…what’s the purpose of this?
  4. Why are people backing up docker installs?

Seriously thought I was going crazy reading some of these, and now I’m convinced the majority of people posting suggestions in here do not understand how to use containers at all.

Flat file configs, volumes, layers, versioning…it’s like people don’t know what these are are how to use them, and that is incredibly disconcerting.

permalink
report
reply
1 point
*
  1. I’m backing up LXCs, like I’d back up a VM. I don’t back up Docker containers, just their config and volumes.
  2. I don’t think anyone is doing that. We’re talking about installing Docker in LXC. One of the Proxmox rules you can live by is to not install software on the host. I don’t see the problem with installing Docker in an LXC for that reason.
  3. I’ll snapshot an LXC before running things like a dist-upgrade, or testing something that might break things. It’s very easy, so why not?
  4. I back up my LXC that has Docker installed because that way it’s easy to restore everything, including local volumes, to various points in time.
permalink
report
parent
reply
1 point

I’m guessing people are largely using the wrong terminology for things that make more sense, like backing up/snapshotting config and data that containers use. Maybe they’re also backing up images (which a lot of people call “containers”), just in case it gets yanked from wherever they got it from.

That said, yeah, someone should write a primer on how to use Docker properly and link it in the sidebar. Something like:

  1. docker-compose or podman for managing containers (a lot easier than docker run)
  2. how to use bind mounts and set permissions, as well as sharing volumes between containers (esp. useful if your TLS cert renewal is a separate container from your TLS server)
  3. docker networks - how to get containers to talk w/o exposing their ports system-wide (I only expose two ports, Caddy for TLS, and Jellyfin because my old smart TV can’t seem to handle TLS)
  4. how tags work - i.e. when to use latest, the difference between <image>:<major>.<minor>.<patch> and <image>:<major>, etc, and updating images (i.e. what happens when you “pull”)

I’ve been using docker for years, but I’m sure the are some best practices I am missing since I’m more of a developer than a sysadmin.

permalink
report
parent
reply
2 points

Follow-up question: do you have any good resources to start with for a simple overview on how we should be using containers? I’m not a developer, and from my experiences most documentation on the topic I’ve come across targets developers and devops people. As someone else mentioned, I use docker because it’s the way lots of things happen to be packaged - I’m more used to the Debian APT way of doing things.

permalink
report
parent
reply
2 points

I don’t have anything handy, but I see your point, and I’d shame lazy devs for not properly packaging things maybe 😂

You mentioned you use Proxmox, which is already an abstraction on bare-metal, so that’s about as easy as easy an interface as I can imagine for a hosted machine without using something like Docker Desktop and using it to manage a machine remotely (not a good idea).

As a develop, I guess I was slightly confused on some suggestions on ways to use things being posted in this sub, but some of the responses I guess clarify that. There isn’t enough simplicity in explaining the “what” of containers, so people just use them the simplest way they understand, which also happens to be the “wrong way”. It’s kind of hard to grasp that when you live with these things 24/7 for years. Kind of a similar deal with networking solutions like Tailscale where I see people installing it everywhere and not understanding why that’s a bad idea 😂

So save you a lot of learning, I’ll just not go down a rabbit hole if you just want something to work well. Ping back here if you get into a spot of trouble, and I’ll definitely hop in to give a more detailed explanation on a workflow that is more effective than what it seems most people in here are using.

In fact, I may have just been inspired to do a write up on it.

permalink
report
parent
reply
1 point

Fair enough, would love to read something like this :-)

Yeah, I’ve been into Linux for 20 years, sometimes a bit on/off, as an all-around-sysadmin in mainly Windows places. And learned just enough of Docker to use it instead of apt - which I’d prefer, but as you said, many newer services don’t exist in debian repos or as .deb packages, only docker or similar.

permalink
report
parent
reply
4 points

Because a lot of people don’t learn docker, they install docker because some software they want to use is distributed that way.

permalink
report
parent
reply
2 points

Yup, this is me exactly. I’ve been planning on going more indepth but haven’t found the time. Inunderstand Linux and how to use LXCs, docker less so.

permalink
report
parent
reply
3 points

I used to use LXC, and switched to VM since internet said it was better.

I kinda miss the LXC setup. Day to day I don’t notice any difference, but increasing storage space in VM was a small pain compared to LXC. In VM I increased disk size through proxmox, but then I had to increase the partition inside VM.

In LXC you can just increase disk size and it immediately is available to the containers

permalink
report
reply
3 points

I don’t think the internet gave particularly good advice here. Sure, there are use-cases for both, and that’s why we have both approaches available. But you can’t say VMs are better than containers. They’re a different thing. They might even be worse in your case. But I mean in the end, all “simple thruths” are wrong.

permalink
report
parent
reply
1 point

Personally I just Mount file shares within the VM

permalink
report
parent
reply
1 point

I tried that too for a time, using samba. But databases didn’t work from a share. I just found it easier in the end to have volumes inside the LXC / VM directly

permalink
report
parent
reply
2 points

Using Samba for a database is crazy. You want unencrypted NFS.

Databases aren’t all that big in my case so I usually just leave them be.

permalink
report
parent
reply
3 points

Dont listen to them! The main issue with containers vs vm is security as you lxc runs in the hosts, while a vm runs on the host.

Use what you are familiar with and remember that lxc are containers and docker are containers, but the use of them are vastly different.

permalink
report
parent
reply
2 points

If you use Live Migrate, realize that it doesn’t work on an LXC, only VMs. Your containers will be restarted with the LXC on the new node.

permalink
report
reply
2 points

Run Docker at the host level. Every level down from there is not only a knock to performance across the spectrum, it just makes a mess of networking. Anyone in here saying “it’s easy to backup in a VM” has completely missed the point of containers, and apparently does not understand how to work with them.

You shouldn’t ever need to backup containers, and if you’re expecting data loss if one goes away, yerdewinitwrawng.

permalink
report
reply
1 point
*

Just chiming in, this is not recommended for proxmox

The documentation (FAQ 13) actually directly says that docker should be installed as a QEMU VM on proxmox and that it should not be installed on the Proxmox VE Host

permalink
report
parent
reply
0 points

People are probably looking for tools like cloud init, butane and Ansible

permalink
report
parent
reply
1 point

These should absolutely no place in the mix with containers at all. Very confused how you’ve made these work of that’s what you’re suggesting.

permalink
report
parent
reply
1 point

No, I mean they should setup VMs and LXC containers in automated way. I get the impression that some people here are trying to use a Dockerfile instead of something like Ansible where the end changes apply to a end system instead of creating a template for temporary deployments.

permalink
report
parent
reply
2 points

You dont need or want docker on your vm host. But a bare metal docker host can solve many peoples needs.

permalink
report
parent
reply
-1 points

What in the world are you talking about? It’s literally the entire point of containers orchestration systems, and the reason why you don’t run containers inside containers. It’s makes zero sense.

permalink
report
parent
reply

Selfhosted

!selfhosted@lemmy.world

Create post

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!

Community stats

  • 6.3K

    Monthly active users

  • 3.9K

    Posts

  • 87K

    Comments