Het Pakket van Uw Applicatie-Infrastructuur met de Docker

0
51

De Docker is een manier van verpakkingen en alle vereiste afhankelijkheden en configuratie in een enkele afbeelding. In wezen, zo maakt u van uw server configuratie in iets dat kan worden beheerd met behulp van git en gesynchroniseerd op elke machine.

Wat Is Docker, en Waarom Is Het Nuttig?

Docker maakt het veel gemakkelijker om het beheer van uw productie server configuratie. Eerder dan het opzetten van servers handmatig, kunt u het automatiseren van het hele proces om te worden uitgevoerd wanneer u uw container beeld.

Dit beeld zal hetzelfde zijn voor iedereen in uw team, dus je zult in staat zijn om onmiddellijk uitvoeren van uw app met alle benodigde afhankelijkheden beheren voor u. Dit lost ook de klassieke “het werkt niet op mijn computer” probleem, omdat Docker beelden zal lopen overal hetzelfde.

Dit beeld kan ook worden gemakkelijk verspreid en liep op een vloot van meer servers op een zeer kleine invloed op de prestaties. Omdat de Docker is niet een virtuele machine, je hebt niet te maken met de overhead van het runnen van een gast-besturingssysteem voor elke toepassing. Dit maakt ze goedkoper en heel schaalbaar.

Voor meer informatie over wat Docker heeft, en of je wel of niet moet gebruiken voor uw app, kunt u lezen in onze uitsplitsing van de vraag of het de moeite waard de hoofdpijn. Voor nu, zullen we aannemen dat u klaar bent om te beginnen, en duik in de technische details.

Maak een Dockerfile

De ingang-punt voor het bouwen van uw container is wel een Dockerfile. Maak een nieuw project directory naar het huis van uw bestanden, maak dan een nieuwe Dockerfile simpelweg genoemd Dockerfile zonder extensie:

raak Dockerfile

Dit bestand openen in uw favoriete tekstverwerker.

U waarschijnlijk niet wilt dat om te beginnen alles van de grond af, zodat u kunt vork een bestaande beeld van de Dokwerker Hub, zoals Ubuntu:

VAN ubuntu

Merk op dat zelfs als je dat doet, heb je te maken VANUIT het niets.

Tijdens het proces van het bouwen van Docker maakt een wijzigbaar “laag”, dat u kunt bouwen op de top van. U mag het kopiëren van bestanden en opdrachten uitvoeren als ze werden uitgevoerd op de machine, ook hoe je zou gaan over het opzetten van een server handmatig. Je doet alle van uw server setup in het bestand, in wezen het automatiseren van het proces dat u wilt gaan door als je ontslagen tot een lege Linux box en werden verteld aan te brengen in de productie. Dit kan een tijdrovend proces.

U kunt het uitvoeren van de meeste van deze commando ‘ s vanaf de commando-regel en stel de afbeelding handmatig omhoog. Wilt u een bash shell in een container, u kunt uitvoeren:

docker exec -het <container> /bin/bash

En sla de wijzigingen op met:

docker commit <container> <naam>

Echter, u mag dit alleen gebruiken voor het testen, en niet alle van uw actuele configuratie in een Dockerfile.

Dockerfile Opdrachten

We gaan door middel van de meest voorkomende commando ‘ s, en uitleg geven over hun gebruik van en de beste praktijken toe te passen. Voor meer uitgebreide referentie, kunt u de raadpleging van deze cheatsheet, of raadpleeg de “Beste Praktijken Voor het Schrijven van Dockerfiles” documenten invoer.

KOPIËREN

De KOPIE instructie is vrij eenvoudig: het helpt u bij het vullen van uw Docker beeld met de gegevens en configuratie.

KOPIEER <bron> <bestemming>

Bijvoorbeeld, als u een map in je project map met de naam /config/nginx/ die uw nginx.conf, sites-available/, en andere mappen, je kon kopieer die naar de standaard nginx config locatie in uw container:

