Docker und Docker komponieren

Verfasst in: Englisch / Veröffentlicht: 28.12.2021 / Lesezeit: 6 Minute(n)

Durch die Nutzung von Containern hilft uns Docker, Infrastruktur und Software für Unternehmungen von Projekten jeder Art erforderlich zu liefern.
Die so erstellten isolierten Systeme sind nicht nur einfacher zu konfigurieren und zu erstellen, sondern auch einfacher zu sichern und viel flexibler.
Es gibt Tausende von vorgefertigten Docker-Bildern, die nur darauf warten, von einem einfachen Befehl von Ihnen gestartet werden.
Mein kurzer Artikel verrät, wie man Docker und Docker Compose in einer Debian-basierten Linux-Umgebung installiert, wie wir es auf einem Raspberry Pi oder einem echten Serversystem haben.
Docker Compose hilft uns bei der so genannten Orchestrierung von mehreren Diensten in einfach zu pflegen.yamlTextdateien.

Grundlagen

Wie erwähnt nehmen wir an, dass wir ein Debian-basiertes Betriebssystem haben, wie Ubuntu oder Raspberry Pi OS auf unserer Host-Maschine installiert.
Sicherlich ist Docker auch auf Windows, MacOS oder einem anderen Unix-basierten Betriebssystem gut, aber dort kann die Installation und Konfiguration leicht anders sein.

Im besten Fall haben wir eine neue Installation unseres Systems mit keiner anderen zusätzlichen Software installiert. Das ist keine Grundvoraussetzung, aber hält die Dinge einfacher. Darüber hinaus haben wir Zugang zum Terminal unserer Host-Maschine, höchstwahrscheinlich über Ssh-Sitzung.

Installation von Docker und Docker Compose

Um sicherzustellen, dass wir die neueste Version installieren, folgen wir der offiziellen Installations-Guidline der Docking-Website.

  1. Docker installieren:https://docs.docker.com/engine/install/debian/
  2. Konfiguration für komfortable Nutzung von Docker:https://docs.docker.com/engine/install/linux-postinstall/
  3. Installation von Docker Compose:https://docs.docker.com/compose/install/

Es sieht aus wie viel mehr zu tun, dann gibt es tatsächlich. Es ist eigentlich nicht mehr dann eine Kopier- & Paste-Betrieb in 3-4 Schritten.
Um es sauber zu halten, wird nach der Installation der Komponenten ein Neustart empfohlen.

Einfache Orchestrierung mit Docker Compose

Mit Docker-Composses komponieren beginnt die Erstellung einer einzigen Datei namensdocker-compose.yml.
Es ist am besten, diese Datei nicht nur irgendwo zu platzieren, sondern auf strukturierte Weise, da wir mit vielen von ihnen kommen könnten. Deshalb heißt es Orchestrierung.
Ein Beispiel:

  • Im Verzeichnis/opt/wir erstellen einen Unterordner/opt/docker/.
  • Und dort schaffen wir mehr Unterordner für unsere Projekte oder Subdomains. Lassen Sie uns sagen, wir machen einen Anfang mit/opt/docker/wordpress/.
  • Und in diesem Unterordner stellen wir endlich unsere/opt/docker/wordpress/docker-compose.yml.
  • Wenn wir mit dem Beispiel einer WordPress-Installation festhalten, gibt es ein Beispiel für den Inhalt derdocker-compose.ymlerhältlich beihttps://hub.docker.com/_/wordpress.

Wir erweitern/ändern dieses Beispiel durch einige zusätzliche Parameter für die Permamentnutzung und ein bisschen mehr Komfort im Betrieb. D
Letzendlich könnte es wie das folgende Beispiel aussehen (betrachten, um die Tab-Räume zu halten, da sie in einer .yml-Datei obligatorisch sind):

version: '3.1'
services:
  wordpress-app:
    container_name: wordpress-app
    hostname: wordpress-app
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: wordpress-db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
      TZ: Europe/Berlin
    volumes:
      - ./wordpress:/var/www/html
    logging:
      options:
        max-size: "10m"
        max-file: "3"

  wordpress-db:
    container_name: wordpress-db
    hostname: wordpress-db
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'      
      TZ: Europe/Berlin
    volumes:
      - ./db:/var/lib/mysql
    logging:
      options:
        max-size: "10m"
        max-file: "3"

