Gebruiksscenario's voor Docker-containers
Zoals we hebben geleerd, heeft Docker verschillende functies die we kunnen gebruiken. We gaan nu bekijken welke voordelen Docker te bieden heeft voor onze teams van ontwikkelaars en het operations-team. We bekijken ook enkele scenario's waarin Docker mogelijk niet de beste keuze is.
De volgende aspecten kunnen u helpen bij de beslissing of Docker de juiste oplossing is voor uw containerisatiestrategie.
Zoals eerder gezegd, zijn er een aantal uitdagingen waarmee ons team te maken krijgt bij het ontwikkelen en publiceren van onze portal voor het bijhouden van bestellingen. Ze zijn op zoek naar een oplossing voor:
- Beheer eenvoudig onze hostingomgevingen.
- Zorg voor continuïteit in de wijze waarop we onze software leveren.
- Zorg ervoor dat we efficiënt gebruikmaken van serverhardware.
- De draagbaarheid van onze toepassingen toestaan.
Docker is de oplossing die deze uitdagingen het hoofd kan bieden. Laten we eens gaan kijken naar alle voordelen die tot dusverre aan de orde zijn gekomen.
Voordelen van Docker
Onmiddellijk nadat we Docker in gebruik nemen, kunnen we profiteren van de voordelen van wat deze op het gebied van containerisatie te bieden heeft.
Efficiënt hardwaregebruik
Containers worden uitgevoerd zonder dat er van een virtuele machine (VM) gebruik wordt gemaakt. Zoals we hebben geleerd, is de container afhankelijk van de hostkernel voor functies zoals bestandssysteem, netwerkbeheer, procesplanning en geheugenbeheer.
In vergelijking met een VIRTUELE machine kunnen we zien dat voor een VIRTUELE machine een besturingssysteem is geïnstalleerd om kernelfuncties te bieden aan de actieve toepassingen in de VIRTUELE machine. Houd in gedachten dat voor het besturingssysteem van de VM schijfruimte, geheugen en CPU-tijd nodig is. Door de VM en de aanvullende besturingssysteemvereisten te verwijderen, zijn we in staat om resources vrij te maken op de host en deze te gebruiken om er andere containers op uit te voeren.
Isolatie van containers
Docker-containers bevatten beveiligingsfuncties waardoor meerdere containers gelijktijdig op dezelfde host kunnen worden uitgevoerd zonder dat ze elkaar hinderen. Zoals we hebben geleerd, kunnen we zowel gegevensopslag als netwerkconfiguratie configureren om onze containers te isoleren of gegevens en connectiviteit tussen specifieke containers te delen.
We gaan deze functie vergelijken met het gebruik van VM's.
Laten we aannemen dat we een fysieke host hebben waarop twee VM's worden uitgevoerd. We hebben drie toepassingen die we geïsoleerd van elkaar willen uitvoeren. We besluiten om de eerste app te implementeren op VM1 en de tweede op VM2 om de twee apps van elkaar te scheiden. Als we er nu voor kiezen om de derde toepassing te installeren, moeten we nog een VM installeren om dit patroon voort te zetten.
Portabiliteit van toepassingen
Containers worden bijna overal uitgevoerd: desktops, fysieke servers, VM's en in de cloud. Dankzij deze runtimecompatibiliteit kunt u eenvoudig containertoepassingen verplaatsen tussen verschillende omgevingen.
Omdat containers lichtgewicht zijn, hebben ze geen last van trage opstart- of afsluittijden zoals VM's. Dit aspect maakt het opnieuw implementeren en andere implementatiescenario's, zoals omhoog of omlaag schalen, soepel en snel.
Toepassingen leveren
Met Docker wordt de containerinstallatiekopie de eenheid die we gebruiken om toepassingen te distribueren. Dit concept zorgt ervoor dat we een gestandaardiseerde containerindeling hebben die zowel onze ontwikkelaars- als operationele teams gebruiken. Onze ontwikkelaars kunnen zich richten op het ontwikkelen van software en het operations-team kan zich richten op het implementeren en beheren van software.
We kunnen de container in elke stap van ons implementatiesysteem gebruiken zodra het ontwikkelteam een build van onze toepassing heeft vrijgegeven. Containers zijn ideale kandidaten voor continue integratie en versnellen de tijd van build naar productie.
Hostingomgevingen beheren
We configureren onze toepassingsomgeving intern voor de container. Deze insluiting biedt het operations-team de flexibiliteit om de toepassingsomgeving veel strakker te beheren. Ons team kan besturingssysteemupdates bewaken, beveiligingspatches eenmaal toepassen en de bijgewerkte container indien nodig implementeren.
Het team kan ook beheren welke toepassingen moeten worden geïnstalleerd, bijgewerkt en verwijderd zonder dat dit van invloed is op andere containers. Elke container is geïsoleerd en de resourcelimieten worden onafhankelijk van andere containers toegewezen.
Cloudimplementaties
Docker-containers zijn de standaardcontainerarchitectuur die door azure-containerisatieservices wordt gebruikt, en veel andere cloudplatforms ondersteunen ze ook.
U kunt bijvoorbeeld Docker-containers implementeren in Azure Container Instances, Azure-app Service en Azure Kubernetes Services. Elk van deze opties biedt u verschillende functies en mogelijkheden.
Door Azure Container Instances te gebruiken, kunt u zich bijvoorbeeld richten op het ontwerpen en bouwen van uw toepassingen zonder dat u te maken krijgt met de overhead die bij het beheer van de infrastructuur komt kijken. Wanneer u veel containers indelen hebt, kunt u met de Azure Kubernetes-service eenvoudig grootschalige containerimplementaties implementeren en beheren.
Wanneer u Docker-containers niet moet gebruiken
Docker-containers bieden veel voordelen, maar houd er rekening mee dat containers mogelijk niet aan al uw vereisten voldoen. Er zijn enkele aspecten waarop u moet letten.
Beveiliging en virtualisatie
Containers bieden een isolatieniveau. Containers delen echter één enkele hostbesturingssysteemkernel die als aanvalspunt voor bedreigingen kan dienen.
Windows-hosts bieden een extra isolatiemodel waarop een speciaal gebouwde VM kan worden gebruikt om de container op hypervisorniveau te isoleren. Deze modus wordt de Hyper-V-isolatiemodus genoemd en voegt een andere beveiligingslaag toe tussen containers en containerhost.
We moeten ook rekening houden met aspecten zoals opslag en netwerken om ervoor te zorgen dat we rekening houden met alle beveiligingsaspecten. Alle containers maken bijvoorbeeld standaard gebruik van het brugnetwerk en hebben toegang tot elkaar via IP-adres.
Niet alle toepassingen profiteren van containerisatie. In dergelijke gevallen kan het zinvoler zijn om een VIRTUELE machine te gebruiken.
Servicecontrole
Het beheren van de toepassingen en containers is ingewikkelder dan traditionele VM-implementaties. Er zijn logboekfuncties die ons vertellen over de status van de actieve containers, maar meer gedetailleerde informatie over services in de container is moeilijker te bewaken.
Docker biedt ons bijvoorbeeld de opdracht docker stats
. Met deze opdracht wordt informatie geretourneerd voor de container, zoals percentage CPU-gebruik, percentage geheugengebruik, I/O geschreven naar schijf, verzonden en ontvangen netwerkgegevens en proces-id's toegewezen. Deze informatie is nuttig als een onmiddellijke gegevensstroom; Er wordt echter geen aggregatie uitgevoerd, omdat de gegevens niet worden opgeslagen. We moeten software van derden installeren voor zinvolle gegevensopname gedurende een bepaalde periode.