LXC Container wird riesig mit Docker trotz aufs/overlay/lcx.cap.drop

pascal585

Member
Dec 6, 2021
15
0
6
30
Hallo miteinander,

ich bin Pascal, neu hier und nutze seit längerer Zeit schon Proxmox. Bisher bin ich auch sehr glücklich damit.

Allerdings habe ich ein kleines Problem:
Ich nutze einige Dienste, die nur unter Docker laufen, wie z.B. der nginx proxy manager. Diesen Dienst habe ich wiederum in einem LXC laufen (Ubuntu 20.04 und auch Debian 11 getestet).

Trotz (aus meiner Sicht) richtiger Settings werden die LXC-Container riesig. Der nginx proxy manager ist bei identischer Konfiguration bei einem Bekannten nur halb so groß wie bei mir.

Folgende Konfigurationen werden verwendet:

proxmox:
- ZFS file system
- aufs/overlay aktiv unter /etc/modules-load.d/modules.conf

LXC-Container mit docker:
Code:
arch: amd64

cores: 1

features: keyctl=1,nesting=1

hostname: npm

memory: 512

net0: name=eth0,bridge=vmbr0,firewall=1,gw=192.168.178.1,hwaddr=***,ip=192.168.178.3/24,ip6=dhcp,type=veth

onboot: 1

ostype: ubuntu

rootfs: HDD-4TB:subvol-105-disk-1,size=28G

startup: order=2

swap: 512

unprivileged: 1

lxc.apparmor.profile: unconfined

lxc.cgroup.devices.allow: a

lxc.cap.drop:

docker info:
Code:
Client:

 Context:    default

 Debug Mode: false

 Plugins:

  app: Docker App (Docker Inc., v0.9.1-beta3)

  buildx: Build with BuildKit (Docker Inc., v0.6.3-docker)

  scan: Docker Scan (Docker Inc., v0.9.0)



Server:

 Containers: 2

  Running: 2

  Paused: 0

  Stopped: 0

 Images: 2

 Server Version: 20.10.10

 Storage Driver: vfs

 Logging Driver: json-file

 Cgroup Driver: systemd

 Cgroup Version: 2

 Plugins:

  Volume: local

  Network: bridge host ipvlan macvlan null overlay

  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog

 Swarm: inactive

 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc

 Default Runtime: runc

 Init Binary: docker-init

 containerd version: *xxxxxx*

 runc version: v1.0.2-0-g52b36a2

 init version: de40ad0

 Security Options:

  seccomp

   Profile: default

  cgroupns

 Kernel Version: 5.13.19-1-pve

 Operating System: Ubuntu 21.04

 OSType: linux

 Architecture: x86_64

 CPUs: 1

 Total Memory: 512MiB

 Name: npm

 ID: H7M6:TWLU:2AMK:6QGP:Q6GX:TE3R:5QMW:32FC:5P2D:6MRN:F2TX:W6WP

 Docker Root Dir: /var/lib/docker

 Debug Mode: false

 Registry: https://index.docker.io/v1/

 Labels:

 Experimental: false

 Insecure Registries:

  127.0.0.0/8

 Live Restore Enabled: false

Nach längerer Recherche fand ich heraus, dass das ZFS file system wohl Quelle des Problems sein könnte. Bzw. das vfs im Rahmen von docker. Leider bekomme ich das file system nicht auf overlay umgestellt, wenn ich die daemon.json Datei für Docker mit dem entsprechenden Parameter anlege.

Habt ihr eine Idee, wie ich es hinbekomme, dass meine Container nicht aus allen Nähten platzen? Auf vollwertige VMs würde ich an der Stelle gern verzichten. Die docker container leisten eher kleinere Dienste, da wäre eine VM aus meiner Sicht nicht das Richtige.

Würde das Formatieren meiner Festplatte nach BTRFS mein Problem lösen?

Über Unterstützung würde ich mich sehr freuen. :)


