6 praktische tips voor het gebruik van containers

Laten we het hebben over enkele van de praktische tips die u moet volgen wanneer u containers gebruikt.


Containerisatie wordt op grote schaal door verschillende organisaties gebruikt om applicaties in een container te implementeren. Deze containers zijn populair omdat ze erg licht van gewicht zijn. Om optimaal gebruik te maken van containers, u moet enkele praktische tips volgen terwijl u ermee werkt.

Gebruik stabiele basisafbeelding

Dankzij Docker is het maken van container-images nog nooit zo eenvoudig geweest.

Specificeer uw basisimage, voeg uw wijzigingen toe en bouw uw container. Hoewel dit geweldig is om aan de slag te gaan, kan het gebruik van de standaardbasisafbeeldingen leiden tot grote afbeeldingen vol beveiligingsproblemen. Vermijd ook het gebruik van de “Nieuwste” tag docker-afbeelding omdat er een grote kans is dat er een bug in aanwezig is.

Debian of Ubuntu worden door de meeste Docker-images gebruikt als basisimage. Ze zijn erg handig in termen van compatibiliteit en gemakkelijke on-boarding, maar deze basisafbeeldingen kunnen honderden megabytes extra overhead aan uw container toevoegen.

Zo zijn eenvoudige Node.js en Go, ‘hallo wereld’-apps ongeveer 700 megabytes. Uw applicatie is waarschijnlijk slechts enkele megabytes groot. Al deze extra overhead is dus verspilde ruimte en een geweldige schuilplaats voor beveiligingsproblemen en bugs.

Als uw programmeertaal of -stapel geen optie heeft voor een kleine basisafbeelding, kunt u uw container bouwen met raw Alpine Linux als uitgangspunt. Dit geeft u ook volledige controle over wat er in uw containers terechtkomt.

Houd containerafbeeldingen kleiner

Het gebruik van kleinere basisafbeeldingen is waarschijnlijk de gemakkelijkste manier om uw containergrootte te verkleinen.

De kans is groot dat uw taal of stapel die u gebruikt een officiële afbeelding oplevert die veel kleiner is dan de standaardafbeelding. Laten we bijvoorbeeld eens kijken naar de container van Node.js. Gaande van het standaardknooppunt: van nieuwste naar knooppunt: 14-alpine verkleint onze basisbeeldgrootte met bijna tien keer.

nodejs nieuwste tag - geekflare

vs. ….

nodejs alpine tag - geekflare

In het nieuwe Docker-bestand begint de container met het knooppunt: alpine-afbeelding, maakt een map voor de code, installeert afhankelijkheden met NPM en start ten slotte de Node.js-server. Met deze update is de resulterende container bijna tien keer kleiner.

Door het bouwpatroon maak je de container nog lichter. Bij interpretatieve talen wordt de broncode naar een tolk gestuurd en vervolgens direct uitgevoerd. Maar met een gecompileerde taal wordt de broncode vooraf omgezet in gecompileerde code.

Bij compilatietalen vereist de compilatiestap nu vaak tools die niet nodig zijn om de code uit te voeren. Dit betekent dus dat u deze tools volledig uit de uiteindelijke container kunt verwijderen. Om dit te doen, kunt u het bouwerpatroon gebruiken. De eerste container bouwt de code en vervolgens wordt de gecompileerde code verpakt in de laatste container zonder alle compilers en tools die nodig zijn om de gecompileerde code te maken.

Het gebruik van kleine basisafbeeldingen en het bouwpatroon zijn geweldige manieren om veel kleinere containers te maken zonder veel werk.

Tag uw containerafbeeldingen

Docker-tagging is een uitzonderlijk krachtig hulpmiddel voor ons als het gaat om het beheer van onze afbeeldingen. Het helpt bij het beheren van verschillende versies van een docker-afbeelding. Hieronder ziet u een voorbeeld van het bouwen van een docker-afbeelding met tagnaam v1.0.1

