Ankündigung

Einklappen
Keine Ankündigung bisher.

knxd auf Alpine Linux

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    dann ist das image leider auch noch ca. 300 mb groß( warum eigentlich ???)

    wenn ich nur den knxd in ein seperates image setze und dort starte ist das image ca. 14 MB "klein"

    Kommentar


      #17
      Zitat von schlaubi666 Beitrag anzeigen
      dann ist das image leider auch noch ca. 300 mb groß( warum eigentlich ???)

      wenn ich nur den knxd in ein seperates image setze und dort starte ist das image ca. 14 MB "klein"
      Also ich befasse mich erst seit 2 Tagen wirklich intensiv mit Docker und Docker-Compose, aber versuchs mal so:

      Code:
      FROM alpine
      RUN apk add --no-cache build-base gcc abuild binutils binutils-doc gcc-doc git libev-dev automake autoconf libtool argp-standalone linux-headers libusb-dev cmake cmake-doc dev86 \
          && mkdir -p /usr/local/src && cd /usr/local/src \
          && git clone https://github.com/knxd/knxd.git \
          && cd knxd && ./bootstrap.sh \
          && ./configure --disable-systemd --enable-eibnetip --enable-eibnetserver --enable-eibnetiptunnel \
          && mkdir -p src/include/sys && ln -s /usr/lib/bcc/include/sys/cdefs.h src/include/sys \
          && make && make install && cd .. && rm -rf knxd \
          && apk del --no-cache build-base abuild binutils binutils-doc gcc-doc git automake autoconf libtool argp-standalone cmake cmake-doc dev86
      Code:
      REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
      knxd                  latest              8778b9117c89        15 minutes ago      110 MB
      Soweit ich das nämlich verstehe baut Docker für jedes RUN Kommando einen intermediate Layer und das summiert sich irgendwie.

      Kommentar


        #18
        Ein Image ist erstmal nur die (geänderten) Sektoren einer Festplatte. Wenn ich im Image den knxd baue, dann bleiben die ganzen Build-Tools Teil des Images, auch wenn sie wieder gelöscht werden. Wenn man das nicht will, muss man das Image beim Bauen mit der Option "discard" mounten (was Docker eigentlich von sich aus tun sollte) und danach die Größe des Images mit "du" anschauen statt mit "ls".

        Sinnvoller ist es, von vornherein ein separates Image zu haben, mit dem man den knxd baut und in dem man sich bei der Paketinstallation austoben kann. Danach kopiert man das Resultat in ein anderes Image, in dem nur das drin ist, was der knxd wirklich zum Überleben braucht.

        Disclaimer: Ich habe von Linux mehr als ausreichend Ahnung, aber von Docker bin ich nicht wirklich begeistert – mir reicht systemd-nspawn vollkommen.
        DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

        Kommentar


          #19
          Hab mal versucht knxd 0.14 im alpine zu starten, bekomme auch keinen Fehler angezeigt aber knxd macht nach so 10 Sekunden ein Shutdown. pfischi wenn ich richtig verstanden habe hast du es ja am Laufen. Hattest du was besonderes gemacht ?

          Hier meine knxd.ini:

          Code:
          [A.tcp]
          server = knxd_tcp
          port = 6720
          
          [B.ipt]
          driver = ipt
          filters = C.pace
          ip-address = 192.168.2.25
          
          [C.pace]
          delay = 50
          filter = pace
          
          [E.debug]
          error-level = 6
          
          [main]
          addr = 0.0.1
          debug = E.debug
          logfile = /dev/tty
          client-addrs=0.0.2:8
          cache = D.cache
          connections = A.tcp,B.ipt
          background = false
          Starten tu ich mit:
          Code:
          su knxd -s /bin/sh -c "knxd /etc/knxd/knxd.ini"
          Auf der Konsole habe ich dann folgendes:
          Code:
          I00000000: [ 1:main] 0.14.11:0336fc1: knxd /etc/knxd/knxd.ini
          N00000000: [11:C.pace] The 'pace' filter without a queue acts globally.
          I00000055: [ 1:main] Connected: cfg:A.tcp.
          I00000055: [ 1:main] Connected: cfg:B.ipt.
          I00000055: [ 1:main] Connected: cfg:D.cache.
          Nach ~10 Sekunden dann folgendes und danach bin ich wieder in der shell:
          Code:
          N00000000: [ 1:main] Shutting down.
          Zuletzt geändert von Foxi352; 21.04.2017, 14:56. Grund: henfri duerch pfischi ersetzt :-)

          Kommentar


            #20
            Ich hab das selbe Problem wie Foxi352 nach knapp 10 Sekunden erfolgt ein Shutdown. Hab die 0.14 im Docker am laufen und will mit mit einen Weinzierl 750 verbinden.

            knxd.conf
            Code:
            [B.tcp]
            server = knxd_tcp
            systemd-ignore = true
            [C.ipt]
            driver = ipt
            ip-address = 192.168.178.41
            [debug-main]
            trace-mask = 0xffff
            [debug-server]
            name = mcast:knxd
            [main]
            addr = 0.0.10
            cache = A.cache
            client-addrs = 0.0.100:5
            connections = B.tcp,server,C.ipt
            debug = debug-main
            systemd = systemd
            [server]
            debug = debug-server
            discover = true
            router = router
            server = ets_router
            tunnel = tunnel
            und der Output schaut dann mit vollen debug log so aus:

            Code:
            Layer 4 [ 1:main        0.000] initialized
            Layer 4 [ 1:main        0.000] setting up
            Layer 4 [ 5:A.cache/G      0.000] GroupCacheInit
            Layer 3 [ 4:A.cache/Conn   0.000] registerLink: 4:A.cache
            Layer 3 [ 6:B.tcp/inet     0.000] registerLink: 6:B.tcp
            Layer 3 [ 9:server/Server     0.000] registerLink: 9:server
            Layer 3 [14:C.ipt/Conn        0.000] registerLink: 14:C.ipt
            Layer 4 [ 1:main              0.000] setup OK
            Layer 4 [ 1:main              0.000] trigger going up
            Layer 3 [ 6:B.tcp/inet        0.000] Start: cfg:B.tcp
            Layer 5 [ 6:B.tcp/inet        0.000] down => >up
            Layer 8 [ 6:B.tcp/inet        0.000] OpenInetSocket 6720
            Layer 8 [ 6:B.tcp/inet        0.000] InetSocket opened
            Layer 5 [ 6:B.tcp/inet        0.000] >up => up
            Layer 4 [ 6:B.tcp/inet        0.000] up
            Layer 5 [ 6:B.tcp/inet        0.000] Started
            Layer 4 [ 6:B.tcp/inet        0.000] up
            Layer 3 [14:C.ipt/Conn        0.000] Start: cfg:C.ipt
            Layer 5 [14:C.ipt/Conn        0.000] down => >up
            Layer 5 [14:C.ipt/Conn        0.000] Starting
            Layer 2 [15:C.ipt/ipt         0.000] Open
            Layer 0 [15:C.ipt/ipt         0.000] Open
            Layer 0 [15:C.ipt/ipt         0.000] Opened
            Layer 1 [15:C.ipt/ipt         0.000] Send(020): 08 01 AC 11 00 02 00 00 08 01 AC 11 00 02 00 00 04 04 02 00
            Layer 2 [15:C.ipt/ipt         0.000] Opened
            Layer 4 [14:C.ipt/Conn        0.000] >up
            Layer 3 [ 9:server/Server     0.000] Start: cfg:server
            Layer 5 [ 9:server/Server     0.000] down => >up
            Layer 8 [ 9:server/Server     0.000] Open
            Layer 0 [ 9:server/Server     0.000] Open
            Layer 0 [ 9:server/Server     0.000] Opened
            Layer 8 [18:router/driver     0.000] OpenD
            Layer 8 [18:router/driver     0.000] OpenedD
            Layer 3 [17:router/ConnC      0.000] registerLink: 17:router_17
            Layer 3 [17:router/ConnC      0.000] Start: cfg:router
            Layer 5 [17:router/ConnC      0.000] down => >up
            Layer 5 [17:router/ConnC      0.000] Starting
            Layer 5 [17:router/ConnC      0.000] >up => up
            Layer 4 [17:router/ConnC      0.000] up
            Layer 5 [17:router/ConnC      0.000] Started
            Layer 4 [17:router/ConnC      0.000] up
            Layer 8 [ 9:server/Server     0.000] Opened
            Layer 5 [ 9:server/Server     0.000] >up => up
            Layer 4 [ 9:server/Server     0.000] up
            Layer 5 [ 9:server/Server     0.000] Started
            Layer 4 [ 9:server/Server     0.000] up
            Layer 3 [ 4:A.cache/Conn      0.000] Start: cfg:A.cache
            Layer 5 [ 4:A.cache/Conn      0.000] down => >up
            Layer 5 [ 4:A.cache/Conn      0.000] Starting
            Layer 5 [ 4:A.cache/Conn      0.000] >up => up
            Layer 4 [ 4:A.cache/Conn      0.000] up
            Layer 5 [ 4:A.cache/Conn      0.000] Started
            Layer 4 [ 4:A.cache/Conn      0.000] up
            Layer 4 [ 1:main              0.000] going up triggered
            Layer 4 [ 1:main              0.000] check start
            Layer 4 [14:C.ipt/Conn        0.000] is >up
            Layer 4 [ 1:main              0.000] check end: want_up 1 some 1>1 all 0>0, going 1 up 4 down 0
            Layer 0 [15:C.ipt/ipt         0.000] Send(026): 06 10 02 05 00 1A 08 01 AC 11 00 02 00 00 08 01 AC 11 00 02 00 00 04 04 02 00
            Layer 1 [15:C.ipt/ipt         10.011] Connect timed out
            Layer 0 [15:C.ipt/ipt         10.011] Close
            Layer 5 [14:C.ipt/Conn        10.011] >up => down/error
            Layer 4 [14:C.ipt/Conn        10.011] up/error
            Layer 4 [ 1:main              10.011] check start
            Layer 5 [14:C.ipt/Conn        10.011] Stopping
            Layer 5 [14:C.ipt/Conn        10.011] up/error => down
            Layer 4 [14:C.ipt/Conn        10.011] is down
            Layer 4 [ 1:main              10.011] check end: want_up 1 some 1>1 all 0>0, going 0 up 4 down 1
            Layer 4 [ 1:main              10.011] trigger Going down
            Layer 4 [ 4:A.cache/Conn      10.011] Stopping
            Layer 5 [ 4:A.cache/Conn      10.011] up => >down
            Layer 5 [ 4:A.cache/Conn      10.011] Stopping
            Layer 5 [ 4:A.cache/Conn      10.011] >down => down
            Layer 4 [ 4:A.cache/Conn      10.011] down
            Layer 4 [ 4:A.cache/Conn      10.011] down
            Layer 4 [ 9:server/Server     10.011] Stopping
            Layer 5 [ 9:server/Server     10.011] up => >down
            Layer 5 [17:router/ConnC      10.011] Stopping
            Layer 5 [17:router/ConnC      10.011] up => down
            Layer 5 [17:router/ConnC      10.011] Stopping
            Layer 4 [17:router/ConnC      10.011] down
            Layer 3 [17:router/ConnC      10.011] unregisterLink: router_17
            Layer 0 [ 9:server/Server     10.011] Close
            Layer 5 [ 9:server/Server     10.011] >down => down
            Layer 4 [ 9:server/Server     10.011] down
            Layer 4 [ 9:server/Server     10.011] down
            Layer 4 [14:C.ipt/Conn        10.011] Stopping
            Layer 5 [14:C.ipt/Conn        10.011] down/error => >down
            Layer 4 [14:C.ipt/Conn        10.011] down/error
            Layer 4 [ 6:B.tcp/inet        10.011] Stopping
            Layer 5 [ 6:B.tcp/inet        10.011] up => >down
            Layer 8 [ 6:B.tcp/inet        10.011] StopServer
            Layer 5 [ 6:B.tcp/inet        10.011] >down => down
            Layer 4 [ 6:B.tcp/inet        10.011] down
            Layer 4 [ 6:B.tcp/inet        10.011] down
            Layer 4 [ 1:main              10.011] check start
            Layer 8 [18:router/driver     10.011] CloseD
            Layer 4 [ 4:A.cache/Conn      10.011] is down
            Layer 4 [ 9:server/Server     10.011] is down
            Layer 4 [14:C.ipt/Conn        10.011] is down
            Layer 4 [ 6:B.tcp/inet        10.011] is down
            Layer 4 [ 1:main              10.011] check end: want_up 0 some 1>0 all 0>0, going 0 up 0 down 4
            Layer 4 [ 1:main              10.011] down
            Layer 4 [ 1:main              10.011] deleting
            Layer 4 [ 5:A.cache/G         10.011] GroupCacheDestroy
            Layer 4 [ 5:A.cache/G         10.011] GroupCacheClear
            Layer 8 [ 9:server/Server     10.011] Close
            Layer 2 [15:C.ipt/ipt         10.011] Close
            Layer 8 [ 6:B.tcp/inet        10.011] StopServer
            Layer 4 [ 1:main              10.011] deleted.
            Zuletzt geändert von macrauder; 22.04.2017, 19:38.

            Kommentar


              #21
              Und das, um ein paar Hundert MB zu sparen?
              Nehmt doch einfach meinen.

              Kommentar


                #22
                Wenn ich unter alpine compile und nur den deamon in ein neuen Container packe + nötige packete insalliere ist der Container

                14 MB

                klein .....

                Kommentar


                  #23
                  ... und läuft bei zweien hier nicht.
                  Ist das nun ein Erfolg?

                  Kommentar


                    #24
                    Zitat von henfri Beitrag anzeigen
                    Und das, um ein paar Hundert MB zu sparen?
                    Nehmt doch einfach meinen.
                    Es geht, mir jedenfalls, nicht darum irgendetwas zu sparen. Für mich geht es bei meinem Hobby hauptsächlich um's Lernen. Docker ist für mich neu und Alpine Linux auch. Meine ganze production HA Installation läuft komplett einfach auf einer Debian 8 VM auf meinem ESXi Server.

                    Ich bin dabei zu probieren SELBST einen kompletten SH+SV+KNXD+MARIADB+INFLUX+GRAFANA+OWFS+??? Stack in einzelnen Docker Service Images zu erstellen die als automated Builds von GitHUB repo's starten.

                    Es wurmt mich halt einfach, dass ich alles an's Laufen kriege ausser, bis jetzt, KNXD obwohl ich meine 0.14 'working' config von meiner bestehenden Installation übernommen habe. Ich versuch halt das Problem zu finden.

                    Zitat von schlaubi666
                    Wenn ich unter alpine compile und nur den deamon in ein neuen Container packe + nötige packete insalliere ist der Container
                    Ja das ist natürlich die optimale Lösung wenn es darum geht den Container so klein wie Möglich zu halten. Aber daraus im HUB einen automated Build von GitHUB heraus zu erstellen wird schwierig ?

                    Allerdings würde mich interessieren ob du noch irgendetwas extra gemacht hast damit knxd unter Alpine direkt läuft. Oder hattest du keine Probleme und es hat direkt funktioniert ?

                    Kommentar


                      #25
                      Code:
                      Layer 0 [15:C.ipt/ipt         0.000] Send(026): 06 10 02 05 00 1A 08 01 AC 11 00 02 00 00 08 01 AC 11 00 02 00 00 04 04 02 00
                      Layer 1 [15:C.ipt/ipt         10.011] Connect timed out
                      Hmm. Offensichtlicher geht es doch nicht, oder? der knxd versucht sich mit dem Teil zu verbinden, dieses antwortet nicht, der knxd schwenkt daraufhin die rote Fahne.

                      Warum es nicht antwortet, ist die nächste Frage. Funktioniert's auf der Maschine ohne Docker? (Image mounten und den knxd, der da drin ist, mittels "chroot" starten.) Funktioniert's mit einem nativ gebauten knxd (ohne Alpine drumherum)? Funktioniert's mit v0.12? Lässt sich das Interface überhaupt anpingen?

                      Und ja, da fehlt eine "offensichtliche" Fehlermeldung. Das vernünftig zu reorganisieren ist ausreichend zeitaufwändig, Mithilfe erwünscht.
                      DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

                      Kommentar


                        #26
                        Danke Smurf du hast mich auf die richtige Spur gebracht: Nachdem ich `trace-mask = 0xffff`hinzugefügt hatte sah ich auch die Connection Timeout. Damit konnte ich was anfangen und mich auf eine konkrete Suche machen.

                        @macrauder: Starte den Container mit --net=host dann klappt's auch mit dem Nachbarn :-)

                        Kommentar


                          #27
                          Das einzige was mir jetzt noch auffällt ist, dass knxd sich immer in's Background forkt .... Sogar mit background = false in der [main] Section der .ini.
                          Zuletzt geändert von Foxi352; 23.04.2017, 16:23. Grund: Typo

                          Kommentar


                            #28
                            Nur als Info an unsere "Docker"ianer hier. Vielleicht hilft's jemandem. Hab viel damit rumgespielt irgendwie das Multicast ohne --net=host zum Laufen zu kriegen.

                            Mit einem macvlan Netzwerk (Docker >= 1.12) funktioniert es tadelos. Allerdings hat dann jeder Container eine eigene IP Addresse aus der Host Netzwerk Range. Und wenn eure Docker Maschine als VM läufft, wie bei mir PhotonOS unter ESXi6.5 dann müsst ihr beim vSwitch noch Promiscious erlauben, denn genau das nutzt der macvlan Treiber nämlich.

                            Cheers,

                            Serge

                            Kommentar


                              #29
                              Zitat von Foxi352 Beitrag anzeigen
                              Das einzige was mir jetzt noch auffällt ist, dass knxd sich immer in's Background forkt .... Sogar mit background = false in der [main] Section der .ini.
                              Nö, tut er nicht. Wie kommst du darauf?

                              Code:
                              # src/server/knxd -e 1.2.3 -b dummy -b dummy
                              [ *kein* Shellprompt, solange du nicht ^C drückst ]
                              DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

                              Kommentar


                                #30
                                Zitat von Foxi352 Beitrag anzeigen
                                Ich bin dabei zu probieren SELBST einen kompletten SH+SV+KNXD+MARIADB+INFLUX+GRAFANA+OWFS+??? Stack in einzelnen Docker Service Images zu erstellen die als automated Builds von GitHUB repo's starten.
                                Aber warum?
                                Genau das gibt es doch auch schon von mir.
                                Warum baust du nicht darauf auf und verbesserst es?

                                Kommentar

                                Lädt...
                                X