Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Docker en toegang tot apparaten in LAN

Pagina: 1
Acties:

  • HaTe
  • Registratie: Mei 2007
  • Laatst online: 07:44

HaTe

haat niet

Topicstarter
Zie mijn laatste post, ik ben dom geweest..
============

Ik ben al enkele uren aan het stoeien om een werkende zoneminder (bewakingscamera beheer) Docker op te zetten. De basis installatie is gelukt met https://github.com/QuantumObject/docker-zoneminder.

Toen ik verbinding probeerde te maken met de IP camera in het netwerk (192.168.1.7) lukte dat niet. Ik had al snel door dat dat komt omdat de Docker container een eigen netwerk heeft en niet in daar buiten kan. Dit is overigens mijn eerste ervaring met Docker. Simpelweg de container op het host netwerk (192.168.1.x) laten zou het oplossen, maar dan ontstaat er een conflict met poort 80 die al in gebruik is op de host zelf.

Nu zijn er volgens mij twee opties om dit te laten werken:
1. De docker container een eigen IP op het LAN geven.
2. De docker container/netwerk op een of andere manier toegang geven tot het LAN.

Ik lees hier en daar dat pipework dat makkelijk kan oplossen, maar lees ook dat het tegenwoordig met alleen Docker zelf kan.. Maar hoe?? Ik kom er niet uit. Wie kan mij op weg helpen?

WP: ME PUHZ-SW75YAA + ERST30D-VM2ED | Solar: 17x TSM-340-DE06M.08 (5780Wp ~6200kWh), Azimuth 179°, Hellingshoek: 34° | PC specs


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 11:41

Hero of Time

Moderator LNX

There is only one Legend

Je kan ook NAT gebruiken met Docker. Moet je net als een VM of andere machine achter een router een port forwarden. Dit staat ook allemaal netjes beschreven op de Docker wiki voor hoe je een applicatie in een container het netwerk laat bereiken en hoe je die bereikbaar kan maken voor je netwerk. Heb je die gelezen?

Documentatie: https://docs.docker.com/e...he-default-bridge-network

[ Voor 13% gewijzigd door Hero of Time op 11-07-2017 20:51 ]

Commandline FTW | Tweakt met mate


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

NAT en dan ook portmapping, maar port80 is schijnbaar al bezet. De camera op een andere poort hangen? Sowieso zou je die data misschien versleuteld willen laten zijn :P

Je wilt twee of meer webservers via dezelfde poort 80 bereikbaar laten zijn? Misschien wil je iets als nginx er voor zetten.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • HaTe
  • Registratie: Mei 2007
  • Laatst online: 07:44

HaTe

haat niet

Topicstarter
Hero of Time schreef op dinsdag 11 juli 2017 @ 20:49:
Je kan ook NAT gebruiken met Docker. Moet je net als een VM of andere machine achter een router een port forwarden. Dit staat ook allemaal netjes beschreven op de Docker wiki voor hoe je een applicatie in een container het netwerk laat bereiken en hoe je die bereikbaar kan maken voor je netwerk. Heb je die gelezen?

Documentatie: https://docs.docker.com/e...he-default-bridge-network
Die pagina heb ik min of meer gelezen, maar begreep nog niet hoe ik kan bereiken wat ik wil. Nu ik weet dat ik daar kan vinden wat ik zoek zal ik er nog eens beter naar kijken..
F_J_K schreef op dinsdag 11 juli 2017 @ 20:51:
NAT en dan ook portmapping, maar port80 is schijnbaar al bezet. De camera op een andere poort hangen? Sowieso zou je die data misschien versleuteld willen laten zijn :P

Je wilt twee of meer webservers via dezelfde poort 80 bereikbaar laten zijn? Misschien wil je iets als nginx er voor zetten.
Volgens mij begrijpen wij elkaar niet helemaal. De camera zit op poort 80, maar die wil ik juist bereiken vanuit de Docker container. De zoneminder docker container exposed standaard op poort 80 en die kan ik forwarden naar bijvoorbeeld 7080 in het geval ik de standaard docker bridge gebruik, wat op zich prima is. Het probleem ontstaat als ik "--net=host" gebruik, omdat zoneminder dan wil starten op poort 80 die al in gebruik is door de host.

Ik wil dus niet twee webservers via poort 80 bereikbaar laten zijn.

WP: ME PUHZ-SW75YAA + ERST30D-VM2ED | Solar: 17x TSM-340-DE06M.08 (5780Wp ~6200kWh), Azimuth 179°, Hellingshoek: 34° | PC specs


  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
Kan je niet gewoon een VM gebruiken of een 'normale' zoneminder installatie? Tenzij je 10 verschillende instances wil draaien heeft een container ongeveer nul voordeel...

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 11:41

Hero of Time

Moderator LNX

There is only one Legend

HaTe schreef op dinsdag 11 juli 2017 @ 21:00:
[...]

