Dockerin poolien päällekkäisyysvirhe ei ole VPN-reitin ongelma
Toinen virhe syntyy osoituksen aikana, toinen reitin muututtua. Lue IPAM-aliverkot ennen kuin kosket konttien osoitteisiin tai tunneliin.
Docker kieltäytyy luomasta verkkoa viestillä, että pool on päällekkäinen toisen kanssa tässä osoiteavaruudessa, ja joku päättää, että VPN-reitin on oltava syy. Se ei voi olla. Virhe syntyy, kun poolia osoitetaan, ennen kuin yhtäkään pakettia on olemassa, eikä käsin tehty ytimen reitti vaikuta siihen. VPN merkitsee askelta myöhemmin, kun kontti, jolla on jo osoite, lakkaa olemasta tavoitettavissa, kun reitti ilmestyy. Kaksi ongelmaa, kaksi todistejoukkoa, ja niiden sekoittaminen tuottaa muutoksen, joka ei korjaa kumpaakaan.
Kaksi samannäköistä virhettä
Osoitusvirhe on aritmeettinen. Docker vertaa pyytämääsi aliverkkoa aliverkkoihin, joita se jo hallitsee, löytää leikkauksen ja kieltäytyy. Mitään ei vielä pyöri, joten ei ole reittiä, konttia eikä liikennettä tutkittavaksi.
Ajonaikainen oire on tavoitettavuuskysymys. Kontti, joka vastasi eilen, ei vastaa nyt, ja jotain on muuttunut isännän reititystaulukossa. Kontti pitää yhä osoitteensa; kysymys on, minkä polun tämä osoite ottaa.
Molemmat ovat osoitesuunnitelman ongelmia. Vain toinen niistä on Dockerin ongelma.
Lue ensin osoitetut poolit
Listaa verkot ja tutki ne, jotka voisivat leikata. Aliverkko elää IPAM-kokoonpanossa, ja liitetyt kontit luetellaan erikseen:
docker network ls
docker network inspect EXISTING_NETWORK
Vertaa tätä aliverkkoa pooliin, jota uusi verkko pyytää, ja muista, että Compose luo oman oletusverkkonsa projektia kohden. Konflikti unohtamasi projektin kanssa näyttää täsmälleen samalta kuin konflikti daemonin kanssa.
Palvelun staattinen ipv4_address on yhden kontin osoite, ei poolin määritelmä. Sen muuttaminen ei poista päällekkäisyyttä, koska päällekkäisyys on verkkojen aliverkkojen välillä eikä konttien välillä. Dockerin network-create-viite vaatii tavalliseen siltaosoitukseen aliverkkoja, jotka eivät ole päällekkäisiä, ja kuvaa, miten yksi valitaan eksplisiittisesti.
Valitse etuliite, joka kestää VPN:n
Välitön konflikti ja tuleva reitti ratkaistaan samalla valinnalla, joten tee se kerran. Vertaa ehdokasaluetta LANiin, jokaiseen VPN-kohteeseen, jonka isäntä tavoittaa, ja mihin tahansa muuhun käytössä olevaan overlayhin.
Etuliite, joka tyydyttää Dockerin ja törmää etäverkkoon, antaa kontin, joka käynnistyy puhtaasti ja muuttuu tavoittamattomaksi hetkellä, jolloin tunneli nousee. Se on tämän artikkelin toinen virhe, ja se on paljon vaikeampi diagnosoida myöhemmin kuin välttää nyt.
Kirjoita valitut alueet jonnekin, mistä seuraava projekti voi lukea ne. Yhden rivin rekisteri osoitetuista etuliitteistä on halvempi kuin viikko selittämättömiä aikakatkaisuja.
Poista tai muuta verkko tarkoituksella
Uudelle Compose-verkolle aseta käyttämätön etuliite verkon IPAM-kokoonpanoon. Olemassa olevalle projektille suunnittele uudelleennumerointi: kiinteät osoitteet, riippuvaiset palvelut ja verkon uudelleenluontivaihe on kaikki otettava huomioon, koska YAML:n muokkaaminen ei numeroi käynnissä olevaa verkkoa uudelleen.
Jos vanhentunut verkko omistaa ristiriitaisen osoituksen, tutki ennen sen poistamista, kuka on liitetty. docker network rm kieltäytyy, kun aktiivisia endpointteja on olemassa, ja docker stop ottaa konttien nimiä tai ID:itä eikä verkon nimeä. Kontin pysäyttäminen ei myöskään poista verkkomääritelmää, joka pitää poolin.
Laaja prune ei ole diagnostiikkatyökalu. Se yltää asiaankuulumattomiin projekteihin ja tuhoaa todisteet, joita olit juuri keräämässä.
Oletuspoolit auttavat vain seuraavaa osoitusta
Daemonin oletusosoitepoolin asetus parantaa tulevia automaattisia osoituksia pitämällä ne varaamiesi alueiden ulkopuolella. Se ei osoita verkkoja uudelleen taannehtivasti, jotka ovat jo olemassa, eikä se ratkaise eksplisiittistä aliverkkoa, joka on päällekkäinen toisen eksplisiittisen aliverkon kanssa.
Käsittele tätä asetusta erillisenä, suunniteltuna muutoksena, jolla on oma uudelleenkäynnistys, älä yhtenä projektin korjauksen osana. Kahden sekoittaminen tarkoittaa, että daemonin uudelleenkäynnistys osuu asiaankuulumattoman tutkimuksen keskelle. Ajoita se omaan ikkunaansa. Vahvista sitten, että yksi uusi automaattinen osoitus todella osuu varaamiesi alueiden ulkopuolelle.
Kun luonti onnistuu, varmista todella käynnissä oleva aliverkko ja tee sitten yksi todellinen sovelluspyyntö VPN:n ollessa aiotussa tilassaan. Jos pool on kelvollinen ja pääsy epäonnistuu silti, jäljellä oleva työ on reitin valinta, suodatus ja paluupolku. Se on ajonaikainen tutkimus, eikä se tee osoitusvirheestä taannehtivasti merkityksetöntä.
Työn järjestys: lue osoitetut poolit, valitse etuliite, joka väistää sekä Dockerin että VPN-kohteet, luo verkko tarkoituksella uudelleen ja testaa sitten yksi pyyntö tunnelin ollessa ylhäällä.