Netzwerkbandbreite für Docker Container beschränken


Recommended Posts

Guten Morgen zusammen,

 

ist es möglich, für einzelne Docker Container die zur Verfügung stehende Bandbreite des Netzwerkes zu limitieren?

 

Wenn ich bspw. einen Internetanschluss von 400/200 MBit Down-/Upload habe und ich nicht möchte, dass ein einzelner Container (explizit der Apache WebDAV oder auch Nextcloud) die vollen Bandbreiten „blockiert“. Deswegen würde ich diese Container dann gern auf bspw. 300/150 MBit begrenzen. 
 

Geht das irgendwie?

Link to comment
On 3/26/2024 at 8:39 AM, Knifte said:

Geht das irgendwie?

 

Just now, zero_neverload said:

In Unraid gibt es meiner MEinung nach keine Einstellungsmöglichkeiten.

 

Docker kann es per se nicht ...

 

es gibt 1 / 2 Wege wie man das lösen kann, aber nur wenn der Docker auch "tc" mit installiert haben und der Kernel das mitmacht ...

 

Unraid's Kernel macht das per se nicht mit soweit ich das mal getestet hatte, aber liest euch mal ein, ist aber ein "steiniger Weg" ...

ebenso muss die tc Routine VOR der app laufen ... 

Link to comment
1 hour ago, alturismo said:

Docker kann es per se nicht ...

 

es gibt 1 / 2 Wege wie man das lösen kann, aber nur wenn der Docker auch "tc" mit installiert haben und der Kernel das mitmacht ...

 

Unraid's Kernel macht das per se nicht mit soweit ich das mal getestet hatte, aber liest euch mal ein, ist aber ein "steiniger Weg" ...

ebenso muss die tc Routine VOR der app laufen ... 

Ich glaube ich bin da dann raus, weil das meine Kompetentzen übersteigt.

 

Ich bändige da einfacher die Nextclouduser😃

 

Edit: Manche Docker (z.B. Plex) haben ja die Möglichkeit die Bandbreite zu begrenzen. Nextcloud leider eben nicht.

Edited by zero_neverload
Link to comment
On 3/26/2024 at 8:39 AM, Knifte said:

Geht das irgendwie?

wenn du einen nginx basierten reverse proxy nimmst ... kannst du mal mit der limit_rate spielen in der jeweiligen proxy conf

 

wobei die Werte hier zumindest nicht passen, sprich, ich müsste umrechnen ... bei mir entsprechen 100k in der config = 5mbit in real, hab jetzt aber nicht weiter geschaut ...

 

Beispiel, mein speedtest Docker im LAN per domain angesprochen (geht also auch im Hairpin) vom WLAN Laptop ...

 

Standard ohne Limit Eintrag

 

image.png.28bc7fdfa0a47d3e863ddecdf04647f8.png

 

image.thumb.png.509481cb0bafa11592a8ad85fcd97d26.png

 

mit Limit 300k

 

image.png.815032b97c7914c4a3d188dd9a71e251.png

 

image.thumb.png.a9dd9fb9d7b913c6cd6a7a23760f3741.png

 

zum Spaß, Limit 5k

 

image.png.f621b665e85caac0e563f5ca38d87b8f.png

 

image.thumb.png.17106b6c8a34a150ed7e8fbbb238b0e9.png

 

normal sollte 1k = 1 kilobyte sein ... egal ;)

 

so könnte man zumindest "einfach" den upload diverser Dienste hinter dem Reverse Proxy limitieren ...

 

vielleicht reicht dir das schon ;) upload zu dir lässt sich damit nicht einschränken wie man sieht, aber denke das ist normal eh weniger das Thema ...

 

nur als Idee und alternativer Ansatz ;)

Link to comment
5 hours ago, alturismo said:

wenn du einen nginx basierten reverse proxy nimmst ... kannst du mal mit der limit_rate spielen in der jeweiligen proxy conf

 

wobei die Werte hier zumindest nicht passen, sprich, ich müsste umrechnen ... bei mir entsprechen 100k in der config = 5mbit in real, hab jetzt aber nicht weiter geschaut ...

 

Beispiel, mein speedtest Docker im LAN per domain angesprochen (geht also auch im Hairpin) vom WLAN Laptop ...

 

Standard ohne Limit Eintrag

 

image.png.28bc7fdfa0a47d3e863ddecdf04647f8.png

 

nur als Idee und alternativer Ansatz ;)

Das ist ja mal ein Geiler Ansatz.
Ich selbst lasse mein Nextcloud ja eben über den NginxProxyManager laufen.

Ich hoffe das geht damit auch....

Das muss ich umbedingt mal probieren, zumal ich auch mein Emby über den Proxy laufen lasse.

Edited by zero_neverload
Link to comment
3 hours ago, zero_neverload said:

Du meinst die CFG Files unter Appdata?

ich nutze NPM nicht ... ich bin swag user ... aber ja, wird wohl das Gleiche sein ;)

 

3 hours ago, zero_neverload said:

Weil den limit_rate wert gibt es bei mir in keiner der CFGs

 

klar gibt es den nicht ;)

 

manuell ... wobei in NPM macht man das über die GUI unter "extra" wenn ich mich recht erinnere ...

Link to comment
8 hours ago, alturismo said:

klar gibt es den nicht ;)

ok dachte nur weil er bei dir ja auskommentiert vorhanden war.

8 hours ago, alturismo said:

 

manuell ... wobei in NPM macht man das über die GUI unter "extra" wenn ich mich recht erinnere ...

Extra? Meinst du das hier?

 

image.png.5c12d33a5fec52e3997cdb535ba34ba3.png

 

ich hätte jetzt mal auf 

 

         $limit_rate 300k;

 