Die pagina heb ik min of meer gelezen, maar begreep nog niet hoe ik kan bereiken wat ik wil. Nu ik weet dat ik daar kan vinden wat ik zoek zal ik er nog eens beter naar kijken..
Dan had het ook wel handig geweest als je die in de OP had gemeld. ;) Overigens vereist dit soort zaken toch wel wat meer kennis van netwerken dan je standaard thuis situatie waar je gewoon een modem/router aansluit en alles werkt. ;)
[...]

Volgens mij begrijpen wij elkaar niet helemaal. De camera zit op poort 80, maar die wil ik juist bereiken vanuit de Docker container. De zoneminder docker container exposed standaard op poort 80 en die kan ik forwarden naar bijvoorbeeld 7080 in het geval ik de standaard docker bridge gebruik, wat op zich prima is. Het probleem ontstaat als ik "--net=host" gebruik, omdat zoneminder dan wil starten op poort 80 die al in gebruik is door de host.

Ik wil dus niet twee webservers via poort 80 bereikbaar laten zijn.
Wat voor camera is dat dan? En hoe komt die op poort 80 van je systeem waar je Docker op draait? Je bent erg summier met je informatie en dit geeft alleen maar meer vragen. Wat voldoet niet aan wat je hierboven aangeeft met je container exposen op 7080? Vragen, vragen, en geen informatie die het duidelijk maakt wat nou de situatie, opzet en werkelijke issue is.

Commandline FTW | Tweakt met mate


  • HaTe
  • Registratie: Mei 2007
  • Laatst online: 07:44

HaTe

haat niet

Topicstarter
johnkeates schreef op dinsdag 11 juli 2017 @ 21:03:
Kan je niet gewoon een VM gebruiken of een 'normale' zoneminder installatie? Tenzij je 10 verschillende instances wil draaien heeft een container ongeveer nul voordeel...
Ja dat kan zeker wel. Ik wilde juist een beetje kennis maken met Docker en wat het kan en de voordelen of nadelen zijn. Tot nu toe zie ik alleen nog maar nadelen eigenlijk haha
Hero of Time schreef op dinsdag 11 juli 2017 @ 21:20:
Wat voor camera is dat dan? En hoe komt die op poort 80 van je systeem waar je Docker op draait? Je bent erg summier met je informatie en dit geeft alleen maar meer vragen. Wat voldoet niet aan wat je hierboven aangeeft met je container exposen op 7080? Vragen, vragen, en geen informatie die het duidelijk maakt wat nou de situatie, opzet en werkelijke issue is.
Hier gaat weer wat mis in de communicatie haha. De camera zit op 192.168.1.7:80, die heeft verder niks met de docker te maken, behalve dat ik vanuit de docker container het beeld van die camera op wil halen die te vinden is op http://192.168.1.7/videofeed.cgi

De container exposen op 7080 voldoet zeker wel. Het enige probleem is dat de zoneminder container http://192.168.1.7/videofeed.cgi niet kan vinden.

WP: ME PUHZ-SW75YAA + ERST30D-VM2ED | Solar: 17x TSM-340-DE06M.08 (5780Wp ~6200kWh), Azimuth 179°, Hellingshoek: 34° | PC specs


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 11:41

Hero of Time

Moderator LNX

There is only one Legend

HaTe schreef op dinsdag 11 juli 2017 @ 21:25:
[...]

Hier gaat weer wat mis in de communicatie haha. De camera zit op 192.168.1.7:80, die heeft verder niks met de docker te maken, behalve dat ik vanuit de docker container het beeld van die camera op wil halen die te vinden is op http://192.168.1.7/videofeed.cgi
Dus de camera is een IP camera. Staat dus los van je container. En dus ook los van het feit dat er op poort 80 al wat draait, want je systeem waar je Docker draait heeft niet 192.168.1.7 als IP adres, dat zal een andere zijn, 192.168.1.9 bijvoorbeeld.
De container exposen op 7080 voldoet zeker wel. Het enige probleem is dat de zoneminder container http://192.168.1.7/videofeed.cgi niet kan vinden.
Zoneminder wil een camerafeed hebben, geen webpagina waar je de feed kan bekijken met knoppen en meer. Je moet 't de directe videostream geven, in mjpeg of mpeg formaat.

Je hebt dus 2 issues: je kan je Docker niet draaien met --net=host zodat je container op poort 80 bereikbaar is (wat is daarmee de foutmelding precies?) en met de standaard forward van 7080 kan het, ook weer zonder foutmelding, de camera niet bereiken.

Nog meer vragen komen naar voren. En we weten niet eens met welk OS we te maken hebben!

Informatie die we niet hebben:
- OS;
- Netwerk;
- Foutmeldingen;
- Werkt het wel buiten Docker;
- Etc.

