Deze tutorial concentreert zich op het bouwen van een aangepaste Docker-afbeelding op basis van: Ubuntu met Apache dienst geïnstalleerd. Het hele proces wordt geautomatiseerd met behulp van een Dockerbestand.
Docker-afbeeldingen kunnen automatisch worden opgebouwd uit tekstbestanden, genaamd Dockerbestanden. Een Docker-bestand bevat stapsgewijze geordende instructies of opdrachten die worden gebruikt om een Docker-image te maken en te configureren.
Kortom, een Docker-bestand bevat verschillende instructies om een specifieke container te bouwen en configureren op basis van uw vereisten. De volgende instructies worden het meest gebruikt, waarvan sommige verplicht zijn:
VAN
= Verplicht als eerste instructie in een Docker-bestand. Instrueert Docker om de basisafbeelding op te halen van waaruit u de nieuwe afbeelding bouwt. Gebruik een tag om de exacte afbeelding op te geven van waaruit u aan het bouwen bent:Vb: VANAF ubuntu: 20.04.
ONDERHOUDER
= Auteur van de build-afbeeldingLOOP
= Deze instructie kan op meerdere regels worden gebruikt en voert alle opdrachten uit nadat een Docker-afbeelding is gemaakt.CMD
= Voer een willekeurig commando uit wanneer de Docker-image wordt gestart. Gebruik slechts één CMD-instructie in een Dockerfile.INGANGSPUNT
= Hetzelfde als CMD maar gebruikt als het hoofdcommando voor de afbeelding.EXPOSEER
= Instrueert de container om te luisteren op netwerkpoorten tijdens het draaien. De containerpoorten zijn standaard niet bereikbaar vanaf de host.ENV
= Stel containeromgevingsvariabelen in.TOEVOEGEN
= Kopieer bronnen (bestanden, mappen of bestanden van URL's).1. Laten we eerst een soort van Dockerbestand repositories om bestanden in de toekomst opnieuw te gebruiken om andere afbeeldingen te maken. Maak ergens een lege map in /var
partitie waar we het bestand zullen maken met de instructies die zullen worden gebruikt om de nieuwe Docker-image te bouwen.
# mkdir -p /var/docker/ubuntu/apache. # raak /var/docker/ubuntu/apache/Dockerfile aan.
2. Begin vervolgens met het bewerken van het bestand met de volgende instructies:
# vi /var/docker/ubuntu/apache/Dockerfile.
Dokerbestandsfragment:
VAN ubuntu. ONDERHOUD uw_naam <[e-mail beveiligd]> VOER apt-get -y install apache2. RUN echo "Hallo Apache-server op Ubuntu Docker"> /var/www/html/index.html. BLOOT 80. CMD /usr/sbin/apache2ctl -D VOORGROND.
Laten we nu de bestandsinstructies doornemen:
De eerste regel vertelt ons dat we bouwen vanuit een Ubuntu afbeelding. Als er geen tag is ingediend, zeg dan: 14:10 bijvoorbeeld de laatste afbeelding van Docker-hub is gebruikt.
Op de tweede regel hebben we de. toegevoegd naam en e-mail van de beeldmaker. Volgende twee LOOP regels worden uitgevoerd in de container bij het bouwen van de afbeelding en worden geïnstalleerd Apache daemon en echo wat tekst in de standaard apache-webpagina.
De EXPOSEER lijn zal instrueren de Docker container om op poort te luisteren 80, maar de poort is niet beschikbaar voor buiten. De laatste regel geeft de container de opdracht om de Apache-service op de voorgrond uit te voeren nadat de container is gestart.
3. Het laatste dat we moeten doen, is beginnen met het maken van de afbeelding door de onderstaande opdracht uit te voeren, waarmee lokaal een nieuwe Docker-afbeelding met de naam wordt gemaakt ubuntu-apache
gebaseerd op de Dockerfile die eerder is gemaakt, zoals in dit voorbeeld:
# docker build -t ubuntu-apache /var/docker/ubuntu/apache/
4. Nadat de afbeelding is gemaakt door Docker, kunt u een lijst maken van alle beschikbare afbeeldingen en uw afbeelding identificeren door de volgende opdracht uit te voeren:
# docker-afbeeldingen.
5. Om de container continu (op de achtergrond) te laten draaien en toegang te krijgen tot de aan de container blootgestelde services (poorten) vanaf de host of een andere externe machine in uw LAN, voer de onderstaande opdracht uit op uw hostterminal: snel:
# docker run -d -p 81:80 ubuntu-apache.
Hier de -NS
optie voert de. uit ubuntu-apache
container op de achtergrond (als een daemon) en de -P
optie brengt de containerhaven in kaart 80 naar uw localhost-poort 81. Externe LAN-toegang tot Apache-service kan worden bereikt via poort 81 enkel en alleen.
Netstat-opdracht geeft u een idee over naar welke poorten de host luistert.
Nadat de container is gestart, kunt u ook run havenarbeider ps
commando om de status van de actieve container te bekijken.
6. De webpagina kan op uw host worden weergegeven vanaf de opdrachtregel met Krul hulpprogramma tegen het IP-adres van uw machine, localhost of docker net-interface op poort 81. Gebruik maken van IP-opdracht regel om de IP-adressen van de netwerkinterface weer te geven.
# ip addr [Lijst netwerkinterfaces] # curl ip-adres: 81 [System Docker IP-adres] # krul localhost: 81 [Localhost]
7. Om de containerwebpagina vanuit uw netwerk te bezoeken, opent u een browser op een externe locatie en gebruikt u het HTTP-protocol, het IP-adres van de machine waarop de container draait, gevolgd door poort 81 zoals hieronder afgebeeld: afbeelding.
http://ip-address: 81.
8. Om een idee te krijgen van welke processen in de container worden uitgevoerd, geeft u de volgende opdracht op:
# dokwerker ps. # docker top
9. Om het containerprobleem te stoppen havenarbeider stoppen
opdracht gevolgd door de container-ID of naam.
# havenarbeider stop# dokwerker ps.
10. Als u een beschrijvende naam aan de container wilt toewijzen, gebruikt u de --naam
optie zoals weergegeven in het onderstaande voorbeeld:
# docker run --name my-www -d -p 81:80 ubuntu-apache. # dokwerker ps.
Nu kunt u alleen verwijzen naar de container voor manipulatie (start, stop, top, statistieken, enz.) door de toegewezen naam te gebruiken.
# docker-statistieken mijn-www.
11. Op CentOS/RHEL je kunt een maken systemd configuratiebestand en beheer de container zoals u normaal doet voor elke andere lokale service.
Maak bijvoorbeeld een nieuw systemd-bestand met de naam, laten we zeggen, apache-docker.service
met behulp van de volgende opdracht:
# vi /etc/systemd/system/apache-docker.service.
apache-docker.service bestand uittreksel:
[Eenheid] Beschrijving=apache-container. Vereist=docker.service. Na=docker.service [Service] Opnieuw opstarten=altijd. ExecStart=/usr/bin/docker start -a mijn-www. ExecStop=/usr/bin/docker stop -t 2 mijn-www [Installeren] WantedBy=lokaal.doel.
12. Nadat u klaar bent met het bewerken van het bestand, sluit u het, laadt u de systemd-daemon opnieuw om de wijzigingen weer te geven en start u de container door de volgende opdrachten uit te voeren:
# systemctl daemon-reload. # systemctl start apache-docker.service. # systemctl-status apache-docker.service.
Dit was slechts een eenvoudig voorbeeld van wat u kunt doen met een eenvoudige Dockerbestand maar je kunt een aantal behoorlijk geavanceerde applicaties vooraf bouwen die je in slechts enkele seconden kunt opstarten met minimale middelen en moeite.
Verder lezen: