So stellen Sie Docker -Bilder mit Dockerfiles an
- 2499
- 79
- Tom Jakobs
Dieser Artikel zeigt, wie Docker -Bilder mithilfe einer Beschreibungsdatei mit dem Namen angepasst werden können Dockerfile.
Sie werden sehen, wie Sie vorhandene Bilder erweitern, diese an Ihre Bedürfnisse anpassen und auch das resultierende Bild an Docker Hub veröffentlichen können.
In diesem Tutorial lernen Sie:
- So passen Sie ein Bild mit einer Dockerfile an.
- So veröffentlichen Sie das resultierende Bild in Docker Hub.
Softwareanforderungen und Konventionen verwendet
Kategorie | Anforderungen, Konventionen oder Softwareversion verwendet |
---|---|
System | Ubuntu 18.04 Bionischer Biber |
Software | Docker |
Andere | Privilegierter Zugriff auf Ihr Linux -System als Root oder über die sudo Befehl. |
Konventionen | # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können |
Einführung
Die vorherigen Artikel präsentierten Docker -Konzepte und einige grundlegende Docker -Befehle. In diesem Artikel sehen Sie, wie Sie ein vorhandenes Docker -Image anpassen und erweitern, die Änderungen in einer Dockerfile beschreiben und das Bild in einer Registrierung veröffentlichen können.
Die Dockerfile
Im vorherigen Artikel haben Sie Änderungen an einem laufenden Container vorgenommen und die Änderungen am lokalen Bildcache festgelegt. Obwohl es sich um eine hilfreiche Ressource für bestimmte Situationen handelt, wird empfohlen, Anpassungen auf dokumentiertere Weise vorgenommen zu werden, damit das Bild an andere Hosts bereitgestellt werden kann. Die empfohlene Möglichkeit besteht darin, eine Dockerfile zu schreiben.
Die DockerFile ist eine YAML.
Beginnen wir mit einer einfachen Dockerfile, die das Paket installiert Requisiten
(Enthält Befehle htop
Und ps
) zu einem Debian -Bild.
Erstellen Sie ein neues Verzeichnis, nehmen Sie sich darauf ein und speichern Sie die folgende Datei mit dem Namen Dockerfile
(Kapital d):
Aus Debian run apt-Get-Update && \ apt-Get -y install Procps
Kopieren In dieser Dockerfile heißt es, dass das Basisbild Debian heißt (AUS
Klausel). Wenn es nicht lokal existiert, wird es aus dem Docker Hub heruntergeladen. Der LAUFEN
Befehl wird ausgeführt apt-get
zweimal. Beachten Sie die Verwendung eines Backslash (\), um eine Linie zu brechen, und die Verwendung von -y
Um die Bestätigungsaufforderung zu überspringen APT-GET-Installation
.
Der nächste Schritt besteht darin, das Bild mit zu erstellen Docker Build
.
$ Docker Build -t Mydebian . Senden von Build -Kontext an Docker Daemon 2.048kB Step 1/2 : FROM debian ---> be2868bebaba Step 2/2 : RUN apt-get update && apt-get -y install procps ---> Running in 52a16b346afc… Removing intermediate container 52a16b346afc ---> f21a05a59966 Successfully built F21A05A59966 erfolgreich mit dem Tag Mydebian: Neueste
Kopieren Die Flagge -T Mydebian
Benennt das neue Bild. Der Punkt (.) fordert Docker an, das aktuelle Verzeichnis zu verwenden, um nach einer Dockerfile zu suchen. Beachten Sie, dass neue Ebenen erstellt und entfernt werden, wenn die Zeilen der Dockerfile interpretiert werden.
Es muss ein neues Bild im lokalen Cache geben.
$ Docker Images Repository Tag Bild -ID Erstellt Größe Mydebian Neueste F21A05A59966 Vor 8 Minuten 119MB Debian neuestes BE2868Bebaba vor 7 Wochen 101MB
Kopieren Ein Behälter aus diesem Bild kann erstellt werden.
$ docer run -it --Name mydebian_container mydebian root@ef9eb174874a:/# ps -f uid pid ppid c Stime tty ty cmd root 1 0 0 02:43 PTS/0 00:00:00 BASH Wurzel 9 1 02:43 PTS/0 00:00:00 PS -f -f
Kopieren Von nun an können Sie Container erstellen, die Debian mit dem ausführen Procps
Paket und die Befehle htop
Und ps
wird bereits installiert sein.
Lassen Sie uns nun eine Dockerfile erstellen, damit Apache und PHP zur Bildaufbauzeit installiert sind, um dieselben Ziele des vorherigen Artikels zu erreichen, wenn die Befehle im Container ausgeführt wurden.
Aus Debian run apt-Get-Update && \ apt-Get -y install Procps libapache2-mod-php cmd Service Apache2 Start
Kopieren Wir haben hinzugefügt libapache2-mod-php
in Zeile 3 und a CMD
Befehl in Zeile 4, um Apache zu starten. Wenn der Behälter begonnen wird, ist der CMD
Befehl wird ausgeführt. Es kann nur einen existieren CMD
Befehl pro Dockerfile. Wenn das CMD
Der Befehl wird angegeben, er ersetzt die CMD
Befehl des Bildes, das Sie ausdehnen. Wenn der CMD
Der Befehl wird weggelassen, das Basisbild wird ausgeführt (falls vorhanden). Wie Sie vielleicht vermutet haben, hat die Dockerfile des Debian -Basisbildes a CMD
Befehl zur Ausführung von Bash. Sie können dies im Docker Hub überprüfen.
$ docker run -d --name mydebian_container2 -d -p 8000:80 -v "$PWD":/var/www/html mydebian ad325685b738464c49bff40b65c6824160105ab5c285282efefbc4ddeec20ba2 roger@slash:~/LinuxConfig/04 Dockerfile$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS Ports Namen AD325685B738 Mydebian "/bin/sh -C 'Service…" Vor 5 Sekunden 0 Anzug 0).0.0.0: 8000-> 80/TCP mydebian_container2
Kopieren Diesmal haben wir den Container mit dem gestartet -D
Schalter, weil wir möchten, dass es vom Terminal abgelöst wird.
Wichtige Dockerfile -Befehle
Die Dockerfile hat andere Befehle darüber hinaus AUS
, LAUFEN
, Und CMD
.
Befehl Env
wird verwendet, um Umgebungsvariablen im Bild festzulegen, wie HTTP-Proxy
, Zum Beispiel. Viele Bilder verwenden Umgebungsvariablen, um Parameter an den neuen Container zu übergeben. Beispiele überprüfen Sie die Bilder von Datenbanken wie MySQL und PostgreSQL in Docker Hub.
Befehl KOPIEREN
Kopiert Dateien und Verzeichnisse vom Host zum Bild zum Bauzeit. Der Quellpfad (erstes Argument) ist relativ zum aktuellen Verzeichnis.
Befehl HINZUFÜGEN
ist ähnlich wie KOPIEREN
, Mit dem Unterschied, dass, wenn die Quelle eine komprimierte Tar -Datei ist, automatisch im Zielverzeichnis im Bild dekomprimiert wird. Mit Ausnahme dieser Verwendung empfiehlt Docker die Verwendung des KOPIEREN
Befehl, wann immer möglich.
Befehl EXPONIEREN
Gibt an, welche Ports des Bildes durch Docker freigelegt werden können. Während der Containererstellung können diese Ports auf Wunsch auf Host -Ports abgebildet werden.
Befehl Workdir
Legt das Verzeichnis fest, das Docker verwendet, wenn Befehle im Container mit ausgeführt werden Docker Exec
.
Erstellen eines Bildes mit aktivierter HTTPS
Jetzt erweitern wir das offizielle Php-Apache-Bild, um SSL mit einem automatisch generierten Zertifikat auf exemplyfy zu aktivieren, wie die genannten Befehle verwendet werden. Erstellen Sie in einem neuen Verzeichnis die folgende Dockerfile.
Von PHP: 7 -APACHE RUN OPENSSL REQ -X509 -NODES -Days 365 -NewKey RSA: 2048 -keeout/etc/ssl/privat/ssl -cert -snakeoiloil.Key -out/etc/ssl/certs/ssl-cert-seltsamoiloil.PEM -SUBJ "/C = Br/ST = Rio Grande do sul/l = porto alegre/o = Sicherheit/ou = Entwicklung/cn = Beispiel.com "Run a2enmod Rewrite Run A2ensit Standard-SSL Run A2enmod SSL Expose 443 Kopie ./html/var/www/html WorkDir/var/www/html
Kopieren In Zeile 3 erstellen wir ein Zertifikat. Zeilen 5 - 7 Aktivieren Sie Mod_rewrite und SSL. Zeile 9 enthält Port 443 (Port 80 wird bereits vom vorgelagerten Bild ausgesetzt). Zeile 11 fügt das Anwendungsverzeichnis dem Container hinzu. Schließlich legt Zeile 13 das Arbeitsverzeichnis als Apache -Arbeitsverzeichnis fest. Alle Befehle von ausgeführt von Docker Exec
Verwendet dieses Verzeichnis standardmäßig die Basis.
Erstellen Sie nun ein Verzeichnis mit dem Namen html
und eine Datei mit dem Namen Phpinfo.Php
mit diesem Inhalt.
Kopieren Lassen Sie uns nun den Behälter bauen und laufen.
Docker Build -t app_image . Docker Run -d - -RM -P 80:80 -P 443: 443 --Name app_container app_image
Kopieren Jetzt können Sie zugreifen Phpinfo.Php
Skript durch beide, http und https.
http: // localhost/phpinfo.PHP https: // localhost/phpinfo.Php
Kopieren HTTPS ist aktiviert. In HTTPS beschwert sich der Browser über die Sicherheit des Zertifikats, da dies selbst signiert ist, aber die Warnung kann ignoriert werden.
Bilder im Docker Hub veröffentlichen
Die erstellten Bilder existieren nur lokal im lokalen Cache von Docker. Möglicherweise möchten Sie sie mit anderen Docker -Hosts oder mit Teamkollegen teilen oder sogar der Welt öffentlich machen. In jedem Fall möchten Sie Ihre Bilder in einer Docker -Registrierung veröffentlichen. Sie können in einer Cloud-basierten Registrierung wie dem Docker-Hub veröffentlicht werden, das übrigens der Standard ist, wenn Sie die Registrierung nicht explizit angeben. Erstellen Sie zunächst eine kostenlose Docker -ID und melden Sie sich dann an:
$ docker login Anmelden mit Ihrer Docker -ID zum Drücken und Ziehen von Bildern von Docker Hub. Wenn Sie keine Docker -ID haben, gehen Sie zu https: // Hub.Docker.com, um einen zu erstellen. Benutzername: Infroger Passwort: Anmeldung erfolgreich
Kopieren Markieren Sie als Nächstes das Bild mit dem Repository -Namen (Infroger), Bildname und Tag (Bildversion).
$ Docker Tag App_image Infroger/App_image: 1 $ Docker Bilder Repository -Tag -Bild -ID Erstellt Größe Infroger/App_image 1 C093151fc68f vor 14 Stunden
Kopieren Drücken Sie dann das Bild in das Repository.
$ Docker Push Infroger/app_image: 1 Der Push bezieht sich auf Repository [Docker.io/infroger/app_image] 27f7f2b01c49: Pushed 81b08cd5fe07: Pushed d1c23d198f84: Pushed e66392ad9b85: Pushed a71f63e3a00f: Pushed 9c58778f21dd: Pushed 973719bed9b7: Pushed 8f5090ef2ac0: Pushed fbdafdbe3319: Pushed a5c4801ecf39: Pushed e9ba112d38b9: Pushed 25ba5230dadf: Pushed f2907ce42b47: Pushed e31bf34cfab9: Pushed 9066d03e98e0: Pushed 96db4ce698ad: Pushed abae6a338e5c: Pushed 4572a80a7a5e: Pushed ef68f6734aa4: Pushed 1: digest: sha256:2e7e53fcdf800ad0c4837cd70014170cc869d36de5c301f2e2ced318803bf963 size: 4279
Kopieren Gehen Sie nun zu Docker Hub und überprüfen Sie, ob das Bild da ist:
https: // Hub.Docker.com/r/infroger/app_image
In Docker Hub mit kostenloser Registrierung können Sie ein privates Repository mit unbegrenzten öffentlichen Repositories haben. Andernfalls möchten Sie möglicherweise Ihre eigene Docker -Registrierung ausführen, die mit einem Befehl erfolgen kann:
Docker Run -d -p 5000: 5000 -RESTART = immer -Name Registrierung Registrierung: 2
Der Vorteil einer privaten Registrierung ist die Privatsphäre. Sie haben jedoch die Belastung, Sicherheit, hohe Verfügbarkeit, Speicheranforderungen, Zugangskontrolle usw. zu verwalten, usw.
Abschluss
In diesem Artikel haben wir behandelt, wie Sie vorhandene Bilder erweitern und diese mit einer Dockerfile an Ihre Anforderungen anpassen können. Wir haben auch gesehen, wie man die Bilder in einem Docker -Register veröffentlichen. Sie können bisher viel tun, aber wir kratzen nur an der Docker -Welt. Im nächsten Artikel werden wir eine sehr einfache Form der lokalen Containerorchestrierung mit Docker Compose sehen.
Mehr in dieser Docker -Artikelserie
- Praktische Einführung in Docker -Container
- So interagieren Sie mit Docker -Containern
Verwandte Linux -Tutorials:
- Dinge zu installieren auf Ubuntu 20.04
- Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
- Eine Einführung in Linux -Automatisierung, Tools und Techniken
- Dinge zu tun nach der Installation Ubuntu 22.04 Jammy Quallen…
- Linux -Konfigurationsdateien: Top 30 am wichtigsten
- Dinge zu installieren auf Ubuntu 22.04
- Mint 20: Besser als Ubuntu und Microsoft Windows?
- So montieren Sie das ISO -Bild unter Linux
- Wie man Kali Linux und Windows 10 Dual -Boot -Start hat
- Ubuntu 20.04 Leitfaden
- « So installieren Sie VNC Server auf RHEL 8 / CentOS 8
- So installieren Sie Apache Tomcat unter Linux rhel 8 / Centos 8 »