Anders dan virtuele machines, gebruiken containers geen eigen besturingssysteem. Toch zijn er geen gedeelde afhankelijkheden of incompatibiliteiten; iedere container is geïsoleerd van de andere. Containers vormen een zeer efficiënte manier om server-instances te gebruiken; die instances kunnen namelijk vele keren meer containers bevatten dan er virtuele machines in passen.

Als ontwikkelaar moet je schipperen tussen mogelijkheden, tijd en eisen van de business. Bekijk de special over Development in de Cloud en geef je mening!

Docker zorgt voor een automatische deployment van applicaties binnen software containers. Het is een open-source project en levert een extra abstractie- en automatiseringslaag onder Linux. Het maakt gebruik van bestaande mogelijkheden van de Linux-kern als cgroups en kernel namespaces. Hoewel Docker vrij nieuw is (de eerste versie dateert van maart 2014) is het erg populair en wordt het breed ondersteund.

Containers vormen niet alleen een efficiënte manier om server-instances te gebruiken, ze functioneren ook als een bouwsteen die je voor overall gedeployed kunt gebruiken, onafhankelijk van software, besturingssysteem- of hardware-configuraties. Ze omvatten alle noodzakelijke applicatie-bestanden en software-afhankelijkheden. Binnen AWS kun je ze voor een instance vastleggen. Je kunt één instance optimaliseren of groepen van instances binnen ECS.

Beheren en plannen van containers

EC2 Container Service (ECS) zorgt ervoor dat je makkelijk met Docker-applicaties over een cluster van Amazon EC2 instances kunt werken en dat je ze makkelijk kunt beheren. Applicaties die lokaal als containers zijn verpakt, zullen op dezelfde manier depolyen en werken als wanneer ze managed zijn door Amazon ECS. Met ECS kun je ook Docker-enabled applicaties roosteren, gebaseerd op resource-behoeften en availability-eisen. Je kunt met één enkele container beginnen en uitbreiden naar duizenden containers verspreid over honderden instances zonder extra complexiteit. Je kunt docker containers maken of wissen, en gedetailleerde clusterinformatie bekijken.

Ook is het mogelijk je eigen ECS container planner te integreren in een bestaand software delivery proces. Iedere EC2 instance in een cluster dat wordt beheerd in Amazon ECS heeft een Docker daemon, dus iedere applicatie die lokaal als container verpakt is, zal deployen en werken op Amazon ECS zonder dat de configuratie gewijzigd hoeft te worden. Een applicatie zal op dezelfde manier werken, of dat nu in een test- of in een productieomgeving is. Je kunt dezelfde container bijvoorbeeld laten draaien op een Ubuntu laptop en een Red Hat Enterprise Linux productieserver, maar je kunt ook twee containers gebruiken op dezelfde Amazon EC2 instance met verschillende library-versies.

Taken en API's

Met behulp van een declaratief JSON-template 'Task Definition' kun je taken voor ECS definiëren. Het aantal taken is onbeperkt en Task Definition-documenten laten versiecontrole voor applicatie-specificaties toe. Met de ECS API's kun je clusters wissen en creëren, taken registreren en deregistreren, Docker containers lanceren en beëindigen. Ze leveren ook gedetailleerde informatie over de staat van je cluster en zijn instances. Daarnaast kun je AWS CloudFormation gebruiken om in Amazon ECS clusters te voorzien, Task Definitions vast te leggen, en om containers te roosteren.

Planning en deployment

ECS heeft planners die containers overal in de clusters kunnen plaatsen, gebaseerd op resource-behoeften en beschikbaarheidseisen. De Amazon ECS Service planner zal daarnaast automatisch niet goed werkende containers herstellen om ervoor te zorgen dat het vereiste aantal containers de applicatie ondersteunt. De service planner is geïntegreerd in Elastic Load Balancing (ELB). Natuurlijk is het daarnaast belangrijk dat je containers makkelijk naar nieuwere versies kunt updaten.

ECS CLI is een onderdeel van ECS waarmee lokale deployment gemakkelijker wordt, alsmede het opzetten van Amazon ECS cluster en de bijbehorende resources (bijvoorbeeld een EC2 instance). ECS CLI ondersteunt Docker Compose, een open-source tool om multi-container-applicaties te definiëren en op te starten. Uiteraard zijn er ook mogelijkheden voor het monitoren en loggen. Je kunt taken monitoren die gegroepeerd worden volgens de taakdefinitie, service, of cluster. Het kan ook waarschuwingen versturen wanneer containers of clusters vergroot of verkleind moeten worden.

Docker Hub

Je kunt Amazon EC2 Container Service met iedere eigen of vreemde Docker registry gebruiken of met Docker Hub, een gehost Docker beeld repository. Je hoeft alleen maar de repository in de taak definitie te noemen en Amazon ECS zal de betreffende beelden voor de applicaties ophalen. Met dit alles heb je een stevig platform voor je applicaties dat je makkelijk kunt beheren.

Probeer het zelf en maak gratis een account aan op AWS