Eine Beschreibung dessen, was wir hier gemacht haben

  • service, container_name, hostname: nur der Servicename ist obligatorisch, aber wir setzen die anderen 2 Parameter für einfacheren Zugriff und besseren Überblick.
  • image: Behebt die Anwendung, die wir ausführen möchten. Ohne zusätzliche Änderungen können wir ein öffentliches Bild vom Docker Hub nutzenhttps://hub.docker.com/search?q=
  • Neustart: immer bedeutet, wird der Container in jeder Art von eventuellen Fehlern neu gestartet.
  • Umgebung: enthält jede Art von Variablen, die an den Behälter übergeben werden. Kann je nach Art der Anwendung, die wir ausführen, etwas anders sein.
  • Volumen: Unsere hartnäckigen Daten, wir wollen immer zu halten und vielleicht für Backup. Von der Spitzeversion: '3.1' services: wordpress-app: container_name: wordpress-app hostname: wordpress-app image: wordpress restart: always ports: - 8080:80 environment: WORDPRESS_DB_HOST: wordpress-db WORDPRESS_DB_USER: exampleuser WORDPRESS_DB_PASSWORD: examplepass WORDPRESS_DB_NAME: exampledb TZ: Europe/Berlin volumes: - ./wordpress:/var/www/html logging: options: max-size: "10m" max-file: "3" wordpress-db: container_name: wordpress-db hostname: wordpress-db image: mysql:5.7 restart: always environment: MYSQL_DATABASE: exampledb MYSQL_USER: exampleuser MYSQL_PASSWORD: examplepass MYSQL_RANDOM_ROOT_PASSWORD: '1' TZ: Europe/Berlin volumes: - ./db:/var/lib/mysql logging: options: max-size: "10m" max-file: "3" wir sagen, es ist ein Unterordner des aktuellen Verzeichnisses. Wenn dieses Verzeichnis nicht existiert, würde es am ersten Start erstellen. Aber es ist besser, diese Verzeichnisse im Voraus zu erstellen, um Dateisystemberechtigungen Probleme und ähnliche zu vermeiden.
  • Anmeldung: Einige Apps neigen dazu, eine Menge Operationen in das Protokoll zu schreiben. Durch diesen Parameter beschränken wir diese auf 3 Dateien mit jeweils einer Größe von 10MB. Sobald dieser Speicher vollständig verwendet wird, wird der älteste Eintrag überschrieben und so weiter.
  • Ports: erforderlich, falls wir keinen umgekehrten Proxy verwenden. 8080:80 bedeutet, dass der Port 80 der Anwendung availabe an Port 8080 unserer Host-Maschine gemacht wird. Wenn Sie also nach dem Start eine Wordpress-Anwendung öffnen möchten, würden Sie sich öffnen:http://HOST:8080in Ihrem Client-Browser. Übrigens: Für die interne Kommunikation zwischen den Containern müssen keine zusätzlichen Ports geteilt werden. Sie laufen in demselben versteckten Networrk, was die Sicherheit erhöht, indem sie nur die Öffentlichkeit zu machen, was wir haben wollen.

Nützliche Befehle

Alle folgenden Befehle sollten aus dem Verzeichnis unserer./eine Datei wird gespeichert. vondocker-compose.ymlwir starten unsere erste Anwendung. Es wird beide definierten Dienste / Container starten, währenddocker-compose up -dwird alle wieder abschalten. vondocker-compose down wir würden die neueste Version unserer Bilder von Docker Hub herunterladen. Um dieses Update in unserer Umgebung widerspiegeln zu lassen, laufen wir einfach ein anderesdocker-compose pull. Die Daten an den zuvor definierten Bänden werden dadurch nicht einfach überschrieben. Unser Wordpress-Beispiel ist etwas Besonderes darüber, da es sich eigentlich um einen internen Ordner des Containers handelt, der auch aktualisiert wird. Immer noch bleiben Ihre benutzerdefinierten Daten „alive“. Auch deshalb könnten Updates schließlich scheitern, insbesondere wenn es große Änderungen in der Version unserer Dienste gibt. Es gibt verschiedene Möglichkeiten, dies zu handhaben, was ich einen anderen Tag beschreiben werde.

Inhalt
made withandby Niklas Stephan in 2024