Docker Maakt verpakte toepassingen Containers genoemd. Elke container biedt een geïsoleerde omgeving vergelijkbaar met een virtuele machine (Vm). In tegenstelling tot VMS, Docker Containers Voer geen volledig besturingssysteem uit . Ze delen de kernel van uw gastheer en virtualiseren op een softwareliveau.
Docker Basics
Docker is een standaard tool geworden voor softwareontwikkelaars en systeembeheerders. Het is een nette manier om snel applicaties te lanceren zonder de rest van uw systeem te impact. Je kunt een nieuwe service met een single draaien
Docker Run
opdracht.
Containers inkapselen alles wat nodig is om een applicatie uit te voeren, uit OS-pakketafhankelijkheden naar uw eigen broncode. U definieert de creatiestappen van een container als instructies in een
Dockerfile
. Docker gebruikt de Dockerfile om een te bouwen
afbeelding
.
Afbeeldingen definiëren de beschikbare software in containers. Dit is losjes gelijk aan het starten van een VM met een besturingssysteem ISO. Als u een afbeelding maakt, kan elke Docker-gebruiker uw app met lanceren
Docker Run
.
Hoe werkt Docker?
Containers maken gebruik van besturingssysteem Kernel-functies om gedeeltelijk gevirtualiseerde omgevingen te bieden. Het is mogelijk om containers helemaal opnieuw te maken met opdrachten zoals
chroot
. Dit start een proces met een opgegeven root-map in plaats van de systeemwortel. Maar het gebruik van de kernel-functies direct, onveilig, onzeker en foutgevoelig.
Docker is een complete oplossing voor de productie, distributie en het gebruik van containers. Moderne docker-releases bestaan uit verschillende onafhankelijke componenten . Ten eerste is er de Docker Cli , waarmee u in uw terminal communiceert. De CLI verzendt opdrachten naar een Docker daemon . Dit kan lokaal of op een externe host . De daemon is verantwoordelijk voor het beheren van containers en de afbeeldingen waaruit ze zijn gemaakt.
De laatste component wordt de containerruntime . De runtime roept kernel-functies aan om containers daadwerkelijk te lanceren. Docker is compatibel met rundament die zich aan de OCI-specificatie. Deze open standaard maakt interoperabiliteit mogelijk tussen verschillende containeringshulpmiddelen.
Je hoeft je geen zorgen te maken over de innerlijke werking van Docker als je voor het eerst aan de slag bent. Installeren
docker
Op uw systeem geeft u alles wat u nodig hebt om containers te bouwen en uit te voeren.
Waarom gebruiken zoveel mensen Docker?
Containers zijn zo populair geworden omdat ze veel gemeenschappelijke uitdagingen in softwareontwikkeling oplossen. Het vermogen om een keer op te zetten en overal te rennen Vermindert de kloof tussen Uw ontwikkelingsomgeving en uw productieservers.
Het gebruik van containers geeft je vertrouwen dat elke omgeving identiek is. Als je een nieuw teamlid hebt, hoeft ze alleen maar
Docker Run
om hun eigen ontwikkelingsinstantie op te zetten. Wanneer u uw service start, kunt u uw Docker-afbeelding gebruiken om te implementeren op de productie. De
liveomgeving
Past precies overeen met uw lokale exemplaar, vermijden "het werkt op mijn machine" -scenario's.
Docker is handiger dan een volledig-geblazen virtuele machine. VMS zijn hulpmiddelen voor algemene doeleinden die zijn ontworpen om elke mogelijke werklast te ondersteunen. Daarentegen zijn containers lichtgewicht, zelfvoorzienend, en beter geschikt voor weggeleisende gevallen. Aangezien Docker de kernel van de gastheer deelt, hebben containers een verwaarloosbare impact op de systeemprestaties. Containerlancetijd is bijna onmiddellijk, omdat u alleen maar uitgangsprocessen bent, geen volledig besturingssysteem.
Beginnen
Docker is beschikbaar op alle populaire Linux-distributies. Het draait ook op Windows en MacOS. Volg de Docker-installatie-instructies voor uw platform om het op te nemen.
U kunt controleren of uw installatie werkt door een eenvoudige container te starten:
Docker Run Hello-World
Dit start een nieuwe container met de basis
Hallo Wereld
afbeelding. Het beeld geeft wat uitgang uit die uitleggen hoe hij Docker moet gebruiken. De container verlaat en laat u terugvallen naar uw terminal.
Afbeeldingen maken
Zodra je hebt uitgevoerd
Hallo Wereld
, je bent klaar om je eigen Docker-afbeeldingen te maken. Een Dockerfile beschrijft hoe u uw service kunt uitvoeren door
Vereiste software installeren
en kopiëren in bestanden. Hier is een eenvoudig voorbeeld met behulp van de Apache-webserver:
Van HTTPD: Laatste RUN ECHO "LOADMODULE KOPERS_Module Modules / MOD_HEARERS.SO" & GT; & GT; /Usr/local/apache2/conf/httpd.conf Kopieer .htaccess /var/www/html/.htaccess Kopieer index.html /var/www/html/index.html Kopieer CSS / / VAR / WWW / HTML / CSS
De
VAN
lijn definieert het basisafbeelding. In dit geval beginnen we vanaf het officiële Apache-beeld. Docker past de resterende instructies in uw Dockerfile bovenop het basisafbeelding toe.
De
LOOP
Stage loopt een opdracht binnen de container. Dit kan elk opdracht beschikbaar zijn in de omgeving van de container. We gaan het
headers
Apache-module, die kan worden gebruikt door de
.htaccess
Bestand om routeringsregels in te stellen.
De definitieve regels kopiëren de HTML- en CSS-bestanden in uw werkdirectory in de containerafbeelding. Uw afbeelding bevat nu alles wat u nodig hebt om uw website uit te voeren.
Nu kunt u de afbeelding bouwen:
Docker Build -t My-website: v1.
Docker gebruikt uw Dockerfile om het beeld te construeren. U ziet de uitvoer in uw terminal omdat Docker elk van uw instructies uitvoert.
De
-t
in het commando
Tags uw afbeelding
met een bepaalde naam (
My-website: v1
). Dit maakt het gemakkelijker om in de toekomst te verwijzen. Tags hebben twee componenten, gescheiden door een dikke darm. Het eerste deel stelt de beeldnaam in, terwijl de tweede meestal de versie aanduidt. Als u de dubbele punt weglaat, wordt Docker standaard
om te gebruiken
laatste
als de tag-versie.
De
.
Aan het einde van de opdracht vertelt Docker om de Dockerfile in uw lokale werkdirectory te gebruiken. Dit ook
Stelt de build context in
, zodat u bestanden en mappen in uw werkdirectory kunt gebruiken
KOPIËREN
Instructies in uw Dockerfile.
Zodra u uw afbeelding hebt gemaakt, kunt u een container starten met
Docker Run
:
Docker Run -D -P 8080: 80 My-website: V1
We gebruiken een paar extra vlaggen met
Docker Run
hier. De
-NS
De vlag maakt de Docker CLI los van de container, waardoor het op de achtergrond kan worden uitgevoerd. Er is een poortmapping gedefinieerd met
-P
, dus poort 8080 op uw hostkaarten naar poort 80 in de container. U moet uw webpagina zien als u bezoekt
localhost: 8080
in uw browser.
Docker-afbeeldingen worden gevormd uit lagen. Elke instructie in uw Dockerfile creëert een nieuwe laag. U kunt geavanceerde bouwfuncties gebruiken voor referentie meerdere basisafbeeldingen , het weggooien van intermediaire lagen uit eerdere afbeeldingen.
Beeldregisters
Zodra u een afbeelding hebt, kunt u het naar een register duwen. Registers Geef gecentraliseerde opslag zodat u containers met anderen kunt delen. Het standaardregister is Docker Hub .
Wanneer u een opdracht uitvoert die verwijst naar een afbeelding, controleert Docker eerst of deze lokaal beschikbaar is. Als dat niet het geval is, zal het proberen om het vanuit Docker Hub te trekken. Je kunt handmatig afbeeldingen met de
Docker Trek
opdracht:
Docker Trek HTTPD: Laatste
Als u een afbeelding wilt publiceren, maakt u een
Docker Hub
rekening. Loop
Docker Login
en voer uw gebruikersnaam en wachtwoord in.
Tag vervolgens uw afbeelding met uw Docker Hub-gebruikersnaam:
Docker Tag My-Image: Nieuwste Docker-Hub-gebruikersnaam / My-Image: Laatste
Nu kunt u uw afbeelding drukken:
Docker Push Docker-Hub-Gebruikersnaam / My-Image: Laatste
Andere gebruikers kunnen uw beeld trekken en containers beginnen.
Jij kan Voer je eigen register uit Als u privé-beeldopslag nodig heeft. Verschillende diensten van derden ook bied Docker-registers als alternatieven voor havennaaf.
Beheer van uw containers
De Docker CLI heeft verschillende opdrachten om u uw lopende containers te laten beheren. Hier zijn enkele van de meest bruikbare om te weten:
Containers met containers
Docker PS
Toont u al uw lopende containers. Het toevoegen van de
-een
De vlag toont ook gestopte containers.
Containers stoppen en starten
Om een container te stoppen, ren
Docker Stop My-Container
. Vervangen
mijncontainer
met de naam of ID van de container. U kunt deze informatie krijgen van de
ps
opdracht. Een gestopte container wordt opnieuw opgestart
Docker Start My-Container
.
Containers worden meestal uitgevoerd zolang hun hoofdproces in leven blijft.
Start beleid opnieuw
Bedien wat er gebeurt wanneer een container stopt of uw host opnieuw starten. Doorgang
--Estart altijd
tot
Docker Run
om een container opnieuw te starten onmiddellijk nadat het stopt.
Een schaal krijgen
Jij kan
voer een opdracht uit
een container met behulp van
Docker Exec My-Container My-Command
. Dit is handig wanneer u handmatig een uitvoerbaar bestand wilt oproepen dat gescheiden is aan het hoofdproces van de container.
Voeg de
-het
vlag als u interactieve toegang nodig heeft. Hiermee kunt u in een schaal vallen door te rennen
Docker Exec -Ihit My-Container Sh
.
Monitoring logs
Docker verzamelt automatisch de uitgang die is uitgezonden op de standaardinvoer- en uitvoerstromen van een container. De
Docker Logt My-Container
opdracht toont de logboeken van een container in uw terminal. De
--volgen
Flag stelt een continue stroom op zodat u logs in realtime kunt bekijken.
Bronnen opruimen
Oude containers en afbeeldingen kunnen snel op uw systeem stapelen. Gebruik maken van
Docker RM My-Container
om een container te verwijderen door zijn ID of naam.
Het commando voor afbeeldingen is
Docker RMI My-Image: Laatste
. Geef de ID of de naam van het beeld of de naam van de volledige tag door. Als u een tag opgeeft, wordt de afbeelding niet verwijderd totdat deze niet meer tags heeft toegewezen. Anders wordt de gegeven tag verwijderd, maar de andere tags van het beeld blijven bruikbaar.
Bulk clean-ups zijn mogelijk met behulp van de
docker snoei
opdracht
. Dit geeft u een eenvoudige manier om alle gestopte containers en overtollige afbeeldingen te verwijderen.
Grafisch beheer
Als de terminal niet jouw ding is, kun je hulpmiddelen van derden gebruiken om Stel een grafische interface in voor Docker . Web Dashboards Laat u snel controleren en uw installatie beheren. Ze helpen u ook bij het nemen van afstandsbediening van uw containers.
Aanhoudende gegevensopslag
Docker-containers zijn standaard ephemeral. Wijzigingen die zijn aangebracht in het bestandssysteem van een container zullen niet aanhouden nadat de container stopt. Het is niet veilig voor
Voer elke vorm van bestandsopslagsysteem uit
In een container begon met een basis
Docker Run
opdracht.
Er zijn een paar verschillende benaderingen Persistente gegevens beheren . De meest gebruikelijke is om een dockervolume te gebruiken. Volumes zijn opslageenheden die zijn gemonteerd in containerbestandssystemen. Alle gegevens in een volume blijven intact nadat de gekoppelde container stopt, zodat u in de toekomst een andere container kunt verbinden.
Beveiliging onderhouden
Dockerized Workloads kunnen veiliger zijn dan hun naakte metalen tegenhangers, omdat Docker een scheiding biedt tussen het besturingssysteem en uw diensten. Niettemin is Docker een potentiële beveiligingsprobleem, zoals het
normaal werkt als
wortel
en kan worden uitgebuit om kwaadwillende software uit te voeren.
Als u alleen docker als ontwikkelingstool uitvoert, is de standaardinstallatie over het algemeen veilig om te gebruiken. Productieservers en -machines met een netwerk-blootgestelde daemon-socket moeten worden verhard voordat u live gaat.
Audit Uw Docker-installatie Om potentiële beveiligingsproblemen te identificeren. Er zijn Geautomatiseerde hulpmiddelen beschikbaar die kunnen helpen bij het vinden zwakheden en suggereren resoluties. Je kan ook scan afzonderlijke container afbeeldingen voor problemen die zouden kunnen worden benut van binnenuit.
Werken met meerdere containers
De
docker
commando werkt alleen met één container tegelijk. Je zult vaak wilt containers te gebruiken in totaal.
Docker Compose
is een tool waarmee u uw containers definiëren declaratief in een YAML bestand. U kunt ze beginnen allemaal met één enkel commando.
Dit is handig wanneer uw project is afhankelijk van andere diensten, zoals een web backend die is gebaseerd op een database server. U kunt beide containers definiëren in uw
havenarbeider-compose.yml
en profiteren van gestroomlijnd beheer met
automatische netwerken
.
Hier is een eenvoudig
havenarbeider-compose.yml
het dossier:
versie: "3"
Diensten:
app:
image: app-server: latest
poorten:
- 8000: 80
database:
image: de database-server: latest
volumes:
- de database-gegevens: / data
volumes:
databank-gegevens:
Dit definieert twee containers (
app
en
database
). Een volume gecreëerd voor de database. Dit wordt bevestigd aan
/gegevens
in de houder. De haven van de app server 80 wordt ontmaskerd als 8000 op de host. Loop
havenarbeider-componeren up -d
begint te draaien beide diensten, met inbegrip van het netwerk en volume.
Het gebruik van Docker Compose kunt u
write herbruikbare
container definities die je kunt delen met anderen. Je zou het plegen van een
havenarbeider-compose.yml
in uw versie controle in plaats van ontwikkelaars memoriseren
Docker Run
opdrachten.
Er zijn andere manieren om het uitvoeren van meerdere containers, ook. Docker App is een nieuwe oplossing die een ander niveau van abstractie biedt. Elders in het ecosysteem, Podman is een Docker alternatief waarmee je “pods” van containers binnen uw terminal te creëren.
container Orchestration
Docker verloopt niet normaal zoals het hoort in de productie. Het is nu meer gebruikelijk om een orkestratie platform te gebruiken, zoals Kubernetes of Docker Swarm modus. Deze tools zijn ontworpen voor het hanteren meerdere container replica, die verbetert schaalbaarheid en betrouwbaarheid.
Docker slechts één component in de bredere containerisering beweging. orchestrators
gebruik van dezelfde
container runtime technologieën om een omgeving die een betere pasvorm voor de productie. Meerdere container exemplaren
zorgt voor een rollende updates
evenals verdeling over machines, het maken van uw implementatie beter bestand zijn tegen verandering en uitval. de reguliere
docker
CLI is gericht op één gastheer en werkt met afzonderlijke houders.
Een krachtig platform voor Containers
Docker geeft je alles wat je nodig hebt om te werken met containers. Het is uitgegroeid tot een belangrijk instrument voor de ontwikkeling van software en systeembeheer. De belangrijkste voordelen zijn toegenomen isolatie en draagbaarheid voor individuele diensten.
Kennismaking met Docker vereist een goed begrip van de basis-container en het beeld concepten. U kunt passen deze aan uw gespecialiseerde foto's en omgevingen die je workloads containerize creëren.