GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Automatisches Erstellen und Konfigurieren benutzerdefinierter Docker-Images mit Dockerfile – Teil 3

Dieses Tutorial konzentriert sich darauf, wie man ein benutzerdefiniertes Docker-Image basierend auf Ubuntu erstellt mit Apache Dienst installiert. Der gesamte Prozess wird mithilfe eines Dockerfiles automatisiert .

Docker-Images können automatisch aus Textdateien namens Dockerfiles erstellt werden . Eine Docker-Datei enthält schrittweise geordnete Anweisungen oder Befehle zum Erstellen und Konfigurieren eines Docker-Images.

Anforderungen

  • Installieren Sie Docker und erfahren Sie, wie Docker-Container manipuliert werden – Teil 1
  • Bereitstellen und Ausführen von Anwendungen unter Docker-Containern – Teil 2

Grundsätzlich enthält eine Docker-Datei verschiedene Anweisungen, um einen bestimmten Container basierend auf Ihren Anforderungen zu erstellen und zu konfigurieren. Die folgenden Anweisungen werden am häufigsten verwendet, einige davon sind obligatorisch:

  1. FROM =Obligatorisch als erste Anweisung in einer Docker-Datei. Weist Docker an, das Basisimage abzurufen, aus dem Sie das neue Image erstellen. Verwenden Sie ein Tag, um das genaue Bild anzugeben, aus dem Sie erstellen:
Ex: FROM ubuntu:20.04
  1. MAINTAINER =Autor des Build-Images
  2. RUN =Diese Anweisung kann in mehreren Zeilen verwendet werden und führt beliebige Befehle aus, nachdem ein Docker-Image erstellt wurde.
  3. CMD =Führen Sie einen beliebigen Befehl aus, wenn das Docker-Image gestartet wird. Verwenden Sie nur eine CMD-Anweisung in einer Dockerfile.
  4. ENTRYPOINT =Dasselbe wie CMD, aber als Hauptbefehl für das Bild verwendet.
  5. EXPOSE =Weist den Container an, bei der Ausführung auf Netzwerkports zu lauschen. Die Container-Ports sind standardmäßig nicht vom Host aus erreichbar.
  6. ENV =Container-Umgebungsvariablen setzen.
  7. ADD =Ressourcen kopieren (Dateien, Verzeichnisse oder Dateien von URLs).

Schritt 1:Dockerfile-Repository erstellen oder schreiben

1. Lassen Sie uns zunächst eine Art Dockerfile erstellen Repositories, um Dateien in Zukunft wiederzuverwenden, um andere Bilder zu erstellen. Erstellen Sie irgendwo in /var ein leeres Verzeichnis Partition, in der wir die Datei mit den Anweisungen erstellen, die zum Erstellen des neuen Docker-Images verwendet werden.

# mkdir -p /var/docker/ubuntu/apache
# touch /var/docker/ubuntu/apache/Dockerfile

2. Beginnen Sie als Nächstes mit der Bearbeitung der Datei mit den folgenden Anweisungen:

# vi /var/docker/ubuntu/apache/Dockerfile

Dokerfile-Auszug:

FROM ubuntu
MAINTAINER  your_name  <[email protected]>
RUN apt-get -y install apache2
RUN echo “Hello Apache server on Ubuntu Docker” > /var/www/html/index.html
EXPOSE 80
CMD /usr/sbin/apache2ctl -D FOREGROUND

Gehen wir nun die Dateianweisungen durch:

Die erste Zeile sagt uns, dass wir von einem Ubuntu bauen Bild. Wenn kein Tag übermittelt wird, sagen Sie 14:10 zum Beispiel das neueste Image von Docker Hub verwendet wird.

In der zweiten Zeile haben wir den Namen hinzugefügt und E-Mail des Bildschöpfers. Die nächsten beiden LAUFEN Zeilen werden beim Erstellen des Images im Container ausgeführt und Apache installiert Daemon und Echo etwas Text in die Standard-Apache-Webseite.

Die EXPOSE line weist den Docker an Container, um auf Port 80 zu lauschen , aber der Port ist nach außen nicht verfügbar. Die letzte Zeile weist den Container an, den Apache-Dienst im Vordergrund auszuführen, nachdem der Container gestartet wurde.

3. Als letztes müssen wir mit der Erstellung des Images beginnen, indem Sie den folgenden Befehl ausführen, der lokal ein neues Docker-Image mit dem Namen ubuntu-apache erstellt basierend auf dem zuvor erstellten Dockerfile, wie in diesem Beispiel gezeigt:

# docker build -t ubuntu-apache /var/docker/ubuntu/apache/

4. Nachdem das Image von Docker erstellt wurde , können Sie alle verfügbaren Bilder auflisten und Ihr Bild identifizieren, indem Sie den folgenden Befehl ausführen:

# docker images

Schritt 2:Führen Sie den Container aus und greifen Sie über das LAN auf Apache zu

