docker compose - keine Portfreigabe - ERR_CONNECTION_REFUSED

derlorenz

Commander
Registriert
März 2011
Beiträge
3.003
Moin in die Runde!

Ich hoffe der Titel ist nicht irreführend aber ich kann nachdem ich mit docker compose einen neuen Container erstellt habe, diesen nicht mehr per Webinterface erreichen.
Bis zum (vermeintlich) letzten sudo apt-get update bzw. sudo apt-get upgrade lief das alles noch wie von selbst und ohne Probleme, nachdem ich neue Container zum Testen erstellt hatte.

Zur Umgebung:
Aktuell läuft ein kleines Lab auf einem RPi 4b mit 8GB mit Debian GNU/Linux 11 (bullseye).
Hier laufen folgende Container bis dato problemlos, sprich erreichbar per Webinterface:
  • Portainer (Port 9000)
  • Paperless NGX (8010)
  • Homepage (3000)
  • Uptime Kuma (3444)
  • Nginx Proxy Manager (81)
  • Speedtest Tracker (8080)
Bash:
Client: Docker Engine - Community
 Version:           26.0.2
 API version:       1.45
 Go version:        go1.21.9
 Git commit:        3c863ff
 Built:             Thu Apr 18 16:27:46 2024
 OS/Arch:           linux/arm64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          26.0.2
  API version:      1.45 (minimum version 1.24)
  Go version:       go1.21.9
  Git commit:       7cef0d9
  Built:            Thu Apr 18 16:27:46 2024
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.6.31
  GitCommit:        e377cd56a71523140ca6ae87e30244719194a521
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
Bash:
Docker Compose version v2.26.1

Alle Clients (einschließlich dem Pi) hängen hinter einer FritzBox 7490 und sind sowohl per Ping, SSH oder SMB per IP & Hostname erreichbar.

Problem:
Erstelle ich nun einen neuen Container mit docker compose up -d (egal welchen HighPort ich vergebe), ist dieser nicht erreichbar. Hier am Beispiel von FreshRSS:
Code:
---
services:
  freshrss:
    image: lscr.io/linuxserver/freshrss:latest
    container_name: freshrss
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
    volumes:
      - ./:/config
    ports:
      - 8008:8008
    restart: unless-stopped
Code:
NAME       IMAGE                                 COMMAND   SERVICE    CREATED        STATUS        PORTS
freshrss   lscr.io/linuxserver/freshrss:latest   "/init"   freshrss   18 hours ago   Up 18 hours   80/tcp, 443/tcp, 0.0.0.0:8008->8008/tcp, :::8008->8008/tcp

Versuche ich nun per Browser darauf zuzugreifen (Hostname oder IP), bekomme ich im Chrome nur ERR_CONNECTION_REFUSED.
Selbst lokal auf dem Pi per curl localhost:8008 kommt nur:
Bash:
curl: (56) Recv failure: Connection reset by peer

Lasse ich mir mit sudo netstat -tulpn | grep LISTEN die Ports anzeigen, so horcht der Pi per IPv4/6 entsprechend:

Bash:
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      536/sshd: /usr/sbin
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1568/docker-proxy
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      1529/docker-proxy
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      829/smbd
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      829/smbd
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      1503/docker-proxy
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      566/perl
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN      1433/docker-proxy
tcp        0      0 0.0.0.0:3444            0.0.0.0:*               LISTEN      1456/docker-proxy
tcp        0      0 0.0.0.0:8008            0.0.0.0:*               LISTEN      21954/docker-proxy
tcp        0      0 0.0.0.0:8010            0.0.0.0:*               LISTEN      1732/docker-proxy
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      1597/docker-proxy
tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN      1532/docker-proxy
tcp6       0      0 :::22                   :::*                    LISTEN      536/sshd: /usr/sbin
tcp6       0      0 :::80                   :::*                    LISTEN      1575/docker-proxy
tcp6       0      0 :::81                   :::*                    LISTEN      1539/docker-proxy
tcp6       0      0 :::139                  :::*                    LISTEN      829/smbd
tcp6       0      0 :::445                  :::*                    LISTEN      829/smbd
tcp6       0      0 :::443                  :::*                    LISTEN      1509/docker-proxy
tcp6       0      0 :::9000                 :::*                    LISTEN      1440/docker-proxy
tcp6       0      0 :::3444                 :::*                    LISTEN      1463/docker-proxy
tcp6       0      0 :::8008                 :::*                    LISTEN      21963/docker-proxy
tcp6       0      0 :::8010                 :::*                    LISTEN      1739/docker-proxy
tcp6       0      0 :::8080                 :::*                    LISTEN      1603/docker-proxy
tcp6       0      0 :::3000                 :::*                    LISTEN      1550/docker-proxy

Als Firewall kommt ufw zum Einsatz, hier sind auch die Ports freigegeben:

Bash:
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22                         ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
9000                       ALLOW       Anywhere
3000                       ALLOW       Anywhere
8010                       ALLOW       Anywhere
8000                       ALLOW       Anywhere
80                         ALLOW       Anywhere
81                         ALLOW       Anywhere
8008                       ALLOW       Anywhere
8080                       ALLOW       Anywhere
3444                       ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
22 (v6)                    ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
9000 (v6)                  ALLOW       Anywhere (v6)
3000 (v6)                  ALLOW       Anywhere (v6)
8010 (v6)                  ALLOW       Anywhere (v6)
8000 (v6)                  ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
81 (v6)                    ALLOW       Anywhere (v6)
8008 (v6)                  ALLOW       Anywhere (v6)
8080 (v6)                  ALLOW       Anywhere (v6)
3444 (v6)                  ALLOW       Anywhere (v6)

Bevor ich jetzt ggf. das Ganze neu aufsetze oder im ersten Schritt docker runterschmeiße bzw. neu installiere, hoffe ich auf Vorschläge/Anregungen von euch. Fehlende Infos reiche ich natürlich gerne nach.

Danke im Voraus!
 
  • Gefällt mir
Reaktionen: netzgestaltung
Bist du sicher, dass die Ports in deiner docker-compose.yaml korrekt sind? Der Webserver in diesem Container läuft doch bestimmt auf Port 80 und nicht 8008.
 
  • Gefällt mir
Reaktionen: derlorenz
Wie die anderen schon andeuten, im Zweifel mal in den Container hüpfen und da schauen, ob der Dienst erreichbar ist. Erst wenn das klappt, außerhalb des Container nach dem Problem suchen.
 
  • Gefällt mir
Reaktionen: Der Lord und derlorenz
So ein einfacher Fehler 😒 ich habe tatsächlich das Port-Mapping verdreht. Mit
Code:
---
services:
  freshrss:
    image: lscr.io/linuxserver/freshrss:latest
    container_name: freshrss
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
    volumes:
      - ./:/config
    ports:
      - 8008:80
    restart: unless-stopped
klappt es nun auf anhieb.

Da muss ich mich mit der Syntax der yml noch mal genauer beschäftigen.

Vielen Dank für die Hilfe!
 
  • Gefällt mir
Reaktionen: Korben2206
Zurück
Oben