Debmatic in Docker

Debian/Ubuntu basierte CCU

Moderator: Co-Administratoren

Antworten
ptweety
Beiträge: 522
Registriert: 07.01.2017, 16:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 66 Mal

Debmatic in Docker

Beitrag von ptweety » 01.10.2019, 21:47

Hallo zusammen,

hier ein paar Notizen zu meinen bisherigen (vergeblichen) Versuchen debmatic in docker container zu packen:

Vorbedingungen: debmatic verwendet Systemd, daher braucht man das auch im container. Mögliche Base-images sind etwa: Dazu muss noch JAVA vorhanden sein. Mögliche Variante ist dann Zulu, dass man wie hier ins Dockerfile bekommt: Und dann braucht man natürlich noch die ganzen Abhängigkeiten von debmatic, die vorab im container zu installieren sind. etwa:
  • udev kmod gnupg2 apt-transport-https wget debconf ipcalc net-tools rsync build-essential dkms
Irgendwann kommt dann noch debmatic. M.E. ist hier noch das post-install ein weiteres Problem, denn dort wollen die installierten services auch gleich aktiviert werden. Beim build des containers läuft aber noch kein Systemd :( Damit muss man wohl debmatic runterladen, per dpkg entpacken und das post-install rauswerfen und dann erst installieren. Hier kann ich aber auch daneben liegen.

Eigentlich wäre der bessere Weg, wenn man alle einzelnen services (evtl. auch Bündel davon) in separate container packt. Oder halt Alternativ statt Docker lieber auf sowas wie podman für Debian wartet. Bei letzterem ist m.E. Systemd gleich mit an Bord.

ACHJA: der Host muss natürlich die Kernel-module installiert haben und das ganze muss dann auch in den container durchgereicht werden. Siehe Dockerfile und docker-compose.yml

Dockerfile:

Code: Alles auswählen

FROM debian:buster

ENV container docker
ENV LC_ALL C
ENV DEBIAN_FRONTEND noninteractive

RUN apt update \
    && apt install -y systemd udev kmod gnupg2 apt-transport-https wget \
    && apt clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9 \
    && bash -c 'echo "deb http://repos.azulsystems.com/debian stable main" > /etc/apt/sources.list.d/zulu.list' \
    && apt update \
    && apt install -y zulu-11 \
    && apt clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN wget -q -O - https://www.debmatic.de/debmatic/public.key | apt-key add - \
    && bash -c 'echo "deb https://www.debmatic.de/debmatic stable main" > /etc/apt/sources.list.d/debmatic.list' \
    && apt update \
    && apt install -y debconf ipcalc net-tools rsync build-essential dkms \
    && RUNLEVEL=1 apt install -y lighttpd \
#    && RUNLEVEL=1 apt install -y pivccu-modules-dkms \
#    && RUNLEVEL=1 apt install -y debmatic \
    && apt clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN rm -f /lib/systemd/system/multi-user.target.wants/* \
    /etc/systemd/system/*.wants/* \
    /lib/systemd/system/local-fs.target.wants/* \
    /lib/systemd/system/sockets.target.wants/*udev* \
    /lib/systemd/system/sockets.target.wants/*initctl* \
    /lib/systemd/system/sysinit.target.wants/systemd-tmpfiles-setup* \
    /lib/systemd/system/systemd-update-utmp*

STOPSIGNAL SIGRTMIN+3

VOLUME [ "/sys/fs/cgroup", "/run", "/run/lock", "/tmp" ]

CMD ["/lib/systemd/systemd"]

docker-compose.yml:

Code: Alles auswählen

version: '3.6'

services:
  debmatic:
    build:
      context: .
      args:
        VERSION: 0.1
    image: ptweety/debmatic
    container_name: debmatic
    restart: unless-stopped
    volumes:
      - "/sys/fs/cgroup:/sys/fs/cgroup:ro"
    tmpfs:
      - /run
      - /run/lock
      - /tmp
    devices:
      - "/dev/raw-uart:/dev/raw-uart:rwm"
      - "/dev/eq3loop:/dev/eq3loop:rwm"
      - "/dev/gpiochip0:/dev/gpiochip0:rwm"
#    sysctls:
#      - kernel.sched_rt_runtime_us=-1
    stop_signal: SIGRTMIN+3
    privileged: true
    cap_add:
      - SYS_ADMIN
#    environment:
      #USER_ID: 9001
      #GROUP_ID: 9001
    ports:
      - "8081:80"
      - "1999:1999"
      - "2000:2000"
      - "2001:2001"
      - "2010:2010"
      - "8181:8181"
      - "9292:9292"

Benutzeravatar
deimos
Beiträge: 5383
Registriert: 20.06.2017, 10:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: Leimersheim
Hat sich bedankt: 121 Mal
Danksagung erhalten: 949 Mal
Kontaktdaten:

Re: Debmatic in Docker

Beitrag von deimos » 01.10.2019, 22:02

Hi,

am post-install soll es nicht scheitern, das könnte ich bei Bedarf anpassen.
Was im yml auf jeden Fall mal fehlt, sind die beiden Geräte /dev/mmd_bidcos und /dev/mmd_hmip. Diese werden dummerweise erst durch den multimacd erstellt, also erst wöhrend der Laufzeit des Containers.

Viele Grüße
Alex

nicx
Beiträge: 307
Registriert: 18.05.2013, 22:31
Hat sich bedankt: 4 Mal

Re: Debmatic in Docker

Beitrag von nicx » 29.10.2019, 08:35

Hi,

gibts hier evtl. Fortschritte? Ich wäre auch *sehr* an einer Docker Variante von Debmatic interessiert, da ich keinerlei HW-Dongles nutze sondern nur LAN-Gateways.

Und bzgl. Systeme gibt evtl. eine Hilfreiche Änderung, zumindest für das Synology Docker Paket:

Code: Alles auswählen

18.09.1
2019-01-09

IMPORTANT NOTES ABOUT THIS RELEASE

In Docker versions prior to 18.09, containerd was managed by the Docker engine daemon. In Docker Engine 18.09, containerd is managed by systemd. Since containerd is managed by systemd, any custom configuration to the docker.service systemd configuration which changes mount settings (for example, MountFlags=slave) breaks interactions between the Docker Engine daemon and containerd, and you will not be able to start containers.

Run the following command to get the current value of the MountFlags property for the docker.service:

sudo systemctl show --property=MountFlags docker.service
MountFlags=
Update your configuration if this command prints a non-empty value for MountFlags, and restart the docker service.
hilft das evtl. irgendwie? :)

lomdar67
Beiträge: 9
Registriert: 28.01.2020, 07:48
Danksagung erhalten: 2 Mal

Re: Debmatic in Docker

Beitrag von lomdar67 » 30.01.2020, 15:36

Ich hol das mal wieder nach vorne...

Möchte idealerweise debmatic auf meinem Synology NAS im Docker-Container laufen lassen inkl. Anbindung des RPI-RF-MOD Funkmoduls über USB (HB-RF-USB-TK). Gibt es irgend welche Fortschritte bzgl. debmatic im Docker-Container?

Grüße,
Michael

ptweety
Beiträge: 522
Registriert: 07.01.2017, 16:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 66 Mal

Re: Debmatic in Docker

Beitrag von ptweety » 30.01.2020, 20:18

Ja (Container) und Nein (Docker).

Es gibt im Vergleich zu Docker deutlich besser geeignete Linux-Container-Lösungen. Ich habe --> hier <-- mal meine Lösung dokumentiert.

Das ist allerdings nichts für deine NAS, denn du müsstest auf dieser die Treiber von Alex installiert bekommen (was m.E. nicht geht), damit dann der Container diese Treiber zur Kommunikation mit der Hardware verwenden könnte.

Auf einer NAS ist dann wohl eine VM mit Debian + Debmatic + durchgereichtem USB-Gerät die einzig sinnvolle Herangehensweise.

nicx
Beiträge: 307
Registriert: 18.05.2013, 22:31
Hat sich bedankt: 4 Mal

Re: Debmatic in Docker

Beitrag von nicx » 30.01.2020, 20:32

ich hoffe nach wie vor auch auf eine docker variante... das wäre wirklich klasse.

Antworten

Zurück zu „debmatic“