xirixiz / dsmr-reader-docker

DSMR Reader in Docker.
https://hub.docker.com/r/xirixiz/dsmr-reader-docker
113 stars 33 forks source link

[emerg] 1671#1671: bind() to 0.0.0.0:80 failed (98: Address in use) #273

Closed niekniek89 closed 2 years ago

niekniek89 commented 2 years ago

Support guidelines

I've found an issue and checked that ...

Description

Ik heb zojuist DSMR Reader van V5.0 geupgraded naar V5.1. Sinds dat moment krijg ik allerlei foutmeldingen in de logging van Portainer.

*Echter lijkt alles wel te functioneren, maar blijft onderstaande logging lopen.

Starting DSMR Reader - nginx... 2022/03/02 07:35:58 [emerg] 1757#1757: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:58 [emerg] 1757#1757: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 192.168.178.170 - - [02/Mar/2022:07:35:59 +0100] "GET /xhr/header HTTP/1.1" 200 148 "http://192.168.176.36:8888/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.62" "-"

Expected behaviour

Ik had deze logging niet verwacht, deze had ik in V5.0 nog niet.

Actual behaviour

Zie bovengenoemde logging/errors

Steps to reproduce

V5.0 upgraden naar V5.1

Docker info

Client:
 Debug Mode: false

Server:
 Containers: 9
  Running: 9
  Paused: 0
  Stopped: 0
 Images: 9
 Server Version: 19.03.13
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 8fba4e9a7d01810a393d5d25a3621dc101981175
 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
 init version: fec3683
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 5.4.0-100-generic
 Operating System: Ubuntu 20.04.4 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 3.84GiB
 Name: vm02
 ID: FGQP:BQUZ:6DKO:EW4E:64FY:PQJT:UZY2:LPAW:RIHO:BZS4:IFWJ:MWMN
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

Version

Docker compose

volgt nog.

Container logs

