Proxmox mit Docker im LXC Container

Mit der aktuellen Proxmox Version (5.x und auch 6.x) lässt sich Docker auch in einem LXC Container betreiben.
Damit dies funktioniert, sind vorher aber ein paar Einstellungen notwendig.

Der neu erstellte Container muss unprivileged sein. (mittlerweile Standard)

In den Container Settings unter Options → Features, müssen keyctl und nesting aktiviert werden.

Docker lässt sich jetzt problemlos in einem LXC Container installieren und ausführen.

Docker Installation:

Docker Management:

7 Gedanken zu „Proxmox mit Docker im LXC Container“

  1. Hallo,

    ich konnte LXC Container mit Docker nach deiner Anleitung erfolgreich erstellen. Aber als ich versucht habe über den restore Befehl die Diskgröße zu verkleinern schlägt das immer fehl „mknod Operation not permitted“ scheint mit „/docker/overlay2 “ zusammenzuhängen.

    Jetzt denke ich mir, dass die Backups der LXC Container mit Docker nicht wirklich brauchbar sind, da ein restore ja nicht klappt.
    Hast du das Problem auch, oder konntest du das lösen?

    Ich verwende Proxmox 6.1.8

    Antworten
    • Hallo,

      ein backup und restore eines Containers (egal welcher Art, auch mit Docker) funktioniert problemlos!!

      Das sollte über die GUI bei dir ja auch funktionieren, oder?
      Wie ist denn dein restore Befehl um die Platte zu verkleinern?

      Antworten
      • Mein Vorgehen ist folgendes:
        pct stop 106

        vzdump 106 -storage local -compress lzo

        pct restore 108 /var/lib/vz/dump/vzdump-lxc-106-xxx.tar.lzo -rootfs 8 -storage local-lvm -unprivileged

        Der Befehl schlägt auch fehl, wenn ich die Größe der Platte nicht verändere.
        Bei Containern die kein Docker enthalten funktioniert das Problemlos.

        Lass ich das Flag „unprivileged“ weg wird der Befehl ausgeführt, aber den Container läuft dann nicht wirklich wegen falschen Rechten (vermute ich mal, aber ich wollte ja wieder einen unprivileged Container haben).

        Hast du ansonsten einen Tipp wie ich die Containergröße verkleinern kann?

        Antworten
        • Hab das eben zweimal ausprobiert. Proxmox 6.1-8, 10GB LXC Container mit Docker inkl. 2 Containern.
          – backup des LXC Containers im Webinterface erstellt
          – dann auf die Konsole:

          $ pct destroy 360
          $ pct restore 360 /mnt/pve/backup/dump/vzdump-lxc-360-xyz.tar.lzo -rootfs 6 -unprivileged -storage local-lvm
          Total bytes read: 1812234240 (1.7GiB, 226MiB/s)
          Detected container architecture: amd64
          root@pmx01:~# pct restore 360 /mnt/pve/backup/dump/vzdump-lxc-360-xyz.tar.lzo -rootfs 6 -unprivileged -storage local-lvm
          Logical volume "vm-360-disk-0" created.
          mke2fs 1.44.5 (15-Dec-2018)
          Discarding device blocks: done
          Creating filesystem with 1572864 4k blocks and 393216 inodes
          Filesystem UUID: aaad622d-c619-427a-c79c-321f4bdab1d8
          Superblock backups stored on blocks:
          32768, 98304, 163840, 229376, 294912, 819200, 884736

          Allocating group tables: done
          Writing inode tables: done
          Creating journal (16384 blocks): done
          Multiple mount protection is enabled with update interval 5 seconds.
          Writing superblocks and filesystem accounting information: done

          extracting archive '/mnt/pve/backup/dump/vzdump-lxc-360-2020_03_26-xyz.tar.lzo'
          Total bytes read: 1812234240 (1.7GiB, 225MiB/s)
          Detected container architecture: amd64

          Hat problemlos funktioniert. Shrinkt von 10GB auf 6GB und läuft.
          Ohne Neuinstallation des Containers wüsste ich jetzt keine andere Möglichkeit den Container kleiner zu bekommen.

          Antworten
          • Hallo,
            komisch, eben nochmal probiert und ich erhalte immer noch den Fehler, hier mal die komplette Ausgabe:

            root@pve:~# pct restore 107 /var/lib/vz/dump/vzdump-lxc-106-2020_03_30-08_50_32.tar.lzo -rootfs 8 -unprivileged -storage local-lvm
            Logical volume „vm-107-disk-0“ created.
            mke2fs 1.44.5 (15-Dec-2018)
            Discarding device blocks: done
            Creating filesystem with 2097152 4k blocks and 524288 inodes
            Filesystem UUID: 0b2c8abe-1a72-4651-b465-f223b04f89ee
            Superblock backups stored on blocks:
            32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

            Allocating group tables: done
            Writing inode tables: done
            Creating journal (16384 blocks): done
            Multiple mount protection is enabled with update interval 5 seconds.
            Writing superblocks and filesystem accounting information: done

            extracting archive ‚/var/lib/vz/dump/vzdump-lxc-106-2020_03_30-08_50_32.tar.lzo‘
            tar: ./var/lib/docker/overlay2/cc0f9d85a741394bd12a64210e3852ad7a44ea29622686f9f24d01c19802a1ce/diff/tmp/patches: Cannot mknod: Operation not permitted
            Total bytes read: 4856279040 (4.6GiB, 148MiB/s)
            tar: Exiting with failure status due to previous errors
            Logical volume „vm-107-disk-0″ successfully removed
            unable to restore CT 107 – command ‚lxc-usernsexec -m u:0:100000:65536 -m g:0:100000:65536 — tar xpf – –lzop –totals –one-file-system -p –sparse –numeric-owner –acls –xattrs ‚–xattrs-include=user.*‘ ‚–xattrs-include=security.capability‘ ‚–warning=no-file-ignored‘ ‚–warning=no-xattr-write‘ -C /var/lib/lxc/107/rootfs –skip-old-files –anchored –exclude ‚./dev/*“ failed: exit code 2

            Naja vielleicht finde ich noch eine Lösung.
            Danke für den Test auf deinem System.

Schreibe einen Kommentar