Å gi en container sin egen adresse i nettet: hva du vinner, hva du betaler

Du kan publisere en container med egen adresse i stedet for med et portnummer. Gevinsten er ekte og det er prisen også, og den siste oppdages som regel etter at alt er bygd.

AtlasPVE ·

Denne artikkelen svarer på

  • docker container egen ip-adresse
  • docker macvlan hva er det
  • docker macvlan verten når ikke containeren
  • docker container synes ikke i nettverket
  • docker gi ip i stedet for port

Standardoppsettet er dette: containeren deler maskinens adresse, og du når den via et portnummer. Det er enkelt, det er trygt, og for det meste arbeidet holder det.

Det finnes tilfeller der det ikke holder, og de er til å forutse.

Når et portnummer ikke holder

To programmer vil ha det samme nummeret. Du flytter det ene til et annet nummer, og så bærer ikke lenkene programmet selv lager det nummeret, og det blir rotete.

Programmet kunngjør seg selv i nettet. Å finne skrivere, finne mediespillere, finne enheter i det smarte hjemmet: det virker med selvkunngjørende meldinger. De meldingene overlever ikke portoversettelsen. Programmet kunngjør seg, men adressen det kunngjør er maskinens, og motparten når det ikke.

Du vil se programmet i ruterens enhetsliste. For å gi det en fast adresse, skrive en egen brannmurregel, se trafikken dets for seg. Med portoversettelse finnes ikke det programmet for nettet; bare maskinen finnes.

Den andre veien: gi containeren sin egen identitet

Containeren dukker opp i nettet med sin egen maskinvareadresse, får sin egen adresse fra ruteren, og står i enhetslisten som et fysisk apparat.

Den første reaksjonen er som regel "hvorfor gjør ikke alle det slik". Svaret ligger i prisen.

Pris én: maskinen når ikke sin egen container

Dette overrasker mest, og oppdages som regel når arbeidet allerede er ferdig.

Alle enheter i nettet når den containeren. Maskinen som kjører den, gjør det ikke.

Grunnen gir mening: begge bruker det samme fysiske grensesnittet, og trafikken kommer ikke tilbake fra svitsjen. Maskinen sender pakken ut, og pakken kommer ikke tilbake til sitt eget kort.

Følgene er dagligdagse: en helsesjekk som kjører på maskinen når ikke programmet, en annen container på den samme maskinen får ikke koblet seg til, et skript du skrev virker ikke. Alt dette mens nettet ser feilfritt ut utenfra.

Det finnes en løsning, men den er en ekstra del: åpne et andre virtuelt grensesnitt på maskinen knyttet til det samme kortet, og la veien til containerens adresse gå der. Når den er installert er problemet borte, men siden det er et tillegg, forstår ingen noe om den glemmes.

Pris to: du bruker opp en ekte adresse

Hver container bruker opp en adresse fra nettet ditt. Ti programmer betyr ti adresser. I et lite nett når du grensen fort.

I tillegg kan adressen endres om den er et lån. Når den endres peker alt som var festet til den, også en regel du skrev, stille på feil sted.

Pris tre: nettverkskortet og brannmuren

Kortet må godta mer enn én maskinvareadresse. De fleste trådløse forbindelser gjør ikke det, og noen virtuelle miljøer kommer med det avslått. Ikke bestem deg uten å teste.

Og brannmuren din ser nå en enhet i nettet den ikke kjenner. For deg er det en container; for den som skriver reglene et vanlig apparat. Det er ikke et problem, men usagt vil det en dag forvirre noen.

Adressen holder ikke, det trengs et navn også

Et program med adresse og uten navn er halve gevinsten. Ingen vil lære en adresse utenat.

For at navnet skal kunngjøres i nettet må noe gjøre den jobben. Programmets eget avtrykk inneholder som regel ingen slik del, og det trenger det heller ikke: et databaseavtrykk har ingenting å kunngjøre i et nett.

Regelen

En portoversettelse gir en dør et nummer. En nettidentitet gir statsborgerskap.

Gi statsborgerskap bare når nettet virkelig må behandle det programmet som en enhet. Hvis ikke er et portnummer både enklere og tryggere.

Hva Atlas gjør

Når Atlas setter dette opp, rører det ikke programmets eget avtrykk. Det åpner en liten hjelper ved siden av programmet, og hjelperen deler programmets nettstabel. Hjelperen ber ruteren om adressen, og hjelperen kunngjør navnet i nettet.

Den koblingen er tilsiktet og gir to ting. Programmets avtrykk trenger verken en adresseklient eller en navnekunngjører. Og siden nettstabelen tilhører programmet, faller hjelperen av seg selv når programmet stanser, uten å etterlate en foreldreløs container.

For problemet med at maskinen ikke når sin egen container installeres broen beskrevet ovenfor, og den installeres som en tjeneste, slik at den bygger seg selv opp igjen når maskinen starter på nytt.

Det som virkelig er verdt å fortelle, er en feil som ble funnet i den broen under en test i drift.

Broen åpnet en vei til containerens adresse. Men den slettet ikke veien til en container som var borte. Etter en omstart hadde veien til en midlertidig adresse blitt hengende. Følgen: tar en annen enhet senere den adressen, blir trafikken ment for den enheten ledet inn i broen. Feilen rammer altså ikke containeren, men en uskyldig tredjepart i nettet.

Rettingen var å slutte å la broen være noe som bare legger til veier, og gjøre den til noe som sletter veier som ikke lenger svarer til en levende container.

Den generelle lærdommen gjelder også utenfor nettverk: å legge til er den lette halvdelen. En vei, en regel, en oversettelse er en påstand du framsetter om verden. Når verden endrer seg, blir en påstand ingen trakk tilbake en løgn, og den rammer som regel ikke deg, men noen som ikke har noe med deg å gjøre.

Kilder

Proxmox sin egen dokumentasjon. På engelsk, og den har siste ord i denne saken.

Relaterte artikler

Hvordan ser dette ut inne i Atlas?

Gå til produktsiden