2022/03/02 07:35:43 [emerg] 1671#1671: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:43 [emerg] 1671#1671: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:43 [emerg] 1671#1671: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 192.168.178.170 - - [02/Mar/2022:07:35:46 +0100] "GET /xhr/header HTTP/1.1" 200 148 "http://192.168.176.36:8888/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.62" "-" 2022/03/02 07:35:43 [emerg] 1671#1671: still could not bind() nginx: [emerg] still could not bind() Starting DSMR Reader - nginx... 2022/03/02 07:35:46 [emerg] 1684#1684: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:46 [emerg] 1684#1684: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:46 [emerg] 1684#1684: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 192.168.178.170 - - [02/Mar/2022:07:35:47 +0100] "GET /xhr/header HTTP/1.1" 200 148 "http://192.168.176.36:8888/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.62" "-" 127.0.0.1 - - [02/Mar/2022:07:35:47 +0100] "GET /about HTTP/1.1" 302 0 "-" "curl/7.79.1" "-" 127.0.0.1 - - [02/Mar/2022:07:35:47 +0100] "GET /admin/login/?next=/about HTTP/1.1" 200 2196 "-" "curl/7.79.1" "-" s6-supervise dsmr_remote_datalogger: warning: unable to spawn ./run - waiting 10 seconds s6-supervise (child): fatal: unable to exec run: No such file or directory 2022/03/02 07:35:46 [emerg] 1684#1684: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:46 [emerg] 1684#1684: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:46 [emerg] 1684#1684: still could not bind() nginx: [emerg] still could not bind() Starting DSMR Reader - nginx... 2022/03/02 07:35:48 [emerg] 1700#1700: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:48 [emerg] 1700#1700: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 192.168.178.170 - - [02/Mar/2022:07:35:49 +0100] "GET /xhr/header HTTP/1.1" 200 148 "http://192.168.176.36:8888/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.62" "-" 2022/03/02 07:35:48 [emerg] 1700#1700: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:48 [emerg] 1700#1700: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:48 [emerg] 1700#1700: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:48 [emerg] 1700#1700: still could not bind() nginx: [emerg] still could not bind() Starting DSMR Reader - nginx... 2022/03/02 07:35:51 [emerg] 1712#1712: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 192.168.178.170 - - [02/Mar/2022:07:35:51 +0100] "GET /xhr/header HTTP/1.1" 200 148 "http://192.168.176.36:8888/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.62" "-" 2022/03/02 07:35:51 [emerg] 1712#1712: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:51 [emerg] 1712#1712: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:51 [emerg] 1712#1712: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 127.0.0.1 - - [02/Mar/2022:07:35:52 +0100] "GET /about HTTP/1.1" 302 0 "-" "curl/7.79.1" "-" 127.0.0.1 - - [02/Mar/2022:07:35:52 +0100] "GET /admin/login/?next=/about HTTP/1.1" 200 2196 "-" "curl/7.79.1" "-" s6-supervise (child): fatal: unable to exec run: No such file or directory s6-supervise dsmr_datalogger: warning: unable to spawn ./run - waiting 10 seconds 2022/03/02 07:35:51 [emerg] 1712#1712: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 192.168.178.170 - - [02/Mar/2022:07:35:53 +0100] "GET /xhr/header HTTP/1.1" 200 148 "http://192.168.176.36:8888/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.62" "-" 2022/03/02 07:35:51 [emerg] 1712#1712: still could not bind() nginx: [emerg] still could not bind() Starting DSMR Reader - nginx... 2022/03/02 07:35:53 [emerg] 1728#1728: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) s6-supervise dsmr_backend: warning: unable to spawn ./run - waiting 10 seconds s6-supervise (child): fatal: unable to exec run: No such file or directory 2022/03/02 07:35:53 [emerg] 1728#1728: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:53 [emerg] 1728#1728: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:53 [emerg] 1728#1728: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 192.168.178.170 - - [02/Mar/2022:07:35:55 +0100] "GET /xhr/header HTTP/1.1" 200 148 "http://192.168.176.36:8888/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.62" "-" 2022/03/02 07:35:53 [emerg] 1728#1728: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:53 [emerg] 1728#1728: still could not bind() nginx: [emerg] still could not bind() Starting DSMR Reader - nginx... 2022/03/02 07:35:56 [emerg] 1741#1741: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:56 [emerg] 1741#1741: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:56 [emerg] 1741#1741: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 192.168.178.170 - - [02/Mar/2022:07:35:57 +0100] "GET /xhr/header HTTP/1.1" 200 148 "http://192.168.176.36:8888/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.62" "-" s6-supervise dsmr_remote_datalogger: warning: unable to spawn ./run - waiting 10 seconds s6-supervise (child): fatal: unable to exec run: No such file or directory 2022/03/02 07:35:56 [emerg] 1741#1741: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 127.0.0.1 - - [02/Mar/2022:07:35:57 +0100] "GET /about HTTP/1.1" 302 0 "-" "curl/7.79.1" "-" 127.0.0.1 - - [02/Mar/2022:07:35:57 +0100] "GET /admin/login/?next=/about HTTP/1.1" 200 2196 "-" "curl/7.79.1" "-" 2022/03/02 07:35:56 [emerg] 1741#1741: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:56 [emerg] 1741#1741: still could not bind() nginx: [emerg] still could not bind() Starting DSMR Reader - nginx... 2022/03/02 07:35:58 [emerg] 1757#1757: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 2022/03/02 07:35:58 [emerg] 1757#1757: bind() to 0.0.0.0:80 failed (98: Address in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use) 192.168.178.170 - - [02/Mar/2022:07:35:59 +0100] "GET /xhr/header HTTP/1.1" 200 148 "http://192.168.176.36:8888/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.62" "-"

Additional info

Zit nu weer op V5.0, en de emerg meldingen zijn verdwenen. Tevens is nergens te zien dat ik poort 80 ergens anders voor gebruik (de melding is er in V5.0 ook niet).

xirixiz commented 2 years ago

Ik vermoed dat weer geneuzel is met Portainer die op een of andere manier toch weer vreemd omgaat met nieuwe images waar een aantal grotere wijzigingen inzitten. Ik heb dat nu al zo vaak gezien helaas. Misschien even helemaal uit Portainer verwijderen en opnieuw toevoegen? Ik heb de image op een 3-tal devices getest en er zijn geen issues. Overigens is het ook vreemd dat nginx niet kan starten op poort 80 in de container zelf wanneer je in bridge modus draait met Docker omdat er verder geen enkel proces poort 80 gebruikt.

Ik kom wellicht enigszins geirriteerd over, dat is niet richting jou als persoon maar richting Portainer (imho rommel) ✌️ .