KOPIËREN /config/nginx/ /etc/nginx/

Op deze manier kunt u al uw nginx config bestanden in hetzelfde project directory als alles anders, wat betekent dat ze zullen worden versiebeheer met git naast de rest van je code.

UITVOEREN

Het UITVOEREN van de instructie loopt een opdracht in uw container, en slaat de wijzigingen aan de container in het bestandssysteem.

Opdracht UITVOEREN

Iedere opdracht wordt een nieuwe “laag”, dus je zult waarschijnlijk willen doen ingewikkelde installatie binnen een installatie script. U zult een kopie van dit script over naar de afbeelding en vervolgens uitvoeren:

KOPIËREN install.sh .
UITVOEREN ./install.sh

In dit script, je bent vrij om te doen configureren die u nodig hebt, inclusief het installeren van programma ‘ s van apt.

Als u wilt bezuinigen op uw container te bouwen keer, kunt u een basis container met alle programma ‘ s die u nodig hebt geïnstalleerd, dan bouw je hoofd container VAN de container, hoewel je dan nodig hebt voor het beheren van afhankelijkheden en configuratie afzonderlijk.

CMD

CMD definieert het uitvoerbare bestand dat wordt gebruikt door uw container bij het opstarten als er niets anders is opgegeven. Dit is hoe u laadt de app zodra alles is afgerond.

CMD uitvoerbaar

Alleen de laatste CMD-opdracht ingaat. U kunt het overschrijven van de CMD opstarten met de volgende syntaxis:

docker run container-uitvoerbare [args]

Ingang-punt

Ingang-punt is een speciale versie van CMD waarmee de container te rennen als een uitvoerbaar bestand. Bijvoorbeeld, als de container wordt uitgevoerd nginx, kunt u opgeven nginx als de ingang-punt:

Ingang-punt nginx

En voer vervolgens de container op de commando-regel, waarbij argumenten als argumenten voor de ingang-punt:

docker run container [args]

BLOOT

Bloot markeert bepaalde container poorten open voor het uitvoeren van de host. Bijvoorbeeld, als u een web server, zult u waarschijnlijk wilt

BLOOT 80

Is dit niet bindend voor de poort automatisch, maar het informeert de Docker runtime dat de poort beschikbaar is. Om daadwerkelijk te binden, zult u wilt gebruik de vlag-P (hoofdletters) zonder argumenten, om te binden allen blootgesteld poorten.

Het Runnen Van Uw App

Eerste, moet u het bouwen van uw afbeelding:

docker bouwen -t-container .

U kunt uw container met docker uitvoeren:

docker run container

Echter, dit is niet al te handig op zijn eigen, op de stoepen en er is geen enkele manier om ermee om te gaan. Om dat te doen, heb je te binden poorten gebruik de vlag-p, zoals:

docker run-p 3000:80 nginx

Deze loopt van de nginx container en bindt de container HTTP uitgang naar de haven 3000 op de lokale machine.

Echter, met een standaard setup zult u opnieuw op de Docker container elke keer als u wijzigingen aanbrengt in uw app. Dit is uiteraard veel minder dan ideaal, maar gelukkig zijn er manieren om dit. Een manier is om de montage van een volume in uw container om een real-time koppeling tussen uw container en het host-OS (waar je aan het doen bent voor je ontwikkeling). Bijvoorbeeld, als uw HTML broncode is in de src/html/ map van uw Docker project directory, kan u hem mounten op /usr/local/nginx/html/ met:

docker run-p 80:80 -v ./src/html/:/usr/local/nginx/html:ro container

De “ro” vlag zorgt ervoor dat de verbinding is alleen-lezen, zodat het Koppelvenster container geen wijzigingen aanbrengen in het host OS. Dit kan ook worden gebruikt voor het toestaan van Docker containers om toegang te krijgen tot persistente gegevens die opgeslagen zijn op de host OS.