Commandline FTW | Tweakt met mate


  • HaTe
  • Registratie: Mei 2007
  • Laatst online: 07:44

HaTe

haat niet

Topicstarter
Excuses voor alle onduidelijkheid, ik dacht dat het een simpele vraag was, maar ik maak het alsmaar onduidelijker..

De host draait op Debian 8, OpenMediaVault en zit op 192.168.1.50, de router op 192.168.1.1 en de ip camera op 192.168.1.7.

Als ik de zoneminder container draai met netwerk "bridge", dan kan ik deze bereiken op poort 7080 na poort 80 te forwarden naar 7080:
CONTAINER ID        IMAGE                                    COMMAND             CREATED             STATUS              PORTS                  NAMES
652d7f0c3108        quantumobject/docker-zoneminder:latest   "/sbin/my_init"     26 seconds ago      Up 25 seconds       0.0.0.0:7080->80/tcp   zoneminder


In zoneminder voeg ik een camera toe: http://192.168.1.7/videos...rd>&resolution=32&rate=11
Dat is een mjpeg stream, dus niet een webpagina. In zoneminder krijg ik errors na het openen van de pagina waar je de video kan bekijken.
code:
1
2
3
2017-07-11 15:58:42.245568  web_php     977 ERR socket_sendto( /var/run/zm/zms-182682s.sock ) failed: No such file or directory /usr/share/zoneminder/www/includes/functions.php    2375
2017-07-11 15:58:39.270169  web_js      977 ERR getStreamCmdResponse stream error: socket_sendto( /var/run/zm/zms-182682s.sock ) failed: No such file or directory - checkStreamForErrors() ?view=watch 
2017-07-11 15:58:39.205824  web_php     977 ERR socket_sendto( /var/run/zm/zms-182682s.sock ) failed: No such file or directory /usr/share/zoneminder/www/includes/functions.php    2375


Als ik de zoneminder docker container met --net=host draai, dan krijg ik de volgende error:
code:
1
2
3
4
5
6
7
8
9
Starting pre-service scritps in /etc/my_init.d
*** Running: /etc/my_init.d/startup.sh
starting rc.local scritps
*** Running: /etc/rc.local
Booting runit daemon...
Process runsvdir running with PID 229
ok: run: mysqld: (pid 238) 0s
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down

Want poort 80 is al in gebruik door het OMV configuratie paneel.

Ik heb zoneminder nog niet los proberen te installeren, omdat er aardig wat andere software geïnstalleerd moet worden en er o.a. een mysql database geconfigureerd moet worden wat met docker niet (handmatig) hoeft.. Dat is wel een reden om de docker container te gebruiken.

edit:
Misschien zit het probleem wel in de container zelf.. Hier heeft iemand dezelfde error: https://github.com/QuantumObject/docker-zoneminder/issues/27

edit2:
OMG het werkt gewoon, ik ben gewoon dom geweest en heb niet gelezen:
For live view via the web UI to work, you need to edit config -> paths, and change:

"/cgi-bin/nph-zms" to "/zm/cgi-bin/nph-zms"
Dat heb ik gedaan en nu werkt het. Er was dus niks mis met de docker configuratie of dat het lokaal netwerk niet bereikbaar was.

Wat voel ik mij nu dom! Toch iedereen bedankt voor de hulp!

[ Voor 24% gewijzigd door HaTe op 11-07-2017 22:08 ]

WP: ME PUHZ-SW75YAA + ERST30D-VM2ED | Solar: 17x TSM-340-DE06M.08 (5780Wp ~6200kWh), Azimuth 179°, Hellingshoek: 34° | PC specs


  • Thralas
  • Registratie: December 2002
  • Laatst online: 11:00
Docker zet volgens mij standaard een NAT rule om containers naar 'buiten' te laten babbelen. Check that.

Daarnaast moet net.ipv4.ip_forward op 1 staan, als dat niet zo is zou je een hele duidelijke warning moeten krijgen als je 'docker run' uitvoert. Controleer dat ook.

  • HaTe
  • Registratie: Mei 2007
  • Laatst online: 07:44

HaTe

haat niet

Topicstarter
Thralas schreef op dinsdag 11 juli 2017 @ 22:12:
Docker zet volgens mij standaard een NAT rule om containers naar 'buiten' te laten babbelen. Check that.

Daarnaast moet net.ipv4.ip_forward op 1 staan, als dat niet zo is zou je een hele duidelijke warning moeten krijgen als je 'docker run' uitvoert. Controleer dat ook.
Ja blijkbaar wel.. Ik zat het probleem op de verkeerde plek te zoeken.

Bedankt voor de hulp allemaal.

WP: ME PUHZ-SW75YAA + ERST30D-VM2ED | Solar: 17x TSM-340-DE06M.08 (5780Wp ~6200kWh), Azimuth 179°, Hellingshoek: 34° | PC specs

Pagina: 1