Voor de zekerheid kan je het even checken of er iets op poort 80 draait op v5.1.0 door het volgende uit te voeren: docker exec -ti <dsmr container> bash -c "netstat -tlpn | grep 80"

...en dan hoop ik uiteraard dat er niets draait, anders heb ik een te grote mond gehad 😄

niekniek89 commented 2 years ago

Bedankt voor berichtje, zal het niet persoonlijk opvatten👍! Ik ben bang dat je vermoedens m.b.t. Portainer juist zijn... Zojuist nogmaals de upgrade naar V.5.1.0 gestart, en direct begint de logging mbt de "error" weer te lopen.

Na de upgrade op de linux VM gechecked, en zie nergens poort 80 in voor komen (word op heel de VM niet gebruikt voor andere zaken).

Het lijkt dus idd in Portainer te zitten. Met verwijderen & opnieuw toevoegen bedoel je dit gedeelte neem ik aan:

image

xirixiz commented 2 years ago

Klopt, maar dat is mijn punt ook. Wanneer je kijkt naar de portainer configuratie zie je dat poort 8888 en poort 8889 van jouw Linux VM gekoppeld worden naar respectievelijk poort 80 en 443 in de container. Het gaat er dus om wat er op poort 80 en 443 in de container gestart is. Maar aangezien Docker containers een dedicated functie hebben, in dit geval 1 proces dat iets doet met poort 80 en 443, is het feitelijk gezien onmogelijk dat dit gebeurd op de DSMR container. Lastig uit te leggen maar ik hoop dat je een beetje begrijpt wat ik bedoel.

Op jouw Linux VM zie je dus voor DSMR alleen processen op poort 8888 en 8889, de rest draait geisoleerd in de container op poort 80 en 443.

Ik heb Portainer in het verleden weleens gebruikt maar ben er niet helemaal meer in thuis. Ik bedoel eigenlijk gewoon heel de DSMR Docker config verwijderen uit Portainer en opnieuw toevoegen.

xirixiz commented 2 years ago

Je kan ook even de output delen van docker container ls --format "table {{.Names}}\t{{.Ports}}" -a vanaf je Linux VM, en de output van het command dat ik eerder heb gestuurd. Misschien valt mij dan nog iets op.

niekniek89 commented 2 years ago

Bedankt voor je hulp! Hier de output van "docker ps -a":

image

xirixiz commented 2 years ago

Thanks, dat ziet er iig goed uit iig. Vreemd is het ook dat de healthcheck wel werkt (checkt of DSMR draait op poort 80 namelijk).

Ik dacht dat je mss in host mode draaide maar dat is niet het geval, dus wat ik eerder vertelde over de poort mappings klopt.

niekniek89 commented 2 years ago

Ik zit inmiddels weer op V5.0, maar de health check met V5.1.0 werkte daar ook prima. Dus daar zit het hem idd niet in. Alles werkt ook gewoon na de upgrade, alleen viel de vele error meldingen bij op binnen portainer.

Ik ga eens kijken hoe ik de DSMR Docker config kan verwijderen/toevoegen.

xirixiz commented 2 years ago

Ja, balen, maar ik vrees dat ik geen oplossing voor je heb anders dan ik heb voorgesteld.

niekniek89 commented 2 years ago

Bedankt zover voor je hulp, ik begrijp het. Het is ook geen DSMR gerelateerd probleem.

Ik ga ermee aan de slag! Zal het issue zo wel sluiten.

niekniek89 commented 2 years ago

Na het verwijderen van de containers + images, DSMR/DSMRdb weer opnieuw uitgerold. Daarna waren de foutmeldingen weg.

Lag dus inderdaad aan portainer! Probleem dus opgelost.

xirixiz commented 2 years ago

Yes, helaas is het niet altijd mooi met Portainer, geen idee hoe dat komt eigenlijk. Ik zal het binnenkort ook weer eens installeren, misschien kan ik iets ontdekken waardoor we dit in de toekomst kunnen voorkomen. Hoe dan ook mooi dat het werkt.

niekniek89 commented 2 years ago

Ik heb ook geen idee, heel apart. Maar goed, ik weet voortaan hoe ik dit soort "issues" gemakkelijk kan fixen. Bedankt voor al het werk, en je hulp zover.