Viele Grüße
Pascal
 
Last edited:
Ich würde mal checken ob dein Gast trim/discard nutzt. Sonst wachsen deine Gäste immer weiter weil nichts gelöscht wird.
 
...oder mal
pct list | awk '/^[0-9]/ {print $1}' | while read ct; do pct fstrim ${ct}; done
am PVE ausführen und staunen..
 
...oder mal
pct list | awk '/^[0-9]/ {print $1}' | while read ct; do pct fstrim ${ct}; done
am PVE ausführen und staunen..

Habe ich gemacht... Ausgabe:

fstrim: /var/lib/lxc/100/rootfs/: the discard operation is not supported
command 'fstrim -v /var/lib/lxc/100/rootfs/' failed: exit code 1
fstrim: /var/lib/lxc/101/rootfs/: the discard operation is not supported
command 'fstrim -v /var/lib/lxc/101/rootfs/' failed: exit code 1
fstrim: /var/lib/lxc/103/rootfs/: the discard operation is not supported
command 'fstrim -v /var/lib/lxc/103/rootfs/' failed: exit code 1
fstrim: /var/lib/lxc/104/rootfs/: the discard operation is not supported
command 'fstrim -v /var/lib/lxc/104/rootfs/' failed: exit code 1
fstrim: /var/lib/lxc/105/rootfs/: the discard operation is not supported
command 'fstrim -v /var/lib/lxc/105/rootfs/' failed: exit code 1
fstrim: /var/lib/lxc/106/rootfs/: the discard operation is not supported
command 'fstrim -v /var/lib/lxc/106/rootfs/' failed: exit code 1
fstrim: /var/lib/lxc/107/rootfs/: the discard operation is not supported
command 'fstrim -v /var/lib/lxc/107/rootfs/' failed: exit code 1
fstrim: /var/lib/lxc/108/rootfs/: the discard operation is not supported
command 'fstrim -v /var/lib/lxc/108/rootfs/' failed: exit code 1
fstrim: /var/lib/lxc/109/rootfs/: the discard operation is not supported
command 'fstrim -v /var/lib/lxc/109/rootfs/' failed: exit code 1
root@proxmox:~#
 
Ich habe da aber hier das gleiche Problem obwohl die LXCs auf einem Thin-SSD-ZFS-Pool laufen.:
Code:
root@Hypervisor:~# pct fstrim 100
fstrim: /var/lib/lxc/100/rootfs/: the discard operation is not supported
command 'fstrim -v /var/lib/lxc/100/rootfs/' failed: exit code 1
 
@Dunuin: Ich vermute, dass es an ZFS liegt. Migriere jetzt in dem Moment meine Container nach BTRFS. Werde meine Erfahrungen berichten, vielleicht kannst du davon partizipieren.
 
Bei dem LXC, der auf einem SSD LVM-Thin läuft, da klappt das "pct fstrim" auch:
Code:
root@Hypervisor:~# pct fstrim 121
/var/lib/lxc/121/rootfs/: 81.2 GiB (87184261120 bytes) trimmed
...dafür klappt bei dem LXC dann das fstrim innerhalb des Gastes nicht:
Code:
root@GlaylogLXC:~# fstrim /
fstrim: /: FITRIM ioctl failed: Operation not permitted

Bin da dann auch etwas überfragt, wie ich da für meine SSDs und das Thin-Provisioning trimmen sollen, wenn das weder vom Gast und noch vom Host aus richtig klappt. Bei VMs hatte ich da nie Probleme (virtio SCSI + SCSI + Discard + SSD Emulation in den VM Einstellungen), egal ob ZFS oder LVM-Thin.
 
Last edited:
So, Migration ist durch und siehe da: Die Container sind viel kleiner.
Beispiel: nginx proxy manager unter ZFS/VFS 8 GB und unter BTRFS/overlay nur 2,3 GB.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!