Wie Sie Ihre erste Anwendung in Docker einbinden
Docker hat die Art und Weise revolutioniert, wie Entwickler Anwendungen erstellen, bereitstellen und verwalten. Durch die Containerisierung von Anwendungen ermöglicht es Konsistenz über verschiedene Umgebungen hinweg, was die Bereitstellung einfacher und weniger fehleranfällig macht. In diesem Artikel werden wir uns eingehend mit dem Prozess des "Dockerisierens" Ihrer ersten Anwendung befassen und sowohl grundlegende Konzepte als auch fortgeschrittene Techniken abdecken. Am Ende sollten Sie ein umfassendes Verständnis dafür haben, wie Sie Docker nutzen können, um Ihren Entwicklungszyklus zu vereinfachen.
Grundlagen von Docker verstehen
Bevor wir in die praktischen Aspekte der Dockerisierung einer Anwendung einsteigen, ist es entscheidend, einige grundlegende Konzepte zu verstehen.
Was ist Docker?
Docker is an open-source platform that automates the deployment of applications inside lightweight, portable containers. It encapsulates everything an application needs to run (code, runtime, libraries, and system tools) into a single package, which ensures that it runs consistently across various environments.
Container sind eine Form der Virtualisierung auf Betriebssystemebene, die es ermöglicht, Anwendungen und ihre Abhängigkeiten in einer isolierten Umgebung zu verpacken und auszuführen. Im Gegensatz zu herkömmlichen virtuellen Maschinen, die ein komplettes Betriebssystem emulieren, teilen sich Container den Kernel des Host-Betriebssystems und nutzen Ressourcen effizienter.Ein Container enthält alles, was eine Anwendung zum Laufen benötigt, einschließlich Code, Laufzeit, Systemtools, Bibliotheken und Einstellungen. Dies gewährleistet, dass die Anwendung in verschiedenen Umgebungen konsistent funktioniert, von der Entwicklung bis zur Produktion.Container werden oft mit Docker assoziiert, einer der bekanntesten Plattformen für die Containerisierung. Docker ermöglicht es Entwicklern, Anwendungen in Containern zu verpacken und diese einfach zu verteilen und auszuführen. Andere Container-Plattformen wie Kubernetes bieten zusätzliche Funktionen für die Orchestrierung und Verwaltung von Containern in komplexen Umgebungen.Die Vorteile von Containern umfassen:1. **Portabilität**: Container können auf jeder Plattform ausgeführt werden, die den Container-Laufzeit unterstützt, was die Bereitstellung und Skalierung von Anwendungen vereinfacht.2. **Isolation**: Jeder Container läuft in seiner eigenen Umgebung, was Konflikte zwischen Anwendungen minimiert und die Sicherheit erhöht.3. **Effizienz**: Da Container den Kernel des Host-Betriebssystems teilen, benötigen sie weniger Ressourcen als virtuelle Maschinen und starten schneller.4. **Skalierbarkeit**: Container können leicht skaliert werden, um den Anforderungen der Anwendung gerecht zu werden, was besonders in Cloud-Umgebungen von Vorteil ist.5. **DevOps-Integration**: Container unterstützen die Prinzipien von DevOps, indem sie die Entwicklung, das Testen und die Bereitstellung von Anwendungen beschleunigen und standardisieren.Zusammenfassend sind Container eine leistungsstarke Technologie, die die Art und Weise, wie Anwendungen entwickelt, bereitgestellt und verwaltet werden, revolutioniert hat. Sie bieten eine flexible, effiziente und skalierbare Lösung für moderne Software-Entwicklung und -Bereitstellung.
Containers are lightweight, standalone, executable packages that include everything needed to run a piece of software. They are isolated from one another and share the underlying OS kernel, making them more efficient than traditional virtual machines (VMs).
Images vs. Container
- Bilder: These are the blueprints of containers, composed of a series of layers stacked on top of each other. Each layer represents a change, such as installing software or copying files.
- ContainersEine laufende Instanz eines Images. Wenn du ein Image startest, erstellst du einen Container.
Voraussetzungen
Before we begin the Dockerization process, ensure you have the following prerequisites:
- Docker InstalliertStellen Sie sicher, dass Docker auf Ihrem System installiert ist. Sie können es von hier herunterladen. the official Docker website.
- Grundkenntnisse der KommandozeileSie werden die Kommandozeile verwenden, um mit Docker zu interagieren.
- Programmiersprache: While Docker can be used with any programming language, this article will use a simple Node.js application as an example.
Step 1: Creating Your Application
To make this tutorial practical, let’s start by creating a simple Node.js application.
Einrichten eines Node.js-Projekts
Projektverzeichnis erstellen:
mkdir my-docker-app cd my-docker-appInitialisiere:
npm init -yInstall Express:
npm install expressErstellen einer Anwendungsdatei:
Erstelle eine Datei namens
app.jsim Projektverzeichnis und fügen Sie den folgenden Code hinzu:const express = require('express'); const app = express(); const PORT = process.env.PORT || 3000; app.get('/', (req, res) => { res.send('Hallo, Docker!'); }); app.listen(PORT, () => { console.log(`Server läuft auf Port ${PORT}`); });
Testing the Application Locally
Führen Sie die Anwendung lokal aus, um sicherzustellen, dass sie funktioniert, bevor Sie sie in Dockerisieren:
node app.jsSie sollten die Meldung sehen, die anzeigt, dass der Server läuft. Öffnen Sie einen Webbrowser und navigieren Sie zu http://localhost:3000 to confirm you see "Hello, Docker!".
Schritt 2: Erstellen einer Dockerfile
Eine Dockerfile ist eine Textdatei, die alle Befehle zur Erstellung eines Images enthält.
Create a Dockerfile
Im Wurzelverzeichnis Ihres Projekts erstellen Sie eine Datei mit dem Namen Dockerfile (with no extension) and add the following content:
# Verwenden Sie das offizielle Node.js-Image aus dem Docker Hub
FROM node:14
# Setzen Sie das Arbeitsverzeichnis im Container
WORKDIR /usr/src/app
# Kopieren Sie package.json und package-lock.json
COPY package*.json ./
# Installieren Sie die Abhängigkeiten
RUN npm install
# Kopieren Sie den Anwendungscode
COPY . .
# Machen Sie den Anwendungsport zugänglich
EXPOSE 3000
# Definieren Sie den Befehl zum Ausführen der Anwendung
CMD ["node", "app.js"]Explanation of Dockerfile Instructions
- von node:14Definiert das Basis-Image, das wir verwenden. In diesem Fall ist es das offizielle Node.js-Image.
- WORKDIR /usr/src/app: Sets the working directory inside the container.
- *COPY-Paket.json ./**: Kopiert die Dateien package.json und package-lock.json in das Arbeitsverzeichnis.
- FÜHREN SIE npm install aus: Installs the application dependencies specified in package.json.
- COPY . .Kopiert den Rest des Anwendungscodes in den Container.
- EXPOSE 3000: Informiert Docker, dass der Container zur Laufzeit an Port 3000 lauscht.
- CMDGibt den beim Start des Containers auszuführenden Befehl an.
Step 3: Building the Docker Image
Now that we have the Dockerfile set up, we can build the Docker image.
Erstellen Sie das Image
Run the following command from the root of your project directory:
docker build -t my-docker-app .Understanding the Build Process
Während des Build-Prozesses liest Docker die Dockerfile-Anweisungen und führt sie Schritt für Schritt aus. -t Flag taggt das Bild mit einem Namen (in diesem Fall, my-docker-app), und die . zeigt den Build-Kontext (das aktuelle Verzeichnis).
Once the build is complete, you can verify that your image exists by running:
docker imagesSchritt 4: Starten des Docker-Containers
With the image built, the next step is to run a container from this image.
Container starten
Execute the following command to run your application:
docker run -p 3000:3000 my-docker-appErklärung des Run-BefehlsDer Run-Befehl ist ein leistungsstarkes Tool in Windows-Betriebssystemen, das es Benutzern ermöglicht, Programme, Dateien, Ordner und sogar Internetressourcen schnell zu öffnen, ohne durch das Startmenü oder den Datei-Explorer navigieren zu müssen. Durch Drücken der Windows-Taste + R oder durch Klicken auf "Ausführen" im Startmenü wird das Dialogfeld "Ausführen" geöffnet, in das Benutzer verschiedene Befehle eingeben können.Hier sind einige gängige Verwendungen des Run-Befehls:1. Programme starten: - calc: Öffnet den Taschenrechner - notepad: Startet den Editor - mspaint: Öffnet Paint - cmd: Startet die Eingabeaufforderung2. Systemtools öffnen: - msconfig: Systemkonfiguration - devmgmt.msc: Geräte-Manager - compmgmt.msc: Computerverwaltung - services.msc: Dienste3. Systemeinstellungen aufrufen: - control: Systemsteuerung - control printers: Drucker - control userpasswords2: Benutzerkonten4. Dateien und Ordner öffnen: - Geben Sie den vollständigen Pfad zur Datei oder zum Ordner ein, z. B. C:\Benutzer\IhrName\Dokumente5. Internetressourcen aufrufen: - Geben Sie eine URL ein, z. B. www.google.com, um den Standardbrowser zu öffnen6. Systembefehle ausführen: - shutdown: Herunterfahren des Computers - logoff: Abmelden des aktuellen Benutzers - restart: Neustart des Computers7. Netzwerkverbindungen verwalten: - ncpa.cpl: Netzwerkverbindungen - ipconfig: Netzwerkeinstellungen anzeigen8. Systeminformationen anzeigen: - dxdiag: DirectX-Diagnose - msinfo32: Systeminformationen9. Datenträgerbereinigung und Defragmentierung: - cleanmgr: Datenträgerbereinigung - dfrgui: Datenträgerdefragmentierung10. Barrierefreiheitseinstellungen: - osk: Bildschirmtastatur - magnify: Lupe - narrator: SprachausgabeDer Run-Befehl ist ein vielseitiges Tool, das die Produktivität steigern kann, indem es schnellen Zugriff auf verschiedene Funktionen und Programme ermöglicht. Es ist wichtig zu beachten, dass einige Befehle Administratorrechte erfordern können.
- -p 3000:3000: Maps port 3000 of the host to port 3000 of the container. This allows you to access the application via
http://localhost:3000. - my-docker-app: The name of the image to run.
Accessing the Application
Navigiere zu http://localhost:3000 in Ihrem Webbrowser. Sie sollten die Meldung "Hello, Docker!" sehen, was bestätigt, dass Ihre Anwendung erfolgreich in einem Docker-Container läuft.
Step 5: Managing Your Containers
Auflisten laufender Container
To see all currently running containers, use:
docker psBeenden und Entfernen von Containern
To stop a running container, you can use:
docker stop To remove a container, use:
Docker-Container entfernen Bilder entfernen
Sie können auch Bilder entfernen, wenn sie nicht mehr benötigt werden:
docker rmi my-docker-appSchritt 6: Verwendung von Docker ComposeIn diesem Schritt werden wir Docker Compose verwenden, um mehrere Container zu verwalten und zu orchestrieren. Docker Compose ist ein Tool, das es ermöglicht, mehrere Docker-Container als Einheit zu definieren und zu verwalten.Zunächst müssen Sie sicherstellen, dass Docker Compose auf Ihrem System installiert ist. Sie können dies überprüfen, indem Sie den folgenden Befehl in Ihrem Terminal ausführen:``` docker-compose --version ```Wenn Docker Compose nicht installiert ist, können Sie es gemäß der offiziellen Docker-Dokumentation installieren.Sobald Docker Compose installiert ist, können Sie eine Docker Compose-Datei erstellen. Diese Datei wird als `docker-compose.yml` bezeichnet und enthält die Konfiguration für Ihre Container.Hier ist ein Beispiel für eine einfache Docker Compose-Datei:```yaml version: '3' services: web: image: nginx:latest ports: - "80:80" db: image: postgres:latest environment: POSTGRES_PASSWORD: example ```In diesem Beispiel definieren wir zwei Dienste: `web` und `db`. Der `web`-Dienst verwendet das neueste Nginx-Image und macht Port 80 verfügbar. Der `db`-Dienst verwendet das neueste PostgreSQL-Image und setzt ein Passwort für die Datenbank.Um die Container mit Docker Compose zu starten, navigieren Sie zu dem Verzeichnis, in dem sich Ihre `docker-compose.yml` befindet, und führen Sie den folgenden Befehl aus:``` docker-compose up ```Dieser Befehl startet alle in der `docker-compose.yml` definierten Container. Wenn Sie die Container im Hintergrund starten möchten, können Sie den `-d`-Flag hinzufügen:``` docker-compose up -d ```Um die Container zu stoppen, können Sie den folgenden Befehl verwenden:``` docker-compose down ```Docker Compose bietet auch viele weitere Funktionen, wie z.B. das Skalieren von Diensten, das Anzeigen von Logs und das Ausführen von Befehlen in Containern. Sie können die vollständige Dokumentation auf der offiziellen Docker-Website finden.Ich hoffe, dieser Schritt hilft Ihnen dabei, Docker Compose effektiv zu nutzen. Wenn Sie Fragen haben oder weitere Hilfe benötigen, lassen Sie es mich bitte wissen.
Für komplexere Anwendungen mit mehreren Diensten (wie einem Webserver, einer Datenbank usw.) kann Docker Compose die Verwaltung vereinfachen.
Installing Docker Compose
Docker Compose gehört zu den Docker Desktop-Installationen. Wenn Sie Linux verwenden, folgen Sie den official installation guide.
Erstellen Sie eine docker-compose.yml File
In Ihrem Projektverzeichnis erstellen Sie eine Datei mit dem Namen docker-compose.yml with the following content:
version: '3'
services:
web:
build: .
ports:
- "3000:3000"Ausführen mit Docker Compose
Sie können die Anwendung und ihre Dienste mit folgendem Befehl starten:
docker-compose upThis command will build the image (if it hasn’t been built yet) and start the container defined in the docker-compose.yml.
Um die Dienste zu stoppen, drücken Sie Strg+C or run:
docker-compose herunterfahrenStep 7: Best Practices for Dockerizing Applications
Nachdem Sie Ihre erste Anwendung erfolgreich in Docker verpackt haben, sind hier einige bewährte Praktiken, die Sie beachten sollten:
Dockerfiles sauber halten
- Use multi-stage builds to reduce image size by separating development and production dependencies.
- Avoid unnecessary layers by combining commands where possible.
Use .dockerignore
Erstellen Sie eine .dockerignore Datei in Ihrem Projektverzeichnis, um Dateien und Verzeichnisse auszuschließen, die nicht in das Image aufgenommen werden sollten (wie node_modules, logs, etc.). Here’s an example:
node_modules
npm-debug.logRegularly Update Images
Stellen Sie sicher, dass Sie Ihre Basisimages regelmäßig aktualisieren, um von Sicherheitspatches und Leistungsverbesserungen zu profitieren.
Fazit
Das Dockerisieren Ihrer ersten Anwendung kann zunächst überwältigend erscheinen, aber wenn Sie die in diesem Artikel beschriebenen Schritte befolgen, können Sie Ihre Anwendungen erfolgreich in Container verpacken. Dies rationalisiert nicht nur den Entwicklungsprozess, sondern verbessert auch die Konsistenz der Bereitstellung in verschiedenen Umgebungen.
Wenn Sie sich mit Docker wohler fühlen, erkunden Sie fortgeschrittene Funktionen wie Orchestrierung mit Kubernetes, Netzwerke und persistenten Speicher. Das Docker-Ökosystem ist groß und entwickelt sich ständig weiter, bietet zahlreiche Tools und Praktiken, um die Containerisierung weiter zu optimieren. Mit Docker in Ihrem Toolkit können Sie Anwendungen erstellen, die portabel, skalierbar und wartbar sind.
Now that you have a foundational understanding of Docker, it’s time to experiment, build more complex applications, and delve deeper into the world of containerization! Happy Dockering!
