Ankündigung

Einklappen
Keine Ankündigung bisher.

Edomi im Docker-Container

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

  • tobo
    antwortet
    Ich möchte kein Portforwarding weil es nicht nur um den Docker Host mit einem Container Edomi geht, sondern insgesamt um recht viele Dienste die hier im Netzwerk laufen, die meisten virtualisiert, und ich möchte das möglichst homogen halten.
    Nehmen wir mal ein anderes Beispiel. Wenn Edomi gut im Docker Container läuft, dann kommt vielleicht als nächstes der eibd dran (wir können aber auch von splunk, dem elk-stack, dem Asterisk Server, dem Storage, dem Backup, dem Octoprint, dem Mediacenter, den Tablets, VoIP-Telefone, Nextcloud, lokale CA ... reden). Alle diese Dienste sind aufeinander eingestellt und haben die Adressen samt Ports konfiguriert, bzw. bekommen ihr Hostnamen über einen internen DNS aufgelöst und es funktioniert. Jetzt stell Dir vor irgendwann nachdem ich anfange hier mit Portforwarding rumzumachen, ich bin nur noch mit Ports konfigurieren beschäftigt. Oder ein Backup von "vor dem Portforwarding" einspiele... ich habe den ganzen Kram hier und beschäftige mich gern damit, aber irgendwo ists auch gut.

    Ich investiere lieber jetzt mehr Zeit um zu lernen wie Docker funktioniert und es richtig in meine laufende Umgebung einzufügen als nachher Stunden mit Troubleshooting zu verbringen. Und wenn man sich so bei stackexchange etc umsieht - ich bin nicht allein mit dem Problem.

    Reicht das als Szenario?

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Ok, dann versuche ich es nochmal

    Soweit ich das verstehe, möchtest du kein Portforwarding? Aber warum nicht? Du holst dir viel mehr Komplexität mit einer dedizierten IP ins Haus als mit einer Portweiterleitung. Der einzige, für dich relevante Port ist doch nur der Port des Webservices. Wenn du den Port 80 oder 443 auf dem Docker-Host frei hast, dann kannst du einfach ein -p 80:80 oder -p 443:443 machen. Ich persönlich nehme den 8443.

    Sehr elegant ist auch ein Docker-Container mit nginx als Reverse- Proxy der die Umleitung zu den einzelnen Services (alle in einem eigenen Container) übernimmt. Auch hier brauchst du keine festen IPs, da jeder Docker-Container untereinander mit den Docker-Container-Namen kommunizieren kann (die entsprechenden internen IPs werden als Environment-Variablen den einzelnen Container übergeben).

    Wie ich es auch drehe und wende, es gibt kaum ein Szenario, indem feste IPs notwendig sind und erst recht keine, die im LAN sichtbar sind.

    Gruss,

    Stefan
    Zuletzt geändert von pfischi; 27.03.2017, 19:30. Grund: typo

    Einen Kommentar schreiben:


  • tobo
    antwortet
    Herzlichen Glückwunsch zu Deinem Beschriftungsgerät.

    Zitat von Janosch25786 Beitrag anzeigen
    4. Ich verstehe weiter nicht, was du meinst erreichen zu wollen
    Ja, das merke ich. Hast Du soweit Ahnung von Docker dass Du meine eigentliche Frage beantworten kannst? Wenn nein, ... ich sehe nicht warum Du mit mir die Sinnhaftigkeit meiner Frage diskutieren musst.

    (Und vielleicht finde ich es ja scheisse irgendwelche Schildchen auf meine Geräte zu kleben. Oh mann.)

    Freue mich wenn das jetzt niemanden davon abhält sein Wissen zu teilen - danke im Voraus

    Einen Kommentar schreiben:


  • Janosch25786
    antwortet
    Nein, ich wohne nicht alleine
    Nein, meine Idee ist es nicht die Komplexität zu erhöhen
    Nein, ich benötige für den Aufruf meines Edomi-Containers keine extralange Doku

    1. Habe ich meine Ports im Kopf, liegt aber daran, dass ich mir Zählen gut merken kann
    2. Ich nutze einen Lesezeichenmanager, in dem ein eigener Ordner für das Haus abgelegt ist
    3. Auf meinem NUC habe ich mit einem Beschriftungsgerät alle verwendeten Dockerports inkl. Diensten aufgeklebt

    4. Ich verstehe weiter nicht, was du meinst erreichen zu wollen

    Einen Kommentar schreiben:


  • tobo
    antwortet
    Zitat von Janosch25786 Beitrag anzeigen
    DNS....
    Lesezeichenmanager nutzen?! *G*
    Ernsthaft? Ich leite das mal ab: Deine Idee ist es, ein System das ein Haus steuern soll durch Erhöhen der Komplexität besser zu machen? Warst Du schonmal in der Situation dass auch andere das Ergebnis Deiner Arbeit nutzen können sollen oder wohnst Du noch allein? Wieviele Seiten Extra-Dokumentation willst Du schreiben für den Fall der Fälle? Es geht doch nicht ums "Ports aufschreiben".

    Ich fasse das nochmal zusammen: Ich möchte mit Docker ein ganz bestimmtes Ziel erreichen und bin überrascht davon dass das entweder schwierig umzusetzen ist oder mit Docker nicht funktioniert, manche Sachen merkt man erst in der Praxis.
    Wenn das Docker-Ding als Produktivsystem am Ende nichts taugt mache ich halt was anderes, aber habe zumindest was dabei gelernt.

    EPIX "eigene IP-Adresse des Container-Edomis definieren" - genau da will ich hin mit meinen Fragen, was ich bisher probiert habe war ohne Erfolg.
    wintermute Oder einen Reverse Proxy .. aber da kommt auch wieder das Komplexitäts-Thema ("und wie ist das eigentlich mit nicht-http/https traffic?"), eine dedizierte IP wäre mir deutlich lieber.

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Man kann auch im Webserver des Docker-Hosts einen Redirect konfigurieren...

    Einen Kommentar schreiben:


  • Janosch25786
    antwortet
    Muss ich dir leider Recht geben...wäre auch zu einfach gewesen :-)

    Dann muss tobo sonst einen Lesezeichenmanager nutzen?! *G*

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Ein DNS uebersetzt Namen in IP-Adressen (und andersrum), einen Port kann man da nicht "konfigurieren"... waer ja auch schon deswegen Quark weil es durchaus noch ein paar andere Protokolle neben HTTP im Stack gibt

    Einen Kommentar schreiben:


  • Janosch25786
    antwortet
    tobo
    Das mit der Portweiterleitung ist eigentlich kein Problem und hat mit dem stabilen Laufen von Edomi rein gar nichts zu tun. Hier ist auch kein größeres oder kleineres Fehlerpotential gegeben.

    Dein Problem, dass du dir die Ports aufschreiben müsstest, etc. kannst du ja auch anders lösen! Lass einen kleinen DNS-Server laufen, meinetwegen auch in eigenem Docker-Container. Damit hast du ne Namensauflösung und kannst für bspw. 192.168.1.1:49000 einfach ein "edo.mi" in dein Heimnetz integrieren. Brauchst dir nichts merken und fertig.

    Einen Kommentar schreiben:


  • EPIX
    antwortet
    ich glaube du müsstest eine eigene IP-Adresse des Container-Edomis definieren, dann kannst du die Ports verwenden...
    Ich habe eben die Adresse des Docker-Hosts (also mein NAS) und dazu die verbogenen Ports - du müsstest IMHO die verbogene IP definieren und die Original-Ports verwenden

    Einen Kommentar schreiben:


  • tobo
    antwortet
    Mein Use-Case? Ich will Edomi stabil und dauerhaft auf Docker laufen lassen, möglichst ohne drumherum tausend potentiell fehlerträchtige Verrenkungen zu machen. Ich will nicht an Docker rumschrauben sondern an Edomi. Gern auch so dass ich nach ein paar Monaten Pause nicht erst raussuchen muss welcher blöde Port für X jetzt verwendet wird, und wo ich mir das überhaupt aufgeschrieben habe

    Aber vielleicht verstehe ich das auch einfach nicht. Ich weiß dass Docker keine VM ist, denke aber dass so eine Geschichte trivial sein müsste.

    Zitat von pfischi Beitrag anzeigen
    Ist zwar alles möglich, jedoch nicht typisch "Docker-Style".
    Weißt Du zufällig wie?

    Danke & Gruß

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Also ich würde eher sagen das du einen Schritt zurück gehst. Das schöne an Docker ist doch gerade diese Flexibilität. Ich weiß auch nicht wirklich, welchen Use-Case du mit einer statischen IP abdecken möchtest. Ist zwar alles möglich, jedoch nicht typisch "Docker-Style".

    Gruss,

    Stefan

    Einen Kommentar schreiben:


  • tobo
    antwortet
    Zitat von Janosch25786 Beitrag anzeigen
    Warum machst du es so umständlich und nimmst nicht erst einmal den Startbefehl, der dem Docker-Container beiliegt?! Damit funktioniert es tadellos.
    dass das funktioniert weiss ich. Habe das eine Weile so gemacht. Jetzt will ich aber einen Schritt weitergehen und versuche, den Container mit eigener IP und ohne verbogene Ports zu betreiben.

    Einen Kommentar schreiben:


  • Janosch25786
    antwortet
    Warum machst du es so umständlich und nimmst nicht erst einmal den Startbefehl, der dem Docker-Container beiliegt?! Damit funktioniert es tadellos.

    Einen Kommentar schreiben:


  • tobo
    antwortet
    Hm, wenn ich die Ports 50000 und 50001 weglasse, bekomme ich keine Fehlermeldung. Mit netstat sehe ich, dass die Ports nun genutzt werden, eine Verbindung kann ich dennoch nicht herstellen, weder auf der IP des docker hosts noch auf der zugewiesenen IP.

    Code:
    netstat -tulpn
    Aktive Internetverbindungen (Nur Server)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1216/sshd      
    tcp6       0      0 :::2222                 :::*                    LISTEN      3156/docker-proxy
    tcp6       0      0 :::80                   :::*                    LISTEN      3144/docker-proxy
    tcp6       0      0 :::22                   :::*                    LISTEN      1216/sshd      
    tcp6       0      0 :::443                  :::*                    LISTEN      3132/docker-proxy
    udp        0      0 0.0.0.0:68              0.0.0.0:*                           1154/dhclient
    So sieht der Container aus: (Kann ich das eigentlich auch irgendwo editieren?)

    Code:
    docker inspect edomi
    [
        {
            "Id": "2a2d35e42779151ac1f19d2fe851681a64cd99c82440d303845dc9a67faff162",
            "Created": "2017-03-26T19:43:40.821002935Z",
            "Path": "/root/start.sh",
            "Args": [],
            "State": {
                "Status": "running",
                "Running": true,
                "Paused": false,
                "Restarting": false,
                "OOMKilled": false,
                "Dead": false,
                "Pid": 3181,
                "ExitCode": 0,
                "Error": "",
                "StartedAt": "2017-03-26T19:43:41.410329759Z",
                "FinishedAt": "0001-01-01T00:00:00Z"
            },
            "Image": "sha256:4a0f66e5f7b456680138b21f8d26b4d6ab853f9e4fd4c8bf1388d41964814047",
            "ResolvConfPath": "/var/lib/docker/containers/2a2d35e42779151ac1f19d2fe851681a64cd99c82440d303845dc9a67faff162/resolv.conf",
            "HostnamePath": "/var/lib/docker/containers/2a2d35e42779151ac1f19d2fe851681a64cd99c82440d303845dc9a67faff162/hostname",
            "HostsPath": "/var/lib/docker/containers/2a2d35e42779151ac1f19d2fe851681a64cd99c82440d303845dc9a67faff162/hosts",
           "LogPath":"/var/lib/docker/contaners/2a2d35e42779151ac1f19d2fe851681a64cd99c82440d303845dc9a67faff162/2a2d35e42779151ac1f19d2fe851681a64cd99c82440d303845dc9a67faff162-json.log",
            "Name": "/edomi",
            "RestartCount": 0,
            "Driver": "aufs",
            "MountLabel": "",
            "ProcessLabel": "",
            "AppArmorProfile": "",
            "ExecIDs": null,
            "HostConfig": {
                "Binds": null,
                "ContainerIDFile": "",
                "LogConfig": {
                    "Type": "json-file",
                    "Config": {}
                },
                "NetworkMode": "home-lan",
                "PortBindings": {
                    "22/tcp": [
                        {
                            "HostIp": "",
                            "HostPort": "2222"
                        }
                    ],
                    "443/tcp": [
                        {
                            "HostIp": "",
                            "HostPort": "443"
                        }
                    ],
                    "80/tcp": [
                        {
                            "HostIp": "",
                            "HostPort": "80"
                        }
                    ]
                },
                "RestartPolicy": {
                    "Name": "no",
                    "MaximumRetryCount": 0
                },
                "AutoRemove": false,
                "VolumeDriver": "",
                "VolumesFrom": null,
                "CapAdd": null,
                "CapDrop": null,
                "Dns": [],
                "DnsOptions": [],
                "DnsSearch": [],
                "ExtraHosts": null,
                "GroupAdd": null,
                "IpcMode": "",
                "Cgroup": "",
                "Links": null,
                "OomScoreAdj": 0,
                "PidMode": "",
                "Privileged": false,
                "PublishAllPorts": false,
                "ReadonlyRootfs": false,
                "SecurityOpt": null,
                "UTSMode": "",
                "UsernsMode": "",
                "ShmSize": 67108864,
                "Runtime": "runc",
                "ConsoleSize": [
                    0,
                    0
                ],
                "Isolation": "",
                "CpuShares": 0,
                "Memory": 0,
                "NanoCpus": 0,
                "CgroupParent": "",
                "BlkioWeight": 0,
                "BlkioWeightDevice": null,
                "BlkioDeviceReadBps": null,
                "BlkioDeviceWriteBps": null,
                "BlkioDeviceReadIOps": null,
                "BlkioDeviceWriteIOps": null,
                "CpuPeriod": 0,
                "CpuQuota": 0,
                "CpuRealtimePeriod": 0,
                "CpuRealtimeRuntime": 0,
                "CpusetCpus": "",
                "CpusetMems": "",
                "Devices": [],
                "DiskQuota": 0,
                "KernelMemory": 0,
                "MemoryReservation": 0,
                "MemorySwap": 0,
                "MemorySwappiness": -1,
                "OomKillDisable": false,
                "PidsLimit": 0,
                "Ulimits": null,
                "CpuCount": 0,
                "CpuPercent": 0,
                "IOMaximumIOps": 0,
                "IOMaximumBandwidth": 0
            },
            "GraphDriver": {
                "Name": "aufs",
                "Data": null
            },
            "Mounts": [],
            "Config": {
                "Hostname": "2a2d35e42779",
                "Domainname": "",
                "User": "",
                "AttachStdin": false,
                "AttachStdout": false,
                "AttachStderr": false,
                "ExposedPorts": {
                    "22/tcp": {},
                    "443/tcp": {},
                    "80/tcp": {}
                },
                "Tty": false,
                "OpenStdin": false,
                "StdinOnce": false,
                "Env": [
                    "KNXGATEWAY=192.168.11.174",
                    "KNXACTIVE=true",
                    "HOSTIP=192.168.11.169",
                    "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                    "EDOMI_TMP_PATH=/tmp",
                    "EDOMI_ZIP=/tmp/edomi.zip",
                    "EDOMI_INSTALL_PATH=/tmp/edomi/Install/",
                    "START_SCRIPT=/root/start.sh"
                ],
                "Cmd": [
                    "/root/start.sh"
                ],
                "ArgsEscaped": true,
                "Image": "pfischi/edomi:latest",
                "Volumes": null,
                "WorkingDir": "",
                "Entrypoint": null,
                "OnBuild": null,
                "Labels": {
                    "build-date": "2016-06-02",
                    "license": "GPLv2",
                    "name": "CentOS Base Image",
                    "vendor": "CentOS"
                }
            },
            "NetworkSettings": {
                "Bridge": "",
                "SandboxID": "e9fd0116f3594cd88c4ba1a77e18f8cefef67c3a61a18f218aa9597f5ae0d248",
                "HairpinMode": false,
                "LinkLocalIPv6Address": "",
                "LinkLocalIPv6PrefixLen": 0,
                "Ports": {
                    "22/tcp": [
                        {
                            "HostIp": "0.0.0.0",
                            "HostPort": "2222"
                        }
                    ],
                    "443/tcp": [
                        {
                            "HostIp": "0.0.0.0",
                            "HostPort": "443"
                        }
                    ],
                    "80/tcp": [
                        {
                            "HostIp": "0.0.0.0",
                            "HostPort": "80"
                        }
                    ]
                },
                "SandboxKey": "/var/run/docker/netns/e9fd0116f359",
                "SecondaryIPAddresses": null,
                "SecondaryIPv6Addresses": null,
                "EndpointID": "",
                "Gateway": "",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "IPAddress": "",
                "IPPrefixLen": 0,
                "IPv6Gateway": "",
                "MacAddress": "",
                "Networks": {
                    "home-lan": {
                        "IPAMConfig": {
                            "IPv4Address": "192.168.11.169"
                        },
                        "Links": null,
                        "Aliases": [
                            "2a2d35e42779"
                        ],
                        "NetworkID": "2c9ca077e2954ecb8c870687e8dcce152cce098ad94faecce33a91c094ba410f",
                        "EndpointID": "dc301e5cfe115656c943a057864ddffa3920c38ab380e2771852ebbe1ebf1d1b",
                        "Gateway": "192.168.11.1",
                        "IPAddress": "192.168.11.169",
                        "IPPrefixLen": 24,
                        "IPv6Gateway": "",
                        "GlobalIPv6Address": "",
                        "GlobalIPv6PrefixLen": 0,
                        "MacAddress": "02:42:c0:a8:0b:a9"
                    }
                }
            }
        }
    ]

    Einen Kommentar schreiben:

Lädt...
X