‫Voor deze lezing moet u enkele van de eerdere concepten over netwerken en ook over het
‫maken van containers begrijpen.
‫Nu we de concepten van Docker-netwerken begrijpen en hoe alle virtuele netwerken en IP-dingen werken,
‫laten we eens kijken naar enkele van de opdrachtregelopties om het te beheren.
‫Ten eerste is er het voor de hand liggende netwerk ls. Omdat we meerdere netwerken kunnen maken, hebben we zeker een ls-opdracht
‫om ze op te sommen.
‫We hebben het gebruikelijke inspectie-commando dat u nu waarschijnlijk gewend bent van alle andere inspecties die
‫we doen.
‫Dat laat ons de details van een specifiek netwerk zien.
‫Dan hebben we een create-opdracht met een optioneel stuurprogramma dat we kunnen specificeren voor het gebruik van ingebouwde stuurprogramma's
‫en stuurprogramma's van derden om een nieuw virtueel netwerk te maken.
‫Dan hebben we de connect- en disconnect-commando's voor het wijzigen van een live lopende container, zodat een nieuwe NIC
‫wordt gemaakt op een virtueel netwerk voor die container.
‫Het is alsof je een netwerkkaart in een computer steekt terwijl deze actief is.
‫Hier gaan we.
‫Dus terug naar mijn commandoregel. Met de concepten die we net hebben geleerd, kan
‫ik een docker-netwerk ls doen. Dit toont me alle netwerken die zijn gemaakt. In dit geval, wanneer u dezelfde
‫opdracht uitvoert, ziet u waarschijnlijk dezelfde drie. Afhankelijk van uw besturingssysteem
‫en versie van Docker, ziet u mogelijk het bridge-netwerk met de naam docker0
‫of bridge, maar ze betekenen allebei hetzelfde. Dat is het standaardnetwerk dat via de NAT-firewall een brug vormt naar
‫het fysieke netwerk waarmee uw host is verbonden. Tot nu toe hoefden we ons daar geen zorgen
‫over te maken, omdat al onze containers zojuist op dat netwerk zijn aangesloten en werken.
‫Nu we deze Nginx-container hebben draaien, als ik een docker-netwerk inspecteer, het brugnetwerk, zul je zien dat het de containers vermeldt
‫die aan dat netwerk zijn gekoppeld. Je zult zien dat onze Nginx-versie,
‫die we webhost noemden, daar is bijgevoegd.
‫U kunt het IP-adres daadwerkelijk zien. En je zult hier zien dat deze netwerken automatisch IP-adressen toewijzen, en
‫het laat je hier zien met de IPAM-configuratie dat het subnet standaard is ingesteld op 172. 17, wat meestal het
‫standaardnetwerk is voor elke Docker-host.
‫Maar het kan worden gewijzigd, en dan de gateway voor dit netwerk die uiteindelijk naar het fysieke netwerk
‫zal worden gerouteerd.
‫Als we teruggaan naar het docker-netwerk ls, kunnen we deze andere twee netwerken zien. Het hostnetwerk is waar we het
‫eerder over hadden, dat is een speciaal netwerk dat het virtuele netwerk van Docker overslaat en
‫de container rechtstreeks aan de hostinterface koppelt.
‫Zoals je je kunt voorstellen, zijn daar voor- en nadelen aan, omdat het voorkomt dat
‫de beveiligingsgrenzen van de containerisatie de interface van die container beschermen.
‫Maar het kan in bepaalde situaties ook de prestaties van netwerken met hoge doorvoer verbeteren en een
‫paar andere problemen omzeilen met specifieke speciale software die er is.
‫Dan hebben we de laatste van geen, wat een beetje het equivalent is van het hebben van een interface
‫op je computer die nergens aan vast zit, maar we kunnen er zelf een maken.
‫Laten we een Docker-netwerk maken... maak my_app_net aan.
‫Nu
‫gaan we weer een docker-netwerk ls doen. Je zult merken dat het mijn nieuwe virtuele netwerk heeft gemaakt met een driver van bridge.
‫En dat is omdat dat de standaarddriver is.
‫Het is een eenvoudig stuurprogramma dat eenvoudig lokaal een virtueel netwerk maakt met een eigen
‫subnet ergens rond de 172. 17 en hoger, omdat het zal toenemen naarmate het vordert. Dus 17, dan 18, 19, 20 enzovoort.
‫Het heeft geen van de geavanceerde functies die we later in
‫deze cursus zouden kunnen zien, zoals overlappende netwerken die privénetwerken tussen hosts mogelijk maken, en andere stuurprogramma's van derden zoals Weave.
‫Als je met hulp naar de opdracht docker network create kijkt, zul je zien dat ik niet alleen de driver kan specificeren
‫die ik wil gebruiken, maar ook veel van de IP- en netwerkopties die je in
‫een geavanceerd scenario nodig zou kunnen hebben.
‫We kunnen verschillende dingen doen met deze netwerken en hoe we ze verbinden met onze containers.
‫We kunnen de --network optie gebruiken wanneer we een container maken.
‫Dus, docker container run naam nieuwe
‫nginx, en dan netwerk, en dan mijn app net,
‫en dan de nginx-afbeelding.
‫Als we een docker-netwerk zouden inspecteren op het my app-netwerk, zou je zien dat de nieuwe Nginx die ik zojuist heb gemaakt zich nu
‫op dat netwerk bevindt. Het heeft een nieuw IP-adres van 172. 18.
‫Het is dus het volgende subnet in de lijst.
‫Maar we hoeven eigenlijk geen nieuwe containers te starten, want net als in
‫de echte wereld, waar je Ethernet-apparaten kunt los- en weer aansluiten en opnieuw kunt verbinden met draadloze netwerken, kun je
‫hetzelfde doen met bestaande netwerken en bestaande containers.
‫Hiervoor gebruiken we de docker-netwerkverbindings- en verbindingsopties en u kunt --help gebruiken om alle opties
‫daar voor het Docker-netwerk te zien.
‫In dit geval willen we een docker-netwerk doen, en we willen de bestaande container nemen die we eerst
‫hebben gemaakt en deze verbinden met ons nieuwe netwerk.
‫Ik ga het nieuwe my-app-netwerk kiezen en vervolgens de originele webhost die we hebben gemaakt.
‫Als ik nu een docker-container inspecteer van mijn oorspronkelijke webhost, zul je zien dat deze zich nu op
‫twee netwerken bevindt. Het originele bridge-netwerk, en ik
‫deed in feite het equivalent van een nieuwe Ethernet-interface op een ander netwerk, met een ander
‫IP-adres dat werd ontvangen van de DHCP.
‫Dus we zitten nu op het 17-netwerk in het 18-netwerk.
‫Als ik dat zou willen loskoppelen, zou ik hetzelfde kunnen doen door gewoon de verbinding te verbreken. Als ik dan terugging en opnieuw een inspectie deed,
‫zul je zien dat het nu terug is met alleen dat ene netwerk.
‫Zoals je kunt zien, zijn er veel interessante opties voor Docker-netwerken en echt het einddoel hier, en een ding waar ik graag over
‫opschep met containers, is dat als je alle applicaties op een enkele server uitvoert, in dit geval , je
‫bent in staat om ze echt te beschermen. Omdat we in de fysieke wereld
‫waar we virtuele machines en hosts in een netwerk maakten, de poorten en netwerken op onze applicatieservers
‫vaak overbelicht raakten.
‫In deze gevallen, als u uw app-containers zou nemen en ze allemaal in
‫één netwerk samen in een virtueel netwerk zou hebben, stelt u alleen de poorten op uw host
‫bloot waarmee u specifiek de -p gebruikt. En al het andere is een beetje veiliger met die beschermde firewall
‫in hun virtuele netwerk.
‫Later, wanneer we in Docker Swarm komen, gaan we leren over multi-host
‫netwerken en hoe dit nog beter wordt als we beginnen op te schalen en uit te schalen.
‫Om het samen te vatten, hebben we zojuist een aantal opdrachten behandeld voor het beheren van Docker-netwerken.
‫We speelden wat met de commando's ls en inspect, creëerden een Docker-netwerk en gebruikten de standaarddriver
‫van bridge.
‫We hadden eigenlijk geen --driver nodig.
‫En als laatste hebben we de netwerkverbinding en de netwerkverbindingsopdrachten uitgeprobeerd voor het toevoegen en vervolgens verwijderen van een
‫NIC uit een draaiende container.