da reingetippt als unwissender, oder muss das anderes da rein (wenn es überhaupt da rein soll)

 

 

Link to comment
9 hours ago, zero_neverload said:

Aber denkst du der Wert wäre da richtig?

 

On 3/29/2024 at 1:26 PM, alturismo said:

Ich nutze NPM nicht ...

...

 

was erwartest du jetzt als Antwort ? ;)

 

ich sag jetzt mal, Ja ... da wird es wohl rein kommen ... hast du es mal probiert ?

Link to comment
1 minute ago, zero_neverload said:

Nein bin gerade im Urlaub und teste es dann.

dann genieß deinen Urlaub und schau es dir an wenn retour ;)

 

1 minute ago, zero_neverload said:

Letztendlich kann man ja nichts kaputt machen. (Hoffentlich)

so siehts aus, schlimmste wäre aktuell, NPM schießt sich ab und du kannst nicht mehr drauf ... daher nach dem Urlaub wenn kein VPN aktiv wäre.

Link to comment

...ein alternativer, eher "klassischer" Ansatz wäre, mt VLANs zu arbeiten und das Bandbreitenmanagement einem Router/Firewall zu überlassen.

Die harte Methode wäre, die Docker auf einen NIC zu legen, der nur 100Mbps kann ;-)

Edit: auch ein intelligenter Switch kann meist ingress/egress Filtering/Bandbreitenmanagement mittels ACLs.

Edited by Ford Prefect
  • Like 1
Link to comment
...ein alternativer, eher "klassischer" Ansatz wäre, mt VLANs zu arbeiten und das Bandbreitenmanagement einem Router/Firewall zu überlassen.
Die harte Methode wäre, die Docker auf einen NIC zu legen, der nur 100Mbps kann ;-)
Edit: auch ein intelligenter Switch kann meist ingress/egress Filtering/Bandbreitenmanagement mittels ACLs.

Muss aber vermutlich Layer 2 sein denke ich.

Hab ich zwar noch einen rumfliegen, aber auch da fehlt mir in der Tiefe das Knowledge.


Gesendet von iPhone mit Tapatalk
Link to comment
22 minutes ago, zero_neverload said:

Muss aber vermutlich Layer 2 sein denke ich.

Alle Switche sind Layer2, sonst wären es keine Switche....aber es muss ein "managed" Switch sein.

Dann kannst Du den Port-Speed einstellen (10/100/1000/2.5G/5G/10G) oder eben auch (ingress, manchmal auch noch egress)....ein Switch hat aber weniger Ressourcen als ein Router (der zB Pakete, dank mehr RAM, länger queuen kann) weswegen es dann häufiger zu Paket drops kommt - der Client muss sich dann drum kümmern.

 

27 minutes ago, zero_neverload said:

Hab ich zwar noch einen rumfliegen, aber auch da fehlt mir in der Tiefe das Knowledge.

Die kleine Variante mit 100M kannst Du ja leicht machen...dank auto-negotiation reicht es eine Seite umzustellen.

Ansonsten ein einfacher, managed Switch der ingress & egress kann: https://geizhals.de/mikrotik-routerboard-rb260-desktop-gigabit-managed-switch-rb260gs-a1147479.html

egress: https://help.mikrotik.com/docs/display/SWOS/CSS106+(RB260)+series+Manual#CSS106(RB260)seriesManual-Forwarding

ingress/ACL: https://help.mikrotik.com/docs/display/SWOS/CSS106+(RB260)+series+Manual#CSS106(RB260)seriesManual-ACL

Oder auch der moderner Bruder, inkl. 2x10G Option: https://geizhals.de/mikrotik-cloud-smart-switch-css610-desktop-gigabit-smart-switch-css610-8g-2s-in-a2379806.html

...doku: https://help.mikrotik.com/docs/display/SWOS/CSS610+series+Manual#CSS610seriesManual-Forwarding 

 

Bei einem Router (Layer 3) wird es schon komplizierter, zB RouterOS: https://help.mikrotik.com/docs/display/ROS/Queues

Link to comment
Die kleine Variante mit 100M kannst Du ja leicht machen...dank auto-negotiation reicht es eine Seite umzustellen.
Ansonsten ein einfacher, managed Switch der ingress & egress kann: https://geizhals.de/mikrotik-routerboard-rb260-desktop-gigabit-managed-switch-rb260gs-a1147479.html
egress: https://help.mikrotik.com/docs/display/SWOS/CSS106+(RB260)+series+Manual#CSS106(RB260)seriesManual-Forwarding
ingress/ACL: https://help.mikrotik.com/docs/display/SWOS/CSS106+(RB260)+series+Manual#CSS106(RB260)seriesManual-ACL
Oder auch der moderner Bruder, inkl. 2x10G Option: https://geizhals.de/mikrotik-cloud-smart-switch-css610-desktop-gigabit-smart-switch-css610-8g-2s-in-a2379806.html
...doku: https://help.mikrotik.com/docs/display/SWOS/CSS610+series+Manual#CSS610seriesManual-Forwarding 
 
Bei einem Router (Layer 3) wird es schon komplizierter, zB RouterOS: https://help.mikrotik.com/docs/display/ROS/Queues

Ich meinte auch eigentlich Layer 3 anstatt Layer 2.

Wenn ich dir sage, das ich vor gefühlten 10 Jahren mich mal mit Juniper Switchen und Junos auseinander setzen musste und alles vergessen habe, glaubt mir das keine Sau

Werde mir das mal anschauen, wenn es denn mit den NPM nicht klappt.

Ich weiß ja an wen ich mich wenden kann, wenn es nicht klappt….


Gesendet von iPhone mit Tapatalk
  • Like 1
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.