docker build -t geekflare / ubuntu: v1.0.1

Nu worden er twee soorten tags gebruikt: Stal tags Uniek tags.

Gebruik stabiele tags om de basisafbeelding van de container te behouden. Gebruik deze tags niet voor implementatiecontainers omdat deze tags regelmatig updates ontvangen en dit kan leiden tot inconsistenties in de productieomgeving.

Gebruik unieke tags voor implementaties. Met behulp van unieke tags kunt u uw productiecluster eenvoudig naar vele knooppunten schalen. Het voorkomt inconsistenties en hosts trekken geen andere docker-image-versie.

Ook is het een goede gewoonte om de geïmplementeerde afbeeldingstags te vergrendelen door write-enable in te stellen op false. Dit helpt bij het niet per ongeluk verwijderen van de geïmplementeerde afbeelding uit het register.

Containerbeveiliging

Hieronder staan ​​de fundamentele punten om ervoor te zorgen dat de container veilig is.

  • Controleer de authenticiteit van alle software die u in uw container installeert
  • Gebruik ondertekende docker-afbeeldingen of afbeeldingen met een geldige checksum.
  • Zorg ervoor dat de URL HTTPS gebruikt als u een repository van derden gebruikt.
  • Voeg de juiste GPG-sleutels toe voordat u uw pakketbeheerder gebruikt om de pakketten bij te werken
  • Voer uw applicaties nooit uit als root. U moet altijd de gebruikersrichtlijn in de dockerfile gebruiken om ervoor te zorgen dat u de rechten van uw gebruiker laat vallen.
  • Voer SSH niet uit in uw container.
  • Maak het bestandssysteem alleen-lezen.
  • Gebruik naamruimten om uw cluster op te splitsen.

Docker-benchmark is geleverd door het Center for Internet Security (CIS) om de beveiliging van een docker-container te evalueren. Ze hebben een open source-script genaamd Docker Bench voor beveiliging, die u kunt uitvoeren om te controleren hoe veilig een docker-container is.

Eén applicatie per container

Virtuele machines zijn redelijk goed in het parallel uitvoeren van meerdere dingen, maar als het op containers aankomt, moet u een enkele applicatie in één container uitvoeren. Als u bijvoorbeeld een MEAN-toepassing uitvoert in een containeromgeving, moet deze één container hebben voor MongoDB, één container voor Express.js, één container voor Angular en één container voor Node.js.

Zelfs containers kunnen meerdere applicaties parallel uitvoeren, maar dan kunt u profiteren van het containermodel. Hieronder vindt u een correcte en verkeerde weergave van actieve applicaties in een container.

enkele app één container - geekflare

De containers zijn ontworpen om een ​​vergelijkbare levenscyclus te hebben als de applicatie waarop ze worden uitgevoerd. Wanneer de container start, start de applicatie. Wanneer een container stopt, stopt de applicatie ook.

Voer stateless containers uit

Containers zijn in wezen ontworpen om staatloos te zijn. In dit geval worden de persistente gegevens die informatie bevatten over de toestand van de container buiten de container opgeslagen. Bestanden kunnen worden opgeslagen in een objectopslag zoals cloudopslag, om gebruikerssessiegegevens op te slaan, kunt u een database met lage latentie gebruiken, zoals Redis, en u kunt ook een externe schijf koppelen voor opslag op blokniveau.

Door de opslag buiten de container te houden, kunt u eenvoudig een container afsluiten of vernietigen zonder bang te hoeven zijn dat u gegevens verliest.

Als u staatloze containers gebruikt, is het zeer eenvoudig te migreren of te schalen volgens zakelijke behoeften.

Conclusie

Het bovenstaande zijn enkele van de belangrijkste praktijken die u moet volgen tijdens het werken met containers als u een Docker-productieomgeving bouwt en bekijk hoe u deze kunt beveiligen.

TAGS:

  • Docker

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map