NEWS
ioBroker on docker - Problem (solved)
-
Hallo,
ich würde gerne den ioBroker auf meinem OpenMediaVault Server laufen lassen aber als Docker Container. Das Image von buanet habe ich schon vorher auf dem gleichen Server am laufen gehabt und das war alles super. Hab meinen Server dann an anderer Stelle gecrasht, System neu aufgesetzt und nun läuft der Container nicht mehr.A) neues Image (https://hub.docker.com/r/buanet/iobroker), neuer Container mit einem Mapped Folder der auf meine Externe Platte zeigt für /opt/iobroker/ ... Container startet, aber es läufen nur folgende Prozesse:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 21176 3520 3228 S 0,0 0,0 0:00.07 iobroker_startu 304 root 20 0 7404 696 632 S 0,0 0,0 0:00.00 tail 311 root 20 0 21404 3620 3192 S 0,0 0,0 0:00.05 bash 316 root 20 0 44220 3640 3168 R 0,0 0,0 0:00.00 top
docker log zeigt:
docker logs -f iobroker ---------------------------------------- ----- Image-Version: 3.0.0 ----- ----- 2019-06-23 01:10:25 ----- ---------------------------------------- Startupscript running... Installing additional packages... The following packages will be installed: nano Installing additional packages done... Directory /opt/iobroker is empty! Restoring data from image... Restoring done... This is the first run of an new installation... Hostname given is 6af4020daa56... Renaming ioBroker... /opt/scripts/iobroker_startup.sh: Zeile 49: /usr/bin/iobroker: Keine Berechtigung Renaming ioBroker done... Changing permissions upon first run (This might take a while! Please be patient!)... Changing permissions done... Starting ioBroker... Starting ioBroker done...
Wenn ich jetzt meine alten mounted Folder wieder verwende, dann startet der ioBroker, ist auch erreichbar nur funktionieren dann die Adapter/Instanzen nicht mehr und lassen sich auch nicht durch stoppen/löschen/neuinstallieren zum leben erwecken ... beispielsweise sql:
host.1868f6c458bf | 2019-06-23 00:37:08.238 | info | Restart adapter system.adapter.sql.0 because enabled -- | -- | -- | -- host.1868f6c458bf | 2019-06-23 00:37:08.237 | error | instance system.adapter.sql.0 terminated with code 1 () host.1868f6c458bf | 2019-06-23 00:37:08.237 | error | Caught by controller[0]: at Module.load (module.js:566:32) host.1868f6c458bf | 2019-06-23 00:37:08.237 | error | Caught by controller[0]: at Object.Module._extensions..js (module.js:664:10) host.1868f6c458bf | 2019-06-23 00:37:08.237 | error | Caught by controller[0]: at Module._compile (module.js:653:30) host.1868f6c458bf | 2019-06-23 00:37:08.237 | error | Caught by controller[0]: at Object.<anonymous> (/opt/iobroker/node_modules/mmmagic/lib/index.js:1:75) host.1868f6c458bf | 2019-06-23 00:37:08.237 | error | Caught by controller[0]: at require (internal/module.js:11:18) host.1868f6c458bf | 2019-06-23 00:37:08.237 | error | Caught by controller[0]: at Module.require (module.js:597:17) host.1868f6c458bf | 2019-06-23 00:37:08.237 | error | Caught by controller[0]: at Function.Module._load (module.js:498:3) host.1868f6c458bf | 2019-06-23 00:37:08.237 | error | Caught by controller[0]: at tryModuleLoad (module.js:506:12) host.1868f6c458bf | 2019-06-23 00:37:08.237 | error | Caught by controller[0]: at Module.load (module.js:566:32) host.1868f6c458bf | 2019-06-23 00:37:08.237 | error | Caught by controller[0]: at Object.Module._extensions..node (module.js:682:18) host.1868f6c458bf | 2019-06-23 00:37:08.237 | error | Caught by controller[0]: Error: /opt/iobroker/node_modules/mmmagic/build/Release/magic.node: failed to map segment from shared object host.1868f6c458bf | 2019-06-23 00:37:08.237 | error | Caught by controller[0]: ^ host.1868f6c458bf | 2019-06-23 00:37:08.237 | error | Caught by controller[0]: return process.dlopen(module, path._makeLong(filename)); host.1868f6c458bf | 2019-06-23 00:37:08.237 | error | Caught by controller[0]: module.js:682 host.1868f6c458bf | 2019-06-23 00:37:07.856 | info | instance system.adapter.sql.0 started with pid 8263
Aber er startet zumindest.
Vermutung ist auch von Andre, es ist ein Berechtigungsproblem ... aber wo und was?!
Habe den gemounteten Folder schon mit 777 Rechten getestet, gleiches Resultat. Auch wenn ich den Container OHNE Mount starte ... gleiches Verhalten ...Hoffe SEHR es hat irgendjmd von euch eine Idee wie ich das wieder zum laufen bekomme. Die alten Daten sind mir egal, solange er läuft passt alles.
Bin für JEDE Idee/Tipp sehr sehr dankbar
-
@Surfer2010
Du hast jetzt die Vers.3 am Start.
Möglicherweise war deine alte Installation Vers. 2?
Auf der Buanet Seite stehen Informationen zur Migration. -
@zahnheinrich said in ioBroker on docker - Problem:
uanet Seite stehen Informationen zur Migration
Ja das mag sein, ich würde ja auch gerne mit einem neuen Container starten ...
Aber das funktioniert nicht. -
if i run
docker run -it -p 8081:8081 buanet/iobroker:latest sh
it will stop at
Changing permissions upon first run (This might take a while! Please be patient!)...
i can only continue with CTRL+C then it "stops" again at
Starting ioBroker done...
and i have no possibility to do something again ?!
Maybe that helps? -
@Surfer2010
Ich würde mit derselben Version starten die ich vorher hatte.
Wenn alles läuft, kannst du später upgraden.
Die buanet Vers.2 kannst du auch noch downloaden.
Zwischen Vers.2 und Vers.3 haben sich Zugriffsrechte geändert. Womöglich daher deine Probleme, daß du deine Vers.2 Daten mit Vers.3 laufen lässt. -
Also ich bin einen großen Schritt weiter:
docker run -it --network dockernet --name=iobroker -p 1880:1880 -p 1883:1883 -p 1887:1887 -p 8081:8081 -p 8082:8082 -v /opt/iobroker/:/sharedfolders/DockerData/ioBroker buanet/iobroker:latest sh
hiermit kann ich den Container starten, wenn ich den Befehl:
Changing permissions upon first run (This might take a while! Please be patient!)...
mit CTRL+C abbreche (weil er auch nach 10 min nicht weiter läuft) dann startet der ioBroker vernünftig und ist auch erreichbar. Alles super, nur sobald ich aus der Konsole raus gehe stoppt der Container, und wenn ich ihn nun neu starte geht wieder nichts ...
-
Anscheinend benötigt das setzen der Permissions eine Menge Zeit ...
Wenn man mal in das startup script schaut, wird da folgendes ausgeführt:chown -R iobroker /opt/iobroker chown -R iobroker /opt/scripts
Ich würd den Container mal interaktiv starten, wie Du's oben ja schon machst und die beiden Befehle von Hand eingeben, eventuell noch mit dem "verbose" Flag, also
chown -R -v iobroker /opt/iobroker chown -R -v iobroker /opt/scripts
... dann siehst Du was passiert.
Ich glaube aber, Du wartest einfach nicht lang genug.
-
Also ein Problem könnte gewesen sein, dass ich mein Docker-Root VZ verlegt habe ...
Nachdem ich den ganzen Server noch einmal neu aufgesetzt habe, und das Docker Root-VZ nun wieder dort ist wo es "hin gehört" ... habe ich den Container jetzt mehrfach neu erstellt (und wieder gelöscht) OHNE ein mount ... und da klappt das alles super.
Hier der Startbefehl und der docker-logdocker run -d --network dockernet --name=iobrokertest -p 8085:8081 -p 8086:8082 --restart=always -e PUID=1000 -e PGID=996 -e TZ=Europe/Berlin buanet/iobroker:latest a4951e00b49cba2a8d80c336a4af3f18d53241ab1261abcfa95771be58deffcc root@FriedbergServer:~# docker logs -f iobroker iobroker iobrokertest root@FriedbergServer:~# docker logs -f iobrokertest ---------------------------------------- ----- Image-Version: 3.0.0 ----- ----- 2019-06-25 18:28:50 ----- ---------------------------------------- Startupscript running... Installing additional packages... The following packages will be installed: nano Installing additional packages done... This is the first run of an new installation... Hostname given is a4951e00b49c... Renaming ioBroker... Instance host changed for "system.adapter.admin.0" from "a284247a5edd" to "a4951e00b49c". Instance host changed for "system.adapter.discovery.0" from "a284247a5edd" to "a4951e00b49c". Renaming ioBroker done... Changing permissions upon first run (This might take a while! Please be patient!)... Changing permissions done... Starting ioBroker... Starting ioBroker done...
Was nach wie vor NICHT geht, ist das ganze mit dem Mount. Hier mein Startbefehl:
docker run -d --network dockernet --name=iobroker -p 1880:1880 -p 1883:1883 -p 1887:1887 -p 8081:8081 -p 8082:8082 --restart=always -e PUID=1000 -e PGID=996 -e TZ=Europe/Berlin -v /sharedfolders/DockerData/ioBroker:/opt/iobroker/ buanet/iobroker:latest d7f3866b96e5d72674af26f86dc3cb0e569728e5a9655b71e0468b330b86f80e root@FriedbergServer:/sharedfolders/DockerData# docker logs -f iobroker ---------------------------------------- ----- Image-Version: 3.0.0 ----- ----- 2019-06-25 18:27:23 ----- ---------------------------------------- Startupscript running... Installing additional packages... The following packages will be installed: nano Installing additional packages done... Directory /opt/iobroker is empty! Restoring data from image... Restoring done... This is the first run of an new installation... Hostname given is d7f3866b96e5... Renaming ioBroker... /opt/scripts/iobroker_startup.sh: Zeile 49: /usr/bin/iobroker: Keine Berechtigung Renaming ioBroker done... Changing permissions upon first run (This might take a while! Please be patient!)... Changing permissions done... Starting ioBroker... Starting ioBroker done...
und hier das VZ
/sharedfolders# ls -ll total 8 drwx--s--x+ 14 dom users 4096 Jun 25 15:32 DockerData
bzw.
/sharedfolders/DockerData# ls -ll total 96 drwxrwsr-x+ 11 dom docker 4096 Jun 10 14:36 LetsEncrypt drwxrwsr-x+ 4 root root 4096 Jun 22 23:06 MariaDB drwxr-xr-x+ 3 root root 4096 Jun 25 18:21 Quassel drwxrwxr-x+ 7 dom docker 4096 Jun 25 00:10 ioBroker
Ich hoffe SEHR jemand von euch findet wo mein Problem her rührt ...
wenn ich den Container MIT mount starte, sieht es im docker log file identisch aus, nur werden weniger Prozesse (top) gestartetPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 274 iobroker 20 0 1239372 96924 23096 S 0,3 1,2 0:06.46 iobroker.js-con 290 iobroker 20 0 1096988 92844 22888 S 0,3 1,2 0:07.64 io.admin.0 304 iobroker 20 0 985476 39032 22784 S 0,3 0,5 0:01.81 io.discovery.0 1 root 20 0 21176 3284 2988 S 0,0 0,0 0:00.07 iobroker_startu 272 root 20 0 52716 3696 3276 S 0,0 0,0 0:00.00 sudo 273 root 20 0 7404 784 724 S 0,0 0,0 0:00.00 tail 332 root 20 0 21404 3668 3232 S 0,0 0,0 0:00.05 bash 337 root 20 0 44220 3680 3196 R 0,0 0,0 0:00.01 top
und mit mounted volume
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 21176 3468 3176 S 0,0 0,0 0:00.08 iobroker_startu 308 root 20 0 52716 3696 3288 S 0,0 0,0 0:00.00 sudo 309 root 20 0 7404 688 628 S 0,0 0,0 0:00.00 tail 310 iobroker 20 0 924456 45660 22728 S 0,0 0,6 0:00.56 iobroker.js-con 326 root 20 0 21404 3652 3220 S 0,0 0,0 0:00.05 bash 331 root 20 0 44220 3668 3180 R 0,0 0,0 0:00.01 top
-
iobroker host $(cat /opt/iobroker/.install_host) rm -f /opt/iobroker/.install_host
hier scheint das Problem zu sein ... ?!
-
Problem gelöst!
Ursache war, dass der Ordner den ich in den Container gemountet habe auf einem Laufwerk liegt, das als "noexec" gemountet war.
Daher konnte das Script nicht vollständig ausgeführt werden.