5. Um den Container kontinuierlich (im Hintergrund) auszuführen und vom Host oder einem anderen Remote-Computer in Ihrem LAN auf die Container-exponierten Dienste (Ports) zuzugreifen, führen Sie den folgenden Befehl an der Eingabeaufforderung Ihres Host-Terminals aus:

# docker run -d -p 81:80 ubuntu-apache

Hier das -d Option führt den ubuntu-apache aus Container im Hintergrund (als Daemon) und das -p Option ordnet den Containerport 80 zu zu Ihrem Localhost-Port 81 . Der Zugriff von außerhalb des LAN auf den Apache-Dienst ist über Port 81 möglich nur.

Der Netstat-Befehl gibt Ihnen eine Vorstellung davon, auf welchen Ports der Host lauscht.

Nachdem der Container gestartet wurde, können Sie auch docker ps ausführen Befehl, um den Status des laufenden Containers anzuzeigen.

6. Die Webseite kann auf Ihrem Host von der Kommandozeile aus mit curl angezeigt werden Dienstprogramm gegen die IP-Adresse Ihres Computers, Localhost oder Docker-Net-Schnittstelle auf Port 81. Verwenden Sie die IP-Befehlszeile, um die IP-Adressen der Netzwerkschnittstelle anzuzeigen.

# ip addr               [List nework interfaces]
# curl ip-address:81    [System Docker IP Address]
# curl localhost:81     [Localhost]

7. Um die Container-Webseite von Ihrem Netzwerk aus zu besuchen, öffnen Sie einen Browser an einem entfernten Standort und verwenden Sie das HTTP-Protokoll, die IP-Adresse des Computers, auf dem der Container ausgeführt wird, gefolgt von Port 81, wie in der Abbildung unten dargestellt.

http://ip-address:81

8. Um zu erfahren, welche Prozesse im Container ausgeführt werden, geben Sie den folgenden Befehl ein:

# docker ps
# docker top <name or ID of the container>

9. Um den Container zu stoppen, geben Sie docker stop ein Befehl gefolgt von der Container-ID oder dem Namen.

# docker stop <name or ID of the container>
# docker ps

10. Falls Sie dem Container einen aussagekräftigen Namen zuweisen möchten, verwenden Sie den --name Option wie im folgenden Beispiel gezeigt:

# docker run --name my-www -d -p 81:80 ubuntu-apache
# docker ps

Jetzt können Sie den Container zur Bearbeitung (Start, Stopp, Top, Statistik usw.) nur unter Verwendung des zugewiesenen Namens referenzieren.

# docker stats my-www

Schritt 3:Erstellen Sie eine systemweite Konfigurationsdatei für den Docker-Container

11. Auf CentOS/RHEL Sie können ein systemd erstellen Konfigurationsdatei und verwalten Sie den Container, wie Sie es normalerweise für jeden anderen lokalen Dienst tun.

Erstellen Sie beispielsweise eine neue systemd-Datei mit dem Namen apache-docker.service mit dem folgenden Befehl:

# vi /etc/systemd/system/apache-docker.service

apache-docker.service Dateiauszug:

[Unit]
Description=apache container
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a my-www
ExecStop=/usr/bin/docker stop -t 2 my-www

[Install]
WantedBy=local.target

12. Nachdem Sie die Bearbeitung der Datei abgeschlossen haben, schließen Sie sie, laden Sie den systemd-Daemon neu, um die Änderungen widerzuspiegeln, und starten Sie den Container, indem Sie die folgenden Befehle ausführen:

# systemctl daemon-reload
# systemctl start apache-docker.service
# systemctl status apache-docker.service

Dies war nur ein einfaches Beispiel dafür, was Sie mit einem einfachen Dockerfile machen können Sie können jedoch einige ziemlich ausgefeilte Anwendungen vorab erstellen, die Sie in nur wenigen Sekunden mit minimalen Ressourcen und minimalem Aufwand starten können.

Weiterführende Literatur:

Teil 4 :So überwachen Sie Docker-Container unter Linux
Docker
  1. So verwenden Sie Docker-Images, Container und Dockerfiles im Detail

  2. So verwenden Sie ein Dockerfile zum Erstellen eines Docker-Images

  3. So teilen Sie Docker-Images mit anderen

  4. So ändern Sie Docker-Images

  5. So erstellen Sie ein Docker-Image aus einem Container und einer Docker-Datei

So bereinigen und löschen Sie Docker-Images

So pushen und ziehen Sie Docker-Images mit der Container Registry von DigitalOcean

So erstellen Sie Docker-Images in einer GitLab-CI-Pipeline

So erstellen Sie ein Docker-Windows-Image mit Docker-Build-Tag

So erstellen Sie ein benutzerdefiniertes Docker-Image mit Dockerfile

So erstellen Sie ein Docker-Image und übertragen es in das Docker